From 15d2f30f661e37d8d354e4b7f04d3c86e6eef644 Mon Sep 17 00:00:00 2001 From: chenlelin Date: Wed, 7 Apr 2021 20:22:52 +0800 Subject: [PATCH] Fix bug wifi need connect twice wihthout compare bssid --- src/mainwindow.cpp | 5 +++++ src/mainwindow.h | 1 + src/oneconnform.cpp | 27 +++++++++++++++++++++------ src/oneconnform.h | 1 + 4 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index ab1208ea..c3294368 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3630,6 +3630,11 @@ void MainWindow::connWifiDone(int connFlag) is_stop_check_net_state = 0; } +void MainWindow::onRequestRefreshWifiList() +{ + this->ksnm->execGetWifiList(this->wcardname); +} + //重新绘制背景色 void MainWindow::paintEvent(QPaintEvent *event) { diff --git a/src/mainwindow.h b/src/mainwindow.h index 836f7551..a91d7e00 100644 --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -225,6 +225,7 @@ public slots: void on_wifi_changed(); void connWifiDone(int connFlag); + void onRequestRefreshWifiList(); //flag =0或1为普通点击、2为收到打开信息、3为收到关闭信息、4为无线网卡插入、5为无线网卡拔出 void onBtnWifiClicked(int flag = 0); diff --git a/src/oneconnform.cpp b/src/oneconnform.cpp index 2e8c198f..9b7bb9e0 100644 --- a/src/oneconnform.cpp +++ b/src/oneconnform.cpp @@ -189,6 +189,8 @@ OneConnForm::OneConnForm(QWidget *parent, MainWindow *mainWindow, ConfForm *conf lbNameLyt->addWidget(lbFreq); lbNameLyt->addStretch(); ui->lbName->setLayout(lbNameLyt); + + connect(this, SIGNAL(requestRefreshWifiList()), mw, SLOT(onRequestRefreshWifiList())); } OneConnForm::~OneConnForm() @@ -908,13 +910,26 @@ void OneConnForm::slotConnWifiResult(int connFlag) if (connFlag == 0) { if (mw->isHuaWeiPC) { - //network-manager可能回连接到其他bssid对应的网络,改成我们想要连接的那个网络 - QFuture < void > future1 = QtConcurrent::run([=]() { + //network-manager可能会连接到其他bssid对应的网络,改成我们想要连接的那个网络 + QtConcurrent::run([=]() { + QString currConnWifiBssid; + KylinDBus myKylinDbus; + QStringList wifiListInfo; + QList wifiSsidAndUuid = myKylinDbus.getAtiveWifiBSsidUuid(wifiListInfo); + if (wifiSsidAndUuid.size() > 1 && wifiSsidAndUuid.at(1).length() == 17) { + qDebug() << "想要连接的wifi的bssid是 " << wifiSsidAndUuid.at(1); + currConnWifiBssid = wifiSsidAndUuid.at(1); + } + qDebug() << "实际连接的wifi的bssid是 " << wifiBSsid; - QString modityCmd = "nmcli connection modify \""+ wifiName + "\" " + "802-11-wireless.bssid " + wifiBSsid; - system(modityCmd.toUtf8().data()); - QString reconnectWifiCmd = "nmcli connection up \"" + wifiName + "\""; - system(reconnectWifiCmd.toUtf8().data()); + if (currConnWifiBssid != wifiBSsid && !currConnWifiBssid.isEmpty()) { + QString modityCmd = "nmcli connection modify \""+ wifiName + "\" " + "802-11-wireless.bssid " + wifiBSsid; + system(modityCmd.toUtf8().data()); + QString reconnectWifiCmd = "nmcli connection up \"" + wifiName + "\""; + system(reconnectWifiCmd.toUtf8().data()); + } else { + emit requestRefreshWifiList(); + } }); } diff --git a/src/oneconnform.h b/src/oneconnform.h index 69797ddd..ab8b1577 100644 --- a/src/oneconnform.h +++ b/src/oneconnform.h @@ -150,6 +150,7 @@ signals: void selectedOneWifiForm(QString wifiName, int extendLength); void connDone(int connFlag); void disconnActiveWifi(); + void requestRefreshWifiList(); void sigConnWifi(QString); void sigConnWifiPWD(QString, QString, QString);