From 0eb0f8a65adcdcc8a924577968de9172738c35bf Mon Sep 17 00:00:00 2001 From: chenlelin Date: Fri, 29 Jan 2021 17:19:32 +0800 Subject: [PATCH] Fix bug show abnormal connected WiFi after sleep and wake-up --- src/ksimplenm.cpp | 1 + src/ksimplenm.h | 1 + src/mainwindow.cpp | 28 ++++++++++++++++++++++++++-- src/mainwindow.h | 3 +++ 4 files changed, 31 insertions(+), 2 deletions(-) diff --git a/src/ksimplenm.cpp b/src/ksimplenm.cpp index c5964c47..0705b46e 100644 --- a/src/ksimplenm.cpp +++ b/src/ksimplenm.cpp @@ -78,6 +78,7 @@ void KSimpleNM::execGetWifiList() isUseOldWifiSlist = true; QStringList slistmEmpty; slistmEmpty.append("Empty"); + //emit requestRevalueUpdateWifi(); emit getWifiListFinished(slistmEmpty); return; } diff --git a/src/ksimplenm.h b/src/ksimplenm.h index 2fb0346d..c6ee6425 100644 --- a/src/ksimplenm.h +++ b/src/ksimplenm.h @@ -52,6 +52,7 @@ signals: void getLanListFinished(QStringList slist); void getWifiListFinished(QStringList slist); void getConnListFinished(QStringList slist); + void requestRevalueUpdateWifi(); public slots: void readProcessLan(); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 524116f8..f989e42a 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -92,6 +92,7 @@ MainWindow::MainWindow(QWidget *parent) : connect(ksnm, SIGNAL(getLanListFinished(QStringList)), this, SLOT(getLanListDone(QStringList))); connect(ksnm, SIGNAL(getWifiListFinished(QStringList)), this, SLOT(getWifiListDone(QStringList))); connect(ksnm, SIGNAL(getConnListFinished(QStringList)), this, SLOT(getConnListDone(QStringList))); + connect(ksnm, SIGNAL(requestRevalueUpdateWifi()), this, SLOT(onRequestRevalueUpdateWifi())); loading = new LoadingDiv(this); loading->move(40,0); @@ -651,8 +652,10 @@ void MainWindow::iconActivated(QSystemTrayIcon::ActivationReason reason) IFace *loop_iface = loop_bt->execGetIface(); if (loop_iface->wstate != 2) { - is_update_wifi_list = 1; - this->ksnm->execGetWifiList(); //更新wifi列表 + //is_update_wifi_list = 1; + //checkIfConnectedWifiExist(); + //this->ksnm->execGetWifiList(); //更新wifi列表 + this->on_btnWifiList_clicked(); //加载wifi列表 } delete loop_iface; @@ -1245,6 +1248,8 @@ void MainWindow::onBtnNetListClicked(int flag) void MainWindow::on_btnWifiList_clicked() { + is_stop_check_net_state = 1; + is_update_wifi_list = 0; this->is_btnWifiList_clicked = 1; this->is_btnLanList_clicked = 0; if (this->is_btnLanList_clicked == 1) { @@ -1291,6 +1296,7 @@ void MainWindow::on_btnWifiList_clicked() btnWireless->setSwitchStatus(true); lbTopWifiList->show(); btnAddNet->show(); + is_stop_check_net_state = 0; } else { qDebug()<<"debug: WiFi的开关已经关闭"; btnWireless->setSwitchStatus(false); @@ -1568,6 +1574,13 @@ void MainWindow::getLanListDone(QStringList slist) is_stop_check_net_state = 0; } +// 获取wifi列表回调 +void MainWindow::onRequestRevalueUpdateWifi() +{ + is_stop_check_net_state = 1; + is_update_wifi_list = 0; +} + // 获取wifi列表回调 void MainWindow::getWifiListDone(QStringList slist) { @@ -2103,6 +2116,17 @@ QString MainWindow::getMacByUuid(QString uuidName) return resultMac; } +void MainWindow::checkIfConnectedWifiExist() +{ + //在点击托盘图标时,判读有无wifi的连接,若wstate不为0,但是有wifi连接,就断开 + BackThread *bt = new BackThread(); + IFace *iface = bt->execGetIface(); + if (iface->wstate != 0) { + QString toDisConnWifi = "nmcli connection down '" + actWifiUuid + "'"; + system(toDisConnWifi.toUtf8().data()); + } +} + /////////////////////////////////////////////////////////////////////////////// //主窗口其他按钮点击响应 diff --git a/src/mainwindow.h b/src/mainwindow.h index 9adbc1d7..0e838668 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -199,6 +199,8 @@ public slots: void on_showWindowAction(); + void checkIfConnectedWifiExist(); + protected: bool eventFilter(QObject *obj, QEvent *event); void paintEvent(QPaintEvent *event); @@ -306,6 +308,7 @@ private slots: void onBtnNetListClicked(int flag=0); void onNewConnAdded(int type); + void onRequestRevalueUpdateWifi(); void getLanListDone(QStringList slist); void getWifiListDone(QStringList slist); void getConnListDone(QStringList slist);