From d1a461f6b66dc066821cc24088577ad54c30c43a Mon Sep 17 00:00:00 2001 From: luoqing Date: Tue, 22 Aug 2023 17:30:01 +0800 Subject: [PATCH] fix(network):After receiving the Connection::Update signal from an active connection, the connection is no longer automatically reactivated; When switching resolutions, refresh rate preferentially selects the recommended refresh rate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 收到已激活的连接的更新信号Connection::Update后,不再自动重新激活连接 切换分辨率时,刷新率优先选择推荐的刷新率 Related #13231,#13283 --- ...r-receiving-the-Connection-Update-si.patch | 121 ++++++++++++++++++ ...When-switching-resolutions-refresh-r.patch | 63 +++++++++ kiran-control-panel.spec | 8 +- 3 files changed, 191 insertions(+), 1 deletion(-) create mode 100644 0001-fix-network-After-receiving-the-Connection-Update-si.patch create mode 100644 0002-feature-display-When-switching-resolutions-refresh-r.patch diff --git a/0001-fix-network-After-receiving-the-Connection-Update-si.patch b/0001-fix-network-After-receiving-the-Connection-Update-si.patch new file mode 100644 index 0000000..9899039 --- /dev/null +++ b/0001-fix-network-After-receiving-the-Connection-Update-si.patch @@ -0,0 +1,121 @@ +From c3f02b61332c2cbac185e0306ff2583f639e5ca8 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Tue, 22 Aug 2023 15:57:19 +0800 +Subject: [PATCH] fix(network):After receiving the Connection::Update signal + from an active connection, the connection is no longer automatically + reactivated +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 收到已激活的连接的更新信号Connection::Update后,不再自动重新激活连接 + +Related #13231 +--- + .../src/plugin/manager/wired-manager.cpp | 69 +++++++++---------- + 1 file changed, 32 insertions(+), 37 deletions(-) + +diff --git a/plugins/network/src/plugin/manager/wired-manager.cpp b/plugins/network/src/plugin/manager/wired-manager.cpp +index ffe33b3..32ac227 100644 +--- a/plugins/network/src/plugin/manager/wired-manager.cpp ++++ b/plugins/network/src/plugin/manager/wired-manager.cpp +@@ -91,27 +91,34 @@ void WiredManager::handleActivateSelectedConnection(const QString &connectionPat + + auto devicestate = device->state(); + KLOG_DEBUG() << "device state:" << devicestate ; +- if(devicestate != Device::Unavailable) ++ if(devicestate == Device::Unavailable) + { +- QDBusPendingReply reply = +- NetworkManager::activateConnection(connectionPath, m_devicePath, connectionParameter); ++ StatusNotification::connectitonFailedNotifyByReason(tr("The current device is not available")); ++ return; ++ } + +- reply.waitForFinished(); +- if (reply.isError()) ++ QDBusPendingReply reply = ++ NetworkManager::activateConnection(connectionPath, m_devicePath, connectionParameter); ++ ++ reply.waitForFinished(); ++ if (reply.isError()) ++ { ++ // 此处处理进入激活流程失败的原因,并不涉及流程中某个具体阶段失败的原因 ++ KLOG_ERROR() << "activate connection failed:" << reply.error(); ++ QString errorMessage = reply.error().message(); ++ if (errorMessage.contains("device has no carrier")) + { +- // 此处处理进入激活流程失败的原因,并不涉及流程中某个具体阶段失败的原因 +- KLOG_ERROR() << "activate connection failed:" << reply.error(); +- QString errorMessage = reply.error().message(); +- if (errorMessage.contains("device has no carrier")) +- StatusNotification::connectitonFailedNotifyByReason(tr("The carrier is pulled out")); +- else +- StatusNotification::connectitonFailedNotify(connectionPath); ++ StatusNotification::connectitonFailedNotifyByReason(tr("The carrier is pulled out")); + } + else +- KLOG_DEBUG() << "activateConnection reply:" << reply.reply(); ++ { ++ StatusNotification::connectitonFailedNotify(connectionPath); ++ } + } + else +- StatusNotification::connectitonFailedNotifyByReason(tr("The current device is not available")); ++ { ++ KLOG_DEBUG() << "activateConnection reply:" << reply.reply(); ++ } + } + + // 获取到当前激活对象后,开启等待动画,判断完激活状态后停止等待动画 +@@ -141,7 +148,7 @@ void WiredManager::handleActiveConnectionAdded(const QString &path) + break; + } + } +- connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WiredManager::handleActiveConnectionStateChanged); ++ connect(activatedConnection.data(), &ActiveConnection::stateChanged, this, &WiredManager::handleActiveConnectionStateChanged, Qt::UniqueConnection); + } + } + +@@ -214,28 +221,16 @@ void WiredManager::handleConnectionUpdated(const QString &path) + { + KLOG_DEBUG() << "Connection updated:" << path; + Connection::Ptr updateConnection = findConnection(path); +- if (updateConnection->settings()->connectionType() == ConnectionSettings::Wired) ++ if (updateConnection->settings()->connectionType() != ConnectionSettings::Wired) + { +- //移除后再加载进来以更新信息 +- ui->connectionShowPage->removeConnectionFromList(path); +- ui->connectionShowPage->addConnection(updateConnection, ""); +- if (ui->stackedWidget->currentIndex() != PAGE_SETTING) +- handleReturnPreviousPage(); +- +- QString updateConnectionPath = updateConnection->path(); +- ActiveConnection::List activeConnectionLists = activeConnections(); +- //已连接的网络的配置被修改后,点击保存 ,应该重新连接网络,以使配置生效 +- for (auto activeConn : activeConnectionLists) +- { +- if (activeConn->connection()->path() == updateConnectionPath) +- { +- auto deviceLists = activeConn->devices(); +- if (deviceLists.contains(m_devicePath)) +- { +- QDBusPendingReply<> reply = NetworkManager::deactivateConnection(activeConn->connection()->path()); +- handleActivateSelectedConnection(updateConnectionPath, ""); +- } +- } +- } ++ return; ++ } ++ ++ //移除后再加载进来以更新信息 ++ ui->connectionShowPage->removeConnectionFromList(path); ++ ui->connectionShowPage->addConnection(updateConnection, ""); ++ if (ui->stackedWidget->currentIndex() != PAGE_SETTING) ++ { ++ handleReturnPreviousPage(); + } + } +-- +2.33.0 + diff --git a/0002-feature-display-When-switching-resolutions-refresh-r.patch b/0002-feature-display-When-switching-resolutions-refresh-r.patch new file mode 100644 index 0000000..e9a76b0 --- /dev/null +++ b/0002-feature-display-When-switching-resolutions-refresh-r.patch @@ -0,0 +1,63 @@ +From 8468d6df5794ede71a39905e2d31f4cadda244b7 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Wed, 23 Aug 2023 11:11:09 +0800 +Subject: [PATCH] feature(display):When switching resolutions, refresh rate + preferentially selects the recommended refresh rate +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 切换分辨率时,刷新率优先选择推荐的刷新率 + +Related #13283 +--- + plugins/display/src/display-page.cpp | 21 +++++++++++++++++---- + 1 file changed, 17 insertions(+), 4 deletions(-) + +diff --git a/plugins/display/src/display-page.cpp b/plugins/display/src/display-page.cpp +index a885b8b..23b5e8e 100644 +--- a/plugins/display/src/display-page.cpp ++++ b/plugins/display/src/display-page.cpp +@@ -263,22 +263,35 @@ void DisplayPage::initExtraComboBoxRefreshRate(QComboBox *comboBox, const QList< + { + comboBox->clear(); + +- QString recommend; + QList list = m_displayConfig->listPreferredModes(m_curMonitorPath); ++ double recommendRefreshRate; + if (!list.isEmpty()) + { +- double refreshRate = list.first().refreshRate; +- recommend = QString("%1HZ").arg(QString::asprintf("%.2f", refreshRate)); ++ recommendRefreshRate = list.first().refreshRate; + } + ++ QString strPostfix = tr(" (recommended)"); + QList t_refreshRateList = refreshRateList; + std::sort(t_refreshRateList.begin(), t_refreshRateList.end(), std::greater()); + foreach (double r, t_refreshRateList) + { + QString text = QString("%1HZ").arg(QString::asprintf("%.2f", r)); +- if (text == recommend) text += tr(" (recommended)"); ++ if (QString::asprintf("%.2f", r) == QString::asprintf("%.2f", recommendRefreshRate)) ++ { ++ text.append(strPostfix); ++ } + comboBox->addItem(text, r); + } ++ ++ for (size_t i = 0; i < comboBox->count(); i++) ++ { ++ double refreshRate = comboBox->itemData(i).toDouble(); ++ if(QString::asprintf("%.2f", refreshRate) == QString::asprintf("%.2f", recommendRefreshRate)) ++ { ++ comboBox->setCurrentIndex(i); ++ break; ++ } ++ } + } + + void DisplayPage::selectResolutionComboboxItem(QComboBox *comboBox, const int &w, const int &h) +-- +2.33.0 + diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index 9eb67b8..fc755e9 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,12 +1,14 @@ Name: kiran-control-panel Version: 2.5.5 -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-After-receiving-the-Connection-Update-si.patch +Patch0002: 0002-feature-display-When-switching-resolutions-refresh-r.patch BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 @@ -163,6 +165,10 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Wed Aug 23 2023 luoqing - 2.5.5-2 +- KYOS-F: After receiving the Connection::Update signal from an active connection, the connection is no longer automatically reactivated (#13231) +- KYOS-F: When switching resolutions, refresh rate preferentially selects the recommended refresh rate (#13283) + * Tue Aug 15 2023 luoqing - 2.5.5-1 - KYOS-F: Added pop-up prompt when inserting or removing a network cable (#11814) - KYOS-F: Change the name "Wired Network 1" in the left column to the name of the network card, corresponding to the network tray(10429) -- Gitee