From d86ccec79999b4f1cc617d1c872ed5c471b677e0 Mon Sep 17 00:00:00 2001 From: luoqing Date: Fri, 5 Aug 2022 10:14:46 +0800 Subject: [PATCH] fix(netwowrk):fix not searching the wireless network for a long time after the WiFi connection is successful MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复wifi连接成功后长时间不搜索无线网络 Close #I5IPVO --- ...-not-searching-the-wireless-network-.patch | 240 ++++++++++++++++++ kiran-control-panel.spec | 6 +- 2 files changed, 245 insertions(+), 1 deletion(-) create mode 100644 0001-fix-netwowrk-fix-not-searching-the-wireless-network-.patch diff --git a/0001-fix-netwowrk-fix-not-searching-the-wireless-network-.patch b/0001-fix-netwowrk-fix-not-searching-the-wireless-network-.patch new file mode 100644 index 0000000..acee25a --- /dev/null +++ b/0001-fix-netwowrk-fix-not-searching-the-wireless-network-.patch @@ -0,0 +1,240 @@ +From 5f9c85d57d40c7aa9e045c0ba796c29069c525a1 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Mon, 1 Aug 2022 16:48:00 +0800 +Subject: [PATCH] fix(netwowrk):fix not searching the wireless network for a + long time after the WiFi connection is successful +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复wifi连接成功后长时间不搜索无线网络 + +Close #I5IPVO +--- + .../src/plugin/cpanel-network-widget.cpp | 34 ++++++++++++++++--- + .../src/plugin/cpanel-network-widget.h | 1 + + .../src/plugin/manager/wireless-manager.cpp | 2 +- + .../disconnect-and-delete-button.cpp | 12 ++++--- + .../plugin/setting-widget/wireless-widget.cpp | 2 -- + plugins/network/src/tray/network-tray.cpp | 17 ++++++++++ + .../network/src/tray/wireless-tray-widget.cpp | 29 ++++++++++++++-- + 7 files changed, 83 insertions(+), 14 deletions(-) + +diff --git a/plugins/network/src/plugin/cpanel-network-widget.cpp b/plugins/network/src/plugin/cpanel-network-widget.cpp +index cf0f147..daf3c33 100644 +--- a/plugins/network/src/plugin/cpanel-network-widget.cpp ++++ b/plugins/network/src/plugin/cpanel-network-widget.cpp +@@ -46,9 +46,9 @@ void CPanelNetworkWidget::init() + { + initPage(); + initConnect(); +- + } + ++//TODO:增加sidebarItem与设备的对应关系 + void CPanelNetworkWidget::initPage() + { + getAvailableDeviceList(); +@@ -218,10 +218,7 @@ void CPanelNetworkWidget::initConnect() + + connect(notifier(), &Notifier::deviceRemoved, this, &CPanelNetworkWidget::handleDeviceRemoved); + +- connect(ui->sidebar, &QListWidget::itemClicked, [this](QListWidgetItem *item) +- { +- ui->stackedWidget->setCurrentIndex(item->data(Qt::UserRole).toInt()); +- }); ++ connect(ui->sidebar, &QListWidget::itemClicked, this,&CPanelNetworkWidget::handleSideBarItemClicked); + + connect(Kiran::StylePalette::instance(), &Kiran::StylePalette::themeChanged, this, &CPanelNetworkWidget::handleThemeChanged); + } +@@ -282,3 +279,30 @@ void CPanelNetworkWidget::handleThemeChanged(Kiran::PaletteType paletteType) + ui->sidebar->item(i)->setIcon(pixmap); + } + } ++ ++void CPanelNetworkWidget::handleSideBarItemClicked(QListWidgetItem *item) ++{ ++ ui->stackedWidget->setCurrentIndex(item->data(Qt::UserRole).toInt()); ++ ++ QString itemText = item->text(); ++ KLOG_DEBUG() << "item clicked:" << item->text(); ++ if(itemText.contains(tr("Wireless Network"))) ++ { ++ KLOG_DEBUG() << "item clicked wireless"; ++ for (auto device : m_wirelessDeviceList) ++ { ++ WirelessDevice::Ptr wirelessDevice = qobject_cast(device); ++ QDBusPendingReply<> replyRequestScan = wirelessDevice->requestScan(); ++ ++ replyRequestScan.waitForFinished(); ++ if (replyRequestScan.isError()) ++ { ++ KLOG_DEBUG() << "wireless Device name:" << wirelessDevice->interfaceName() << " requestScan error:" << replyRequestScan.error(); ++ } ++ else ++ { ++ KLOG_DEBUG() << "wireless Device name:" << wirelessDevice->interfaceName() << " requestScan reply:" << replyRequestScan.reply(); ++ } ++ } ++ } ++} +\ No newline at end of file +diff --git a/plugins/network/src/plugin/cpanel-network-widget.h b/plugins/network/src/plugin/cpanel-network-widget.h +index bb7d74e..112cab8 100644 +--- a/plugins/network/src/plugin/cpanel-network-widget.h ++++ b/plugins/network/src/plugin/cpanel-network-widget.h +@@ -50,6 +50,7 @@ public slots: + void handleDeviceAdded(const QString &devicePath); + void handleDeviceRemoved(const QString &devicePath); + void handleThemeChanged(Kiran::PaletteType paletteType); ++ void handleSideBarItemClicked(QListWidgetItem *item); + + signals: + void subItemsChanged(); +diff --git a/plugins/network/src/plugin/manager/wireless-manager.cpp b/plugins/network/src/plugin/manager/wireless-manager.cpp +index 9f004d3..7c2eabb 100644 +--- a/plugins/network/src/plugin/manager/wireless-manager.cpp ++++ b/plugins/network/src/plugin/manager/wireless-manager.cpp +@@ -207,7 +207,7 @@ void WirelessManager::handleActiveConnectionAdded(const QString &path) + } + } + +-//断开网络时,会自动rescan搜索无线网络 ++//断开网络时,会自动触发rescan搜索无线网络 + void WirelessManager::handleActiveConnectionRemoved(const QString &path) + { + ui->connectionShowPage->handleActiveStateDeactivated(path); +diff --git a/plugins/network/src/plugin/setting-widget/disconnect-and-delete-button.cpp b/plugins/network/src/plugin/setting-widget/disconnect-and-delete-button.cpp +index 75719a5..0833e9b 100644 +--- a/plugins/network/src/plugin/setting-widget/disconnect-and-delete-button.cpp ++++ b/plugins/network/src/plugin/setting-widget/disconnect-and-delete-button.cpp +@@ -59,12 +59,16 @@ void DisconnectAndDeleteButton::initButton(SettingConnectionStatus connectionSta + break; + } + m_activeConnectionPath = activeConnectionPath; ++ + auto activeConnectionPtr = NetworkManager::findActiveConnection(m_activeConnectionPath); +- ConnectionSettings::ConnectionType connectionType = activeConnectionPtr->connection()->settings()->connectionType(); +- if (connectionType == ConnectionSettings::Wireless) ++ if(activeConnectionPtr != nullptr) + { +- ui->deleteButton->setVisible(false); +- ui->ignoreButton->setVisible(true); ++ ConnectionSettings::ConnectionType connectionType = activeConnectionPtr->connection()->settings()->connectionType(); ++ if (connectionType == ConnectionSettings::Wireless) ++ { ++ ui->deleteButton->setVisible(false); ++ ui->ignoreButton->setVisible(true); ++ } + } + } + +diff --git a/plugins/network/src/plugin/setting-widget/wireless-widget.cpp b/plugins/network/src/plugin/setting-widget/wireless-widget.cpp +index d04cf51..dac2faa 100644 +--- a/plugins/network/src/plugin/setting-widget/wireless-widget.cpp ++++ b/plugins/network/src/plugin/setting-widget/wireless-widget.cpp +@@ -49,8 +49,6 @@ void WirelessWidget::initUI() + void WirelessWidget::initConnection() + { + connect(m_mtuButton, &QAbstractButton::toggled, this, &WirelessWidget::handleCustomMTUChanged); +- connect(notifier(),&Notifier::deviceAdded,[=](){initMacComboBox();}); +- connect(notifier(),&Notifier::deviceRemoved,[=](){initMacComboBox();}); + } + + void WirelessWidget::setWirelessSetting(const WirelessSetting::Ptr &wirelessSetting) +diff --git a/plugins/network/src/tray/network-tray.cpp b/plugins/network/src/tray/network-tray.cpp +index 800c819..5aeb35d 100644 +--- a/plugins/network/src/tray/network-tray.cpp ++++ b/plugins/network/src/tray/network-tray.cpp +@@ -206,6 +206,7 @@ void NetworkTray::getAvailableDeviceList() + } + } + ++// Note:点击托盘显示页面的同时,让所有无线设备扫描一次网络 + void NetworkTray::handleTrayClicked(QSystemTrayIcon::ActivationReason reason) + { + switch (reason) +@@ -216,6 +217,22 @@ void NetworkTray::handleTrayClicked(QSystemTrayIcon::ActivationReason reason) + default: + break; + } ++ ++ for (auto device : m_wirelessDeviceList) ++ { ++ WirelessDevice::Ptr wirelessDevice = qobject_cast(device); ++ QDBusPendingReply<> replyRequestScan = wirelessDevice->requestScan(); ++ ++ replyRequestScan.waitForFinished(); ++ if (replyRequestScan.isError()) ++ { ++ KLOG_DEBUG() << "wireless Device name:" << wirelessDevice->interfaceName() << " requestScan error:" << replyRequestScan.error(); ++ } ++ else ++ { ++ KLOG_DEBUG() << "wireless Device name:" << wirelessDevice->interfaceName() << " requestScan reply:" << replyRequestScan.reply(); ++ } ++ } + } + + void NetworkTray::handleNetworkSettingClicked() +diff --git a/plugins/network/src/tray/wireless-tray-widget.cpp b/plugins/network/src/tray/wireless-tray-widget.cpp +index a9dd141..2a480b1 100644 +--- a/plugins/network/src/tray/wireless-tray-widget.cpp ++++ b/plugins/network/src/tray/wireless-tray-widget.cpp +@@ -164,7 +164,7 @@ void WirelessTrayWidget::activateWirelessConnection(const QString &connectionPat + StatusNotification::connectitonFailedNotify(connectionPath); + } + else +- KLOG_DEBUG() << "reply.reply():" << reply.reply(); ++ KLOG_DEBUG() << "reply.reply():" << reply.reply(); + } + } + +@@ -322,11 +322,23 @@ void WirelessTrayWidget::handleStateActivating(const QString &activatedPath) + if (item != nullptr) + m_connectionLists->updateItemActivatingStatus(item); + } ++ ++ QDBusPendingReply<> replyRequestScan = m_wirelessDevice->requestScan(); ++ replyRequestScan.waitForFinished(); ++ KLOG_DEBUG() << "State Activating requestScan"; ++ if (replyRequestScan.isError()) ++ { ++ KLOG_DEBUG() << "State Activating requestScan error:" << replyRequestScan.error(); ++ } ++ else ++ { ++ KLOG_DEBUG() << "State Activating requestScan reply:" << replyRequestScan.reply(); ++ } + } + + void WirelessTrayWidget::handleStateActivated(const QString &activatedPath) + { +- KLOG_DEBUG() << "Wireless handleStateActivated"; ++ KLOG_DEBUG() << "Wireless State: Activated"; + ActiveConnection::Ptr activeConnection = findActiveConnection(activatedPath); + if (activeConnection.isNull()) + return; +@@ -341,6 +353,19 @@ void WirelessTrayWidget::handleStateActivated(const QString &activatedPath) + StatusNotification::ActiveConnectionActivatedNotify(connectionInfo); + m_connectionLists->sortItems(); + m_connectionLists->update(); ++ ++ //连接成功后手动rescan ++ QDBusPendingReply<> replyRequestScan = m_wirelessDevice->requestScan(); ++ replyRequestScan.waitForFinished(); ++ KLOG_DEBUG() << "--------------------------StateActivated requestScan"; ++ if (replyRequestScan.isError()) ++ { ++ KLOG_DEBUG() << "StateActivated requestScan error:" << replyRequestScan.error(); ++ } ++ else ++ { ++ KLOG_DEBUG() << "StateActivated requestScan reply:" << replyRequestScan.reply(); ++ } + } + } + +-- +2.33.0 + diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index 41c3773..7e4a2f6 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,6 +1,6 @@ Name: kiran-control-panel Version: 2.3.4 -Release: 2 +Release: 3 Summary: Kiran Control Panel Summary(zh_CN): Kiran桌面控制面板 @@ -8,6 +8,7 @@ License: MulanPSL-2.0 Source0: %{name}-%{version}.tar.gz Patch0001: 0001-fix-system-buttons-on-the-system-information-page-ar.patch Patch0002: 0002-refactor-systeminfo-update-systeminfo-plugin-dialog-.patch +Patch0003: 0001-fix-netwowrk-fix-not-searching-the-wireless-network-.patch BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 @@ -166,6 +167,9 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Fri Aug 05 2022 luoqing - 2.3.4-3 +- KYOS-B: fix not searching the wireless network for a long time after the WiFi connection is successful(#I5IPVO) + * Thu Aug 04 2022 liuxinhao - 2.3.4-2 - KYOS-B: update systeminfo plugin dialog style(#I5H3YX) - KYOS-B: buttons on system information page are not fully dispalyed(#I5H229)