!19 修复kiranui2.3第一轮测试中wifi连接成功后长时间不搜索无线网络

From: @luoqing_kylinsec 
Reviewed-by: @tangjie02 
Signed-off-by: @tangjie02
This commit is contained in:
openeuler-ci-bot 2022-08-05 05:39:27 +00:00 committed by Gitee
commit ae3f7a1097
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
2 changed files with 245 additions and 1 deletions

View File

@ -0,0 +1,240 @@
From 5f9c85d57d40c7aa9e045c0ba796c29069c525a1 Mon Sep 17 00:00:00 2001
From: luoqing <luoqing@kylinsec.com.cn>
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<WirelessDevice *>(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<WirelessDevice *>(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

View File

@ -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 <luoqing@kylinsec.com.cn> - 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 <liuxinhao@kylinsec.com.cn> - 2.3.4-2
- KYOS-B: update systeminfo plugin dialog style(#I5H3YX)
- KYOS-B: buttons on system information page are not fully dispalyed(#I5H229)