Merge pull request #149 from mammonsama666/0528-dev

fix(wifi): Top item is empty when connected ap disappeared,
This commit is contained in:
chenlelin 2021-05-28 14:56:23 +08:00 committed by GitHub
commit 27761fb383
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 37 additions and 37 deletions

View File

@ -2388,42 +2388,6 @@ void MainWindow::loadWifiListDone(QStringList slist)
index ++;
}
// 根据当前连接的wifi 设置OneConnForm
OneConnForm *ccf = new OneConnForm(topWifiListWidget, this, confForm, ksnm);
if (actWifiName == "--" || wifiActState == 1 || actWifiBssidList.at(0) == "--") {
ccf->setWifiName(tr("Not connected"), "--", "--", "--", isHuaWeiPC);//"当前未连接任何 Wifi"
ccf->setSignal("0", "--" , "0");
activeWifiSignalLv = 0;
ccf->setConnedString(1, tr("Disconnected"), "");//"未连接"
ccf->isConnected = false;
ccf->lbFreq->hide();
ifWLanConnected = false;
lbLoadDown->hide();
lbLoadUp->hide();
lbLoadDownImg->hide();
lbLoadUpImg->hide();
ccf->setTopItem(false);
dbus_wifiList.append(QStringList("--")); //没有已连接wifi时第一个元素为--
} else {
QProcess * process = new QProcess;
QString name = actWifiName;
process->start(QString("nmcli -f 802-11-wireless.ssid connection show \"%1\"").arg(name));
connect(process, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished), this, [ = ]() {
process->deleteLater();
});
connect(process, &QProcess::readyReadStandardOutput, this, [ = ]() {
QString str = process->readAllStandardOutput();
actWifiSsid = str.mid(str.lastIndexOf(" ") + 1, str.length() - str.lastIndexOf(" ") - 2); //获取到ssid时以ssid为准
});
connect(process, &QProcess::readyReadStandardError, this, [ = ]() {
actWifiSsid = actWifiName; //没有获取到ssid时以wifi名为准
});
process->waitForFinished();
}
ccf->setAct(true);
ccf->move(L_VERTICAL_LINE_TO_ITEM, 0);
ccf->show();
// 填充可用网络列表
QString headLine = slist.at(0);
int indexSignal,indexSecu, indexFreq, indexBSsid, indexName, indexPath, indexCate;
@ -2476,6 +2440,42 @@ void MainWindow::loadWifiListDone(QStringList slist)
}
}
// 根据当前连接的wifi 设置OneConnForm
OneConnForm *ccf = new OneConnForm(topWifiListWidget, this, confForm, ksnm);
if (actWifiName == "--" || wifiActState == 1 || actWifiBssidList.at(0) == "--" || actWifiBssid == " ") {
ccf->setWifiName(tr("Not connected"), "--", "--", "--", isHuaWeiPC);//"当前未连接任何 Wifi"
ccf->setSignal("0", "--" , "0");
activeWifiSignalLv = 0;
ccf->setConnedString(1, tr("Disconnected"), "");//"未连接"
ccf->isConnected = false;
ccf->lbFreq->hide();
ifWLanConnected = false;
lbLoadDown->hide();
lbLoadUp->hide();
lbLoadDownImg->hide();
lbLoadUpImg->hide();
ccf->setTopItem(false);
dbus_wifiList.append(QStringList("--")); //没有已连接wifi时第一个元素为--
} else {
QProcess * process = new QProcess;
QString name = actWifiName;
process->start(QString("nmcli -f 802-11-wireless.ssid connection show \"%1\"").arg(name));
connect(process, static_cast<void(QProcess::*)(int,QProcess::ExitStatus)>(&QProcess::finished), this, [ = ]() {
process->deleteLater();
});
connect(process, &QProcess::readyReadStandardOutput, this, [ = ]() {
QString str = process->readAllStandardOutput();
actWifiSsid = str.mid(str.lastIndexOf(" ") + 1, str.length() - str.lastIndexOf(" ") - 2); //获取到ssid时以ssid为准
});
connect(process, &QProcess::readyReadStandardError, this, [ = ]() {
actWifiSsid = actWifiName; //没有获取到ssid时以wifi名为准
});
process->waitForFinished();
}
ccf->setAct(true);
ccf->move(L_VERTICAL_LINE_TO_ITEM, 0);
ccf->show();
if (actWifiBssidList.size()==1 && actWifiBssidList.at(0)=="--") {
actWifiId = actWifiName;
actWifiName = "--";
@ -2561,7 +2561,7 @@ void MainWindow::loadWifiListDone(QStringList slist)
if (wname != "" && wname != "--") {
//qDebug() << "wifi的 actWifiBssid: " << actWifiBssid << " wcate = " << wcate;
//qDebug() << "wifi的 bssid: " << wbssid << "当前连接的wifi的bssid: " << actWifiBssidList;
if(actWifiBssid == wbssid && wifiActState == 2) {
if (actWifiBssid == wbssid && wifiActState == 2) {
//对于已经连接的wifi
connect(this, &MainWindow::actWifiSignalLvChanaged, ccf, [ = ](const int &signalLv) {
ccf->setSignal(QString::number(signalLv), wsecu, wcate);