From d641f9b8bb234d226b35a29a74317267caf37654 Mon Sep 17 00:00:00 2001 From: Jan Grulich Date: Tue, 5 Jan 2021 12:19:29 +0100 Subject: [PATCH] IPv6 setting: add option to disable IPv6 --- libs/editor/settings/ipv6widget.cpp | 18 +++++++++++++++--- libs/editor/settings/ipv6widget.h | 2 +- libs/editor/settings/ui/ipv6.ui | 7 ++++++- 3 files changed, 22 insertions(+), 5 deletions(-) diff --git a/libs/editor/settings/ipv6widget.cpp b/libs/editor/settings/ipv6widget.cpp index e101d36d..f77c279a 100644 --- a/libs/editor/settings/ipv6widget.cpp +++ b/libs/editor/settings/ipv6widget.cpp @@ -9,6 +9,8 @@ #include "ipv6delegate.h" #include "intdelegate.h" +#include + #include #include #include @@ -72,9 +74,13 @@ IPv6Widget::IPv6Widget(const NetworkManager::Setting::Ptr &setting, QWidget* par connect(m_ui->tableViewAddresses->selectionModel(), &QItemSelectionModel::selectionChanged, this, &IPv6Widget::selectionChanged); - connect(&d->model, &QStandardItemModel::itemChanged, this, &IPv6Widget::tableViewItemChanged); + // IPv6Method::Disabled is available in NM 1.20+ + if (!NetworkManager::checkVersion(1, 20, 0)) { + m_ui->method->removeItem(7); + } + if (setting) { loadConfig(setting); } @@ -134,6 +140,9 @@ void IPv6Widget::loadConfig(const NetworkManager::Setting::Ptr &setting) m_ui->method->setCurrentIndex(LinkLocal); break; case NetworkManager::Ipv6Setting::Ignored: + m_ui->method->setCurrentIndex(Ignored); + break; + case NetworkManager::Ipv6Setting::ConfigDisabled: m_ui->method->setCurrentIndex(Disabled); break; } @@ -197,9 +206,12 @@ QVariantMap IPv6Widget::setting() const case LinkLocal: ipv6Setting.setMethod(NetworkManager::Ipv6Setting::LinkLocal); break; - case Disabled: + case Ignored: ipv6Setting.setMethod(NetworkManager::Ipv6Setting::Ignored); break; + case Disabled: + ipv6Setting.setMethod(NetworkManager::Ipv6Setting::ConfigDisabled); + break; } // dns @@ -294,7 +306,7 @@ void IPv6Widget::slotModeComboChanged(int index) m_ui->tableViewAddresses->setEnabled(false); m_ui->btnAdd->setEnabled(false); m_ui->btnRemove->setEnabled(false); - } else if (index == Disabled) { // Ignored + } else if (index == Ignored || index == Disabled) { // Ignored and Disabled m_ui->dnsLabel->setText(i18n("DNS Servers:")); m_ui->dns->setEnabled(false); m_ui->dnsMorePushButton->setEnabled(false); diff --git a/libs/editor/settings/ipv6widget.h b/libs/editor/settings/ipv6widget.h index b9084ec7..b42eece4 100644 --- a/libs/editor/settings/ipv6widget.h +++ b/libs/editor/settings/ipv6widget.h @@ -22,7 +22,7 @@ class Q_DECL_EXPORT IPv6Widget : public SettingWidget { Q_OBJECT public: - enum MethodIndex { Automatic = 0, AutomaticOnlyIP, AutomaticOnlyDHCP, LinkLocal, Manual, Disabled }; + enum MethodIndex { Automatic = 0, AutomaticOnlyIP, AutomaticOnlyDHCP, LinkLocal, Manual, Ignored, Disabled }; explicit IPv6Widget(const NetworkManager::Setting::Ptr &setting = NetworkManager::Setting::Ptr(), QWidget* parent = nullptr, Qt::WindowFlags f = {}); ~IPv6Widget() override; diff --git a/libs/editor/settings/ui/ipv6.ui b/libs/editor/settings/ui/ipv6.ui index 43e8786c..259a355c 100644 --- a/libs/editor/settings/ui/ipv6.ui +++ b/libs/editor/settings/ui/ipv6.ui @@ -7,7 +7,7 @@ 0 0 418 - 427 + 434 @@ -252,6 +252,11 @@ a temporary IPv6 address in addition to the public one generated from MAC addres Ignored + + + Disabled + + -- GitLab