diff --git a/libs/editor/settings/ipv4widget.h b/libs/editor/settings/ipv4widget.h --- a/libs/editor/settings/ipv4widget.h +++ b/libs/editor/settings/ipv4widget.h @@ -50,6 +50,7 @@ private Q_SLOTS: void slotModeComboChanged(int index); void slotRoutesDialog(); + void slotAdvancedDialog(); void slotDnsServers(); void slotDnsDomains(); diff --git a/libs/editor/settings/ipv4widget.cpp b/libs/editor/settings/ipv4widget.cpp --- a/libs/editor/settings/ipv4widget.cpp +++ b/libs/editor/settings/ipv4widget.cpp @@ -27,6 +27,8 @@ #include #include #include +#include +#include #include #include @@ -108,6 +110,7 @@ slotModeComboChanged(m_ui->method->currentIndex()); connect(m_ui->btnRoutes, &QPushButton::clicked, this, &IPv4Widget::slotRoutesDialog); + connect(m_ui->btnAdvanced, &QPushButton::clicked, this, &IPv4Widget::slotAdvancedDialog); // Connect for setting check watchChangedSetting(); @@ -140,6 +143,10 @@ m_tmpIpv4Setting.setNeverDefault(ipv4Setting->neverDefault()); m_tmpIpv4Setting.setIgnoreAutoRoutes(ipv4Setting->ignoreAutoRoutes()); + m_tmpIpv4Setting.setDhcpHostname(ipv4Setting->dhcpHostname()); + m_tmpIpv4Setting.setDhcpSendHostname(ipv4Setting->dhcpSendHostname()); + m_tmpIpv4Setting.setDadTimeout(ipv4Setting->dadTimeout()); + // method switch (ipv4Setting->method()) { case NetworkManager::Ipv4Setting::Automatic: @@ -200,6 +207,10 @@ ipv4Setting.setNeverDefault(m_tmpIpv4Setting.neverDefault()); ipv4Setting.setIgnoreAutoRoutes(m_tmpIpv4Setting.ignoreAutoRoutes()); + ipv4Setting.setDhcpHostname(m_tmpIpv4Setting.dhcpHostname()); + ipv4Setting.setDhcpSendHostname(m_tmpIpv4Setting.dhcpSendHostname()); + ipv4Setting.setDadTimeout(m_tmpIpv4Setting.dadTimeout()); + // method switch ((MethodIndex)m_ui->method->currentIndex()) { case Automatic: @@ -416,6 +427,47 @@ dlg->show(); } +void IPv4Widget::slotAdvancedDialog() +{ + auto dlg = new QDialog(this); + dlg->setAttribute(Qt::WA_DeleteOnClose); + + auto layout = new QFormLayout(dlg); + dlg->setLayout(layout); + + layout->addRow(new QLabel(i18n("You can find more information about these values here:
https://developer.gnome.org/NetworkManager/stable/nm-settings.html
"))); + + auto sendHostname = new QCheckBox; + sendHostname->setChecked(m_tmpIpv4Setting.dhcpSendHostname()); + layout->addRow(i18n("Send hostname:"), sendHostname); + + auto dhcpHostname = new QLineEdit; + dhcpHostname->setText(m_tmpIpv4Setting.dhcpHostname()); + layout->addRow(i18n("DHCP hostname:"), dhcpHostname); + + connect(sendHostname, &QCheckBox::toggled, dhcpHostname, &QLineEdit::setEnabled); + + auto dadTimeout = new QSpinBox; + dadTimeout->setMinimum(-1); + dadTimeout->setValue(m_tmpIpv4Setting.dadTimeout()); + layout->addRow(i18n("DAD timeout:"), dadTimeout); + + QDialogButtonBox* box = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel, dlg); + connect(box, &QDialogButtonBox::accepted, dlg, &QDialog::accept); + connect(box, &QDialogButtonBox::rejected, dlg, &QDialog::reject); + layout->addWidget(box); + + connect(dlg, &QDialog::accepted, + [&] () { + m_tmpIpv4Setting.setDhcpSendHostname(sendHostname->isChecked()); + m_tmpIpv4Setting.setDhcpHostname(dhcpHostname->text()); + m_tmpIpv4Setting.setDadTimeout(dadTimeout->value()); + }); + + dlg->setModal(true); + dlg->show(); +} + void IPv4Widget::slotDnsServers() { QPointer dialog = new QDialog(this); diff --git a/libs/editor/settings/ui/ipv4.ui b/libs/editor/settings/ui/ipv4.ui --- a/libs/editor/settings/ui/ipv4.ui +++ b/libs/editor/settings/ui/ipv4.ui @@ -304,6 +304,13 @@ + + + + Advanced... + + +