From 11f8b0c389e9af858c6f9724c860f1573b90aace Mon Sep 17 00:00:00 2001 From: caixiangrong Date: Fri, 26 Jul 2024 16:19:27 +0800 Subject: [PATCH 1/2] fix: Modifying configuration errors can also set proxy issues When configuring incorrectly, setting the proxy did not take effect, resulting in asynchronous network proxy status on the taskbar Issue: https://github.com/linuxdeepin/developer-center/issues/9983 --- dcc-network-plugin/window/sysproxymodule.cpp | 22 ++++++++++++++++++-- dcc-network-plugin/window/sysproxymodule.h | 1 + 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/dcc-network-plugin/window/sysproxymodule.cpp b/dcc-network-plugin/window/sysproxymodule.cpp index f70554d..68c3652 100644 --- a/dcc-network-plugin/window/sysproxymodule.cpp +++ b/dcc-network-plugin/window/sysproxymodule.cpp @@ -57,6 +57,7 @@ SysProxyModule::SysProxyModule(QObject *parent) if (checked) { uiMethodChanged(m_lastCombIndex == 0 ? ProxyMethod::Manual : ProxyMethod::Auto); m_proxyTypeBox->comboBox()->setCurrentIndex(m_lastCombIndex); + checkConf(); } else { // 关闭代理 NetworkController::instance()->proxyController()->setProxyMethod(ProxyMethod::None); @@ -97,6 +98,7 @@ SysProxyModule::SysProxyModule(QObject *parent) uiMethodChanged(ProxyMethod::Manual); break; } + checkConf(); m_buttonTuple->setEnabled(true); }); })); @@ -107,6 +109,7 @@ SysProxyModule::SysProxyModule(QObject *parent) m_autoUrl->textEdit()->installEventFilter(this); ProxyController *proxyController = NetworkController::instance()->proxyController(); connect(proxyController, &ProxyController::autoProxyChanged, m_autoUrl, &LineEditWidget::setText); + connect(m_autoUrl->textEdit(), &QLineEdit::textChanged, this, &SysProxyModule::checkConf); autoGroup->appendItem(m_autoUrl); resetData(ProxyMethod::Auto); })); @@ -119,6 +122,7 @@ SysProxyModule::SysProxyModule(QObject *parent) m_buttonTuple->rightButton()->setText(tr("Save", "button")); m_buttonTuple->setVisible(NetworkController::instance()->proxyController()->proxyMethod() != ProxyMethod::None); m_buttonTuple->setEnabled(false); + checkConf(); connect(m_buttonTuple->rightButton(), &QPushButton::clicked, this, [this] { m_lastCombIndex = m_proxyTypeBox->comboBox()->currentIndex(); @@ -160,7 +164,9 @@ void SysProxyModule::deactive() m_socksPort = nullptr; m_ignoreList = nullptr; m_buttonTuple = nullptr; - uiMethodChanged(NetworkController::instance()->proxyController()->proxyMethod()); + QTimer::singleShot(1, this, [this]() { + uiMethodChanged(NetworkController::instance()->proxyController()->proxyMethod()); + }); } void SysProxyModule::initManualView(QWidget *w) @@ -177,13 +183,14 @@ void SysProxyModule::initManualView(QWidget *w) portEdit->textEdit()->installEventFilter(this); group->appendItem(proxyEdit); group->appendItem(portEdit); - connect(portEdit->textEdit(), &QLineEdit::textChanged, this, [=](const QString &str) { + connect(portEdit->textEdit(), &QLineEdit::textChanged, this, [portEdit](const QString &str) { if (str.toInt() < 0) { portEdit->setText("0"); } else if (str.toInt() > 65535) { portEdit->setText("65535"); } }); + connect(proxyEdit->textEdit(), &QLineEdit::textChanged, this, &SysProxyModule::checkConf); }; // 手动代理编辑界面控件初始化 @@ -324,6 +331,17 @@ void SysProxyModule::resetData(ProxyMethod uiMethod) } } +void SysProxyModule::checkConf() +{ + if (!m_proxyTypeBox || !m_buttonTuple) + return; + if (m_proxyTypeBox->comboBox()->currentIndex() == ProxyMethodIndex_Manual) { + m_buttonTuple->rightButton()->setEnabled(!m_httpAddr->text().isEmpty() || !m_httpsAddr->text().isEmpty() || !m_ftpAddr->text().isEmpty() || !m_socksAddr->text().isEmpty()); + } else if (m_proxyTypeBox->comboBox()->currentIndex() == ProxyMethodIndex_Auto) { + m_buttonTuple->rightButton()->setEnabled(!m_autoUrl->text().isEmpty()); + } +} + bool SysProxyModule::eventFilter(QObject *watched, QEvent *event) { // 实现鼠标点击编辑框,确定按钮激活,捕捉FocusIn消息,DTextEdit没有鼠标点击消息 diff --git a/dcc-network-plugin/window/sysproxymodule.h b/dcc-network-plugin/window/sysproxymodule.h index a6a3daa..2d5d290 100644 --- a/dcc-network-plugin/window/sysproxymodule.h +++ b/dcc-network-plugin/window/sysproxymodule.h @@ -41,6 +41,7 @@ private Q_SLOTS: void applySettings(); void uiMethodChanged(dde::network::ProxyMethod uiMethod); void resetData(dde::network::ProxyMethod uiMethod); + void checkConf(); private: virtual bool eventFilter(QObject *watched, QEvent *event) override; From 8ca29ae67c9a3ec3e5759f8cdddf6aa4f1610566 Mon Sep 17 00:00:00 2001 From: caixiangrong Date: Fri, 26 Jul 2024 16:28:17 +0800 Subject: [PATCH 2/2] chore: bump to version 2.0.31 bump to version 2.0.31 Log: bump to version 2.0.31 --- debian/changelog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/debian/changelog b/debian/changelog index 1078779..fcfdbdc 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,10 @@ +dde-network-core (2.0.31) unstable; urgency=medium + + * fix: Modify the interface to display multiple system proxy issues(Issue: 9961) + * fix: Modifying configuration errors can also set proxy issues(Issue: 9983) + + -- caixiangrong Fri, 26 Jul 2024 16:25:40 +0800 + dde-network-core (2.0.30) unstable; urgency=medium * fix: Responding to proxy change signals (#252)(Issue: 9711)