Fix: kylin-nm crashed on Pc with no ethernet device & wifi list can not be shown on v10sp1.

This commit is contained in:
zhangjiaping 2021-05-21 14:34:24 +08:00
parent 36c796eddd
commit 34b5853220
2 changed files with 52 additions and 10 deletions

View File

@ -212,7 +212,7 @@ void BackThread::execConnLan(QString connName, QString ifname, QString connectTy
bool isWiredCableAlready = objBackThreadDBus.getWiredCableStateByIfname(ifname);
if (connectType == "bluetooth") {
if (connectType == "bluetooth" || ifname == "") {
isWiredCableAlready = true; //对于蓝牙类型的网络不需要接入网线就可以连接
mycmd = "export LANG='en_US.UTF-8';export LANGUAGE='en_US';nmcli connection up '" + connName + "'";
} else {

View File

@ -1584,7 +1584,10 @@ void MainWindow::getLanListDone(QStringList slist)
macInterface = macLan;
}
} else {
if (objKyDBus->multiWiredIfName.length() > 0)
mIfName = objKyDBus->multiWiredIfName.at(0); //使用默认的网络接口
else
mIfName = "";
macInterface = objKyDBus->dbusMacDefault; //使用默认的MAC地址
}
@ -2235,7 +2238,12 @@ QVector<structWifiProperty> MainWindow::connectableWifiPriorityList(const QStrin
QString line = tmp.at(iter);
QString wifiname = line.mid(indexName).trimmed();
QString wifibssid = line.mid(indexBSsid, indexPath-indexBSsid).trimmed();
QString wifiObjectPath = line.mid(indexPath,indexCate-indexPath).trimmed();
QString wifiObjectPath;
if (indexCate) {
wifiObjectPath = line.mid(indexPath,indexCate-indexPath).trimmed();
} else {
wifiObjectPath = line.mid(indexPath,indexName-indexPath).trimmed();
}
QString wifiAutoConnection = "no";
QString wifiPriority;
@ -2427,7 +2435,12 @@ void MainWindow::loadWifiListDone(QStringList slist)
QString line = slist.at(i);
QString wbssid = line.mid(indexBSsid, 17).trimmed();
int Path = line.indexOf("/org/");
QString wDbusPath = line.mid(Path, indexCate-indexPath).trimmed();
QString wDbusPath;
if (indexCate >= 0) {
wDbusPath = line.mid(Path,indexCate-Path).trimmed();
} else {
wDbusPath = line.mid(Path,indexName-Path).trimmed();
}
QDBusInterface interface("org.freedesktop.NetworkManager",
wDbusPath,
"org.freedesktop.DBus.Properties",
@ -2454,9 +2467,18 @@ void MainWindow::loadWifiListDone(QStringList slist)
QString wsecu = line.mid(indexSecu, indexFreq - indexSecu).trimmed();
QString wbssid = line.mid(indexBSsid, 17).trimmed();
QString wfreq = line.mid(indexFreq, 4).trimmed();
QString wcate = line.mid(indexCate, 1).trimmed();
QString wcate;
if (indexCate >= 0)
wcate = line.mid(indexCate, 1).trimmed();
else
wcate = QString::number(0);
int Path = line.indexOf("/org/");
QString wDbusPath = line.mid(Path, indexCate-indexPath).trimmed();
QString wDbusPath;
if (indexCate >= 0) {
wDbusPath = line.mid(Path,indexCate-Path).trimmed();
} else {
wDbusPath = line.mid(Path,indexName-Path).trimmed();
}
QDBusInterface interface("org.freedesktop.NetworkManager",
wDbusPath,
"org.freedesktop.DBus.Properties",
@ -2490,7 +2512,12 @@ void MainWindow::loadWifiListDone(QStringList slist)
for (int k = i; k < slist.size(); k ++) {
QString tmpLine = slist.at(k);
int Path = tmpLine.indexOf("/org/");
QString m_DbusPath = slist.at(k).mid(Path, indexCate-indexPath).trimmed();
QString m_DbusPath;
if (indexCate >= 0) {
m_DbusPath = line.mid(Path,indexCate-Path).trimmed();
} else {
m_DbusPath = line.mid(Path,indexName-Path).trimmed();
}
QDBusInterface m_interface("org.freedesktop.NetworkManager",
m_DbusPath,
"org.freedesktop.DBus.Properties",
@ -2525,7 +2552,12 @@ void MainWindow::loadWifiListDone(QStringList slist)
});
connect(ccf, SIGNAL(selectedOneWifiForm(QString,int)), this, SLOT(oneTopWifiFormSelected(QString,int)));
connect(ccf, SIGNAL(requestHandleWifiDisconn()), this, SLOT(handleWifiDisconn()));
QString path = line.mid(indexPath, indexCate-indexPath).trimmed();
QString path;
if (indexCate >= 0) {
path = line.mid(indexPath, indexCate - indexPath).trimmed();
} else {
path = line.mid(indexPath, indexName - indexPath).trimmed();
}
QString m_name;
if (path != "" && !path.isEmpty()) m_name= this->objKyDBus->getWifiSsid(path);
if (m_name.isEmpty() || m_name == "") {
@ -2586,7 +2618,12 @@ void MainWindow::loadWifiListDone(QStringList slist)
OneConnForm *ocf = new OneConnForm(wifiListWidget, this, confForm, ksnm);
connect(ocf, SIGNAL(selectedOneWifiForm(QString,int)), this, SLOT(oneWifiFormSelected(QString,int)));
QString path = line.mid(indexPath,indexCate-indexPath).trimmed();
QString path;
if (indexCate >= 0) {
path = line.mid(indexPath, indexCate - indexPath).trimmed();
} else {
path = line.mid(indexPath, indexName - indexPath).trimmed();
}
QString m_name;
if (path != "" && !path.isEmpty()) m_name= this->objKyDBus->getWifiSsid(path);
if (m_name.isEmpty() || m_name == "") {
@ -2748,7 +2785,12 @@ void MainWindow::updateWifiListDone(QStringList slist)
QString wbssid = line.mid(indexBSsid, 17).trimmed();
QString wname = line.mid(indexName).trimmed();
QString wfreq = line.mid(indexFreq, 4).trimmed();
QString wpath = line.mid(indexPath, indexCate - indexPath).trimmed();
QString wpath;
if (indexCate) {
wpath = line.mid(indexPath, indexCate - indexPath).trimmed();
} else {
wpath = line.mid(indexPath, indexName - indexPath).trimmed();
}
QString wcate = line.mid(indexCate, 1).trimmed();
if(wname == "" || wname == "--"){continue;}