解决存在多个连接其他网络弹窗问题

This commit is contained in:
zhangyuanyuan1 2023-01-30 15:01:51 +08:00
parent e91d71aee8
commit cc5e08963a
4 changed files with 42 additions and 50 deletions

View File

@ -829,35 +829,7 @@ void MainWindow::showCreateWiredConnectWidget(const QString devName)
void MainWindow::showAddOtherWlanWidget(QString devName)
{
qDebug() << "showAddOtherWlanWidget! devName = " << devName;
if (m_addOtherPagePtrMap.contains(devName)) {
if (m_addOtherPagePtrMap[devName] != nullptr) {
qDebug() << "showAddOtherWlanWidget" << devName << "already create,just raise";
KWindowSystem::raiseWindow(m_addOtherPagePtrMap[devName]->winId());
return;
}
}
#if 0
NetDetail *netDetail = new NetDetail(devName, "", "", false, true, true, this);
connect(netDetail, &NetDetail::createPageClose, [&](QString interfaceName){
if (m_addOtherPagePtrMap.contains(interfaceName)) {
m_addOtherPagePtrMap[interfaceName] = nullptr;
}
});
m_addOtherPagePtrMap.insert(devName, netDetail);
netDetail->show();
#endif
JoinHiddenWiFiPage *hiddenWiFi =new JoinHiddenWiFiPage(devName);
connect(hiddenWiFi, &JoinHiddenWiFiPage::hiddenWiFiPageClose, [&](QString interfaceName){
if (m_addOtherPagePtrMap.contains(interfaceName)) {
m_addOtherPagePtrMap[interfaceName] = nullptr;
}
});
m_addOtherPagePtrMap.insert(devName, hiddenWiFi);
connect(hiddenWiFi, &JoinHiddenWiFiPage::showWlanList, this, &MainWindow::onShowMainWindow);
hiddenWiFi->show();
m_wlanWidget->showAddOtherPage(devName);
}
void MainWindow::getWirelessDeviceCap(QMap<QString, int> &map)

View File

@ -152,6 +152,7 @@ private:
void initUI();
void initDbusConnnect();
void initTrayIcon();
void resetTrayIconTool();
void initWindowTheme();
void resetWindowTheme();
@ -194,8 +195,6 @@ private:
IconActiveType iconStatus = IconActiveType::NOT_CONNECTED;
QMap<QString, NetDetail*> m_createPagePtrMap;
// QMap<QString, NetDetail*> m_addOtherPagePtrMap;
QMap<QString, JoinHiddenWiFiPage*> m_addOtherPagePtrMap;
public Q_SLOTS:
void onShowMainWindow(int type);

View File

@ -87,6 +87,7 @@ WlanPage::WlanPage(QWidget *parent) : TabPage(parent)
}
});
m_wlanPagePtrMap.clear();
m_joinHiddenWiFiPagePtrMap.clear();
}
bool WlanPage::eventFilter(QObject *w, QEvent *e)
@ -758,6 +759,12 @@ void WlanPage::onDeviceRemove(QString deviceName)
QString originalDeviceName = m_currentDevice;
if (m_joinHiddenWiFiPagePtrMap.contains(deviceName)) {
if (m_joinHiddenWiFiPagePtrMap[deviceName] != nullptr) {
m_joinHiddenWiFiPagePtrMap[deviceName]->close();
}
}
m_devList.removeOne(deviceName);
deleteDeviceFromCombox(deviceName);
@ -1125,24 +1132,8 @@ void WlanPage::requestScan()
void WlanPage::onHiddenWlanClicked()
{
// qDebug() << "[wlanPage] AddHideWifi Clicked! " << Q_FUNC_INFO << __LINE__ ;
// NetDetail *netDetail = new NetDetail(m_currentDevice, "", "", false, true, true);
// netDetail->show();
if(m_hiddenWiFi != nullptr){
m_hiddenWiFi->activateWindow();
return;
}
m_hiddenWiFi = new JoinHiddenWiFiPage(m_currentDevice);
connect(m_hiddenWiFi, &JoinHiddenWiFiPage::showWlanList, this, &WlanPage::showMainWindow);
connect(m_hiddenWiFi, &JoinHiddenWiFiPage::destroyed, [&](){
if (m_hiddenWiFi != nullptr) {
m_hiddenWiFi = nullptr;
}
});
m_hiddenWiFi->show();
qDebug() << "[wlanPage] AddHideWifi Clicked! " << Q_FUNC_INFO << __LINE__ ;
showHiddenWlanPage(m_currentDevice);
}
void WlanPage::showControlCenter()
@ -1516,6 +1507,28 @@ void WlanPage::showRate()
});
}
void WlanPage::showHiddenWlanPage(QString devName)
{
if (m_joinHiddenWiFiPagePtrMap.contains(devName)) {
if (m_joinHiddenWiFiPagePtrMap[devName] != nullptr) {
qDebug() << "[WlanPage] showAddOtherWlanWidget" << devName << "already create,just raise";
KWindowSystem::raiseWindow(m_joinHiddenWiFiPagePtrMap[devName]->winId());
return;
}
}
JoinHiddenWiFiPage *hiddenWiFi =new JoinHiddenWiFiPage(devName);
connect(hiddenWiFi, &JoinHiddenWiFiPage::hiddenWiFiPageClose, [&](QString interfaceName){
if (m_joinHiddenWiFiPagePtrMap.contains(interfaceName)) {
m_joinHiddenWiFiPagePtrMap[interfaceName] = nullptr;
}
});
connect(hiddenWiFi, &JoinHiddenWiFiPage::showWlanList, this, &WlanPage::showMainWindow);
m_joinHiddenWiFiPagePtrMap.insert(devName, hiddenWiFi);
hiddenWiFi->show();
}
void WlanPage::showDetailPage(QString devName, QString ssid)
{
KyWirelessNetItem wirelessNetItem;
@ -1546,6 +1559,11 @@ void WlanPage::showDetailPage(QString devName, QString ssid)
return;
}
void WlanPage::showAddOtherPage(QString devName)
{
showHiddenWlanPage(devName);
}
bool WlanPage::checkWlanStatus(NetworkManager::ActiveConnection::State state)
{
if (m_activatedConnectResource->checkWirelessStatus(state)) {

View File

@ -66,6 +66,7 @@ public:
void deactivateWirelessConnection(const QString& devName, const QString& ssid);
void showDetailPage(QString devName, QString uuid);
void showAddOtherPage(QString devName);
bool checkWlanStatus(NetworkManager::ActiveConnection::State state);
@ -145,6 +146,8 @@ private:
void showRate();
void showHiddenWlanPage(QString devName);
QListWidgetItem *addEmptyItem(QListWidget *wirelessListWidget);
QListWidgetItem *addNewItem(KyWirelessNetItem &wirelessNetItem,
QListWidget *wirelessListWidget);
@ -231,8 +234,8 @@ private:
QTimer *m_scanTimer = nullptr;
QTimer *m_refreshIconTimer = nullptr;
JoinHiddenWiFiPage *m_hiddenWiFi = nullptr;
QMap<QString, QMap<QString, NetDetail*>> m_wlanPagePtrMap;
QMap<QString, JoinHiddenWiFiPage*> m_joinHiddenWiFiPagePtrMap;
};
#endif // WLANPAGE_H