diff --git a/0001-fix-network-tray-Fix-the-problem-that-the-tray-has-a.patch b/0001-fix-network-tray-Fix-the-problem-that-the-tray-has-a.patch new file mode 100644 index 0000000000000000000000000000000000000000..e7f9859de1ace69fae9561e93258f06c76282582 --- /dev/null +++ b/0001-fix-network-tray-Fix-the-problem-that-the-tray-has-a.patch @@ -0,0 +1,143 @@ +From 532833286b96f101310ad58692083f9e8ef37155 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Fri, 4 Nov 2022 14:41:27 +0800 +Subject: [PATCH] fix(network-tray):Fix the problem that the tray has an + unavailable widget when the device is available +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复托盘在设备可用时,出现设备不可用界面的问题 +--- + plugins/network/src/tray/network-tray.cpp | 64 ++++++++++++++--------- + 1 file changed, 39 insertions(+), 25 deletions(-) + +diff --git a/plugins/network/src/tray/network-tray.cpp b/plugins/network/src/tray/network-tray.cpp +index ccf6495..f16943b 100644 +--- a/plugins/network/src/tray/network-tray.cpp ++++ b/plugins/network/src/tray/network-tray.cpp +@@ -180,6 +180,7 @@ void NetworkTray::initMenu() + // 初始化条件:设备存在且被管理 + void NetworkTray::initTrayPage() + { ++ KLOG_DEBUG() << "init Tray Page"; + m_wiredDeviceList = NetworkUtils::getAvailableDeviceList(Device::Ethernet); + m_wirelessDeviceList = NetworkUtils::getAvailableDeviceList(Device::Wifi); + +@@ -432,25 +433,18 @@ void NetworkTray::handleDeviceStateChanged(NetworkManager::Device::State newstat + NetworkManager::Device::State oldstate, + NetworkManager::Device::StateChangeReason reason) + { +- +- // KLOG_DEBUG() << "newstate:" << newstate; +- // KLOG_DEBUG() << "oldstate:" << oldstate; +- // KLOG_DEBUG() << "reason:" << reason; + Device *device = qobject_cast(sender()); + auto deviceType = device->type(); ++ KLOG_DEBUG() << "Device interfaceName:" << device->interfaceName(); ++ KLOG_DEBUG() << "Device newstate:" << newstate; ++ KLOG_DEBUG() << "Device oldstate:" << oldstate; ++ KLOG_DEBUG() << "Device reason:" << reason; + + //设备变为可用 +- if ((oldstate == Device::Unavailable || oldstate == Device::Unmanaged) ++ if ((oldstate == Device::Unavailable || oldstate == Device::Unmanaged || oldstate == Device::UnknownState) + && + (newstate != Device::Unmanaged && newstate != Device::Unavailable && newstate != Device::UnknownState)) + { +- if(m_unavailableWidget != nullptr) +- { +- m_verticalLayout->removeWidget(m_unavailableWidget); +- m_unavailableWidget->deleteLater(); +- m_unavailableWidget = nullptr; +- } +- + if (deviceType == Device::Ethernet) + { + reloadWiredTrayPage(); +@@ -459,12 +453,24 @@ void NetworkTray::handleDeviceStateChanged(NetworkManager::Device::State newstat + { + reloadWirelessTrayPage(); + } ++ ++ if((m_wiredTrayPage != nullptr) || (m_wirelessTrayPage != nullptr)) ++ { ++ if(m_unavailableWidget != nullptr) ++ { ++ m_verticalLayout->removeWidget(m_unavailableWidget); ++ m_unavailableWidget->deleteLater(); ++ m_unavailableWidget = nullptr; ++ KLOG_DEBUG() << "remove unavailable widget"; ++ } ++ } + } + + //设备变为不可用时,如果无线和有线均不可用则显示网络不可用的提示 + if(newstate == Device::Unavailable || newstate == Device::Unmanaged + || newstate == Device::UnknownState) + { ++ KLOG_DEBUG() << "device is unavailable"; + if (deviceType == Device::Ethernet) + { + reloadWiredTrayPage(); +@@ -476,10 +482,13 @@ void NetworkTray::handleDeviceStateChanged(NetworkManager::Device::State newstat + + if(m_wiredTrayPage == nullptr && m_wirelessTrayPage == nullptr) + { +- initUnavailableWidget(); +- m_verticalLayout->addWidget(m_unavailableWidget); ++ if(m_unavailableWidget == nullptr) ++ { ++ initUnavailableWidget(); ++ m_verticalLayout->addWidget(m_unavailableWidget); ++ KLOG_DEBUG() << "add unavailable widget"; ++ } + } +- + } + } + +@@ -550,12 +559,14 @@ void NetworkTray::handlePrimaryConnectionChanged(const QString &uni) + void NetworkTray::reloadWiredTrayPage() + { + KLOG_DEBUG() << "reloadWiredTrayPage"; +- m_verticalLayout->removeWidget(m_wiredTrayPage); +- m_wiredTrayPage->disconnect(); +- delete m_wiredTrayPage; +- m_wiredTrayPage = nullptr; ++ if(m_wiredTrayPage != nullptr) ++ { ++ m_verticalLayout->removeWidget(m_wiredTrayPage); ++ delete m_wiredTrayPage; ++ m_wiredTrayPage = nullptr; ++ } ++ + m_wiredDeviceList.clear(); +- + m_wiredDeviceList = NetworkUtils::getAvailableDeviceList(Device::Ethernet); + if (m_wiredDeviceList.count() != 0) + { +@@ -569,12 +580,15 @@ void NetworkTray::reloadWiredTrayPage() + + void NetworkTray::reloadWirelessTrayPage() + { +- m_verticalLayout->removeWidget(m_wirelessTrayPage); +- m_wiredTrayPage->disconnect(); +- delete m_wirelessTrayPage; +- m_wirelessTrayPage = nullptr; +- m_wirelessDeviceList.clear(); ++ KLOG_DEBUG() << "reloadWirelessTrayPage"; ++ if(m_wirelessTrayPage != nullptr) ++ { ++ m_verticalLayout->removeWidget(m_wirelessTrayPage); ++ delete m_wirelessTrayPage; ++ m_wirelessTrayPage = nullptr; ++ } + ++ m_wirelessDeviceList.clear(); + m_wirelessDeviceList = NetworkUtils::getAvailableDeviceList(Device::Wifi); + if (m_wirelessDeviceList.count() != 0) + { +-- +2.33.0 + diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index ec6ef441a8a3f17df57341a0b57c64ec6340a6ea..d12c6c9f8c401a7b609018ea1570b0e4f16f39a7 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,12 +1,14 @@ Name: kiran-control-panel Version: 2.4.0 -Release: 1 +Release: 2 Summary: Kiran Control Panel Summary(zh_CN): Kiran桌面控制面板 License: MulanPSL-2.0 Source0: %{name}-%{version}.tar.gz +Patch0001: 0001-fix-network-tray-Fix-the-problem-that-the-tray-has-a.patch + BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 BuildRequires: glib2-devel @@ -141,6 +143,9 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Fri Nov 04 2022 luoqing - 2.4.0-2 +- KYOS-F: Fix the problem that the tray has an unavailable widget when the device is available + * Thu Nov 03 2022 liuxinhao - 2.4.0-1 - KYOS-F: release 2.4,new plugin interface,using color block design