From 4e07bf46e25fc499a999e0452f9363d001824028 Mon Sep 17 00:00:00 2001 From: Aaron Rainbolt Date: Tue, 28 Nov 2023 23:32:58 -0600 Subject: [PATCH] Implement Ethernet connection creation --- connectionsettingsengine.cpp | 1 - networkcreator.cpp | 36 +++++++++++++++++++ networkcreator.h | 14 ++++++++ networkcreator.ui | 68 +++++++++++++++++++++++++++++++++++- 4 files changed, 117 insertions(+), 2 deletions(-) diff --git a/connectionsettingsengine.cpp b/connectionsettingsengine.cpp index db492c9..3e49cca 100644 --- a/connectionsettingsengine.cpp +++ b/connectionsettingsengine.cpp @@ -828,7 +828,6 @@ void ConnectionSettingsEngine::modifyConnectionSettings(QString connUuidStr, QVa // TODO: Handle WiFi here } qWarning() << connSettingsMap; - // TODO: Do something to surpress app exit here QDBusPendingReply<> reply = conn->update(connSettingsMap); auto watcher = new QDBusPendingCallWatcher(reply); QObject::connect(watcher, &QDBusPendingCallWatcher::finished, saveReplyFinished); diff --git a/networkcreator.cpp b/networkcreator.cpp index 4e647e0..492591e 100644 --- a/networkcreator.cpp +++ b/networkcreator.cpp @@ -1,14 +1,50 @@ #include "networkcreator.h" #include "ui_networkcreator.h" +#include NetworkCreator::NetworkCreator(QWidget *parent) : QDialog(parent), ui(new Ui::NetworkCreator) { ui->setupUi(this); + ui->connectionTypeComboBox->addItems(QStringList() << tr("Ethernet")); + connect(ui->okButton, &QPushButton::clicked, this, &NetworkCreator::onOkButtonClicked); + connect(ui->cancelButton, &QPushButton::clicked, this, &NetworkCreator::onCancelButtonClicked); } NetworkCreator::~NetworkCreator() { delete ui; } + +void NetworkCreator::onOkButtonClicked() +{ + NetworkManager::ConnectionSettings::Ptr connSettings; + NetworkManager::WiredSetting::Ptr wiredSetting; + + switch(ui->connectionTypeComboBox->currentIndex()) { + case 0: // Ethernet + connSettings = NetworkManager::ConnectionSettings::Ptr(new NetworkManager::ConnectionSettings(NetworkManager::ConnectionSettings::Wired)); + wiredSetting = connSettings->setting(NetworkManager::Setting::Wired).dynamicCast(); + wiredSetting->setAutoNegotiate(true); + break; + } + + connSettings->setId(ui->connectionNameLineEdit->text()); + connSettings->setUuid(NetworkManager::ConnectionSettings::createNewUuid()); + + QDBusPendingReply<> reply = NetworkManager::addConnection(connSettings->toMap()); + auto watcher = new QDBusPendingCallWatcher(reply); + QObject::connect(watcher, &QDBusPendingCallWatcher::finished, this, &NetworkCreator::createReplyFinished); + connSettings.clear(); +} + +void NetworkCreator::onCancelButtonClicked() +{ + this->done(0); +} + +void NetworkCreator::createReplyFinished() +{ + this->done(0); +} diff --git a/networkcreator.h b/networkcreator.h index 553f974..9aa47ed 100644 --- a/networkcreator.h +++ b/networkcreator.h @@ -2,6 +2,14 @@ #define NETWORKCREATOR_H #include +#include +#include +#include +#include +#include +#include +#include +#include namespace Ui { class NetworkCreator; @@ -15,8 +23,14 @@ public: explicit NetworkCreator(QWidget *parent = nullptr); ~NetworkCreator(); +private slots: + void onOkButtonClicked(); + void onCancelButtonClicked(); + void createReplyFinished(); + private: Ui::NetworkCreator *ui; + QDialog *dialogWindow; }; #endif // NETWORKCREATOR_H diff --git a/networkcreator.ui b/networkcreator.ui index 8abf0ff..3e1ee3b 100644 --- a/networkcreator.ui +++ b/networkcreator.ui @@ -7,12 +7,78 @@ 0 0 400 - 300 + 191 Create New Connection... + + + + + Choose connection type: + + + + + + + + + + Specify connection name: + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + OK + + + + + + + Cancel + + + + + +