#include "networkdeleter.h" #include "ui_networkdeleter.h" NetworkDeleter::NetworkDeleter(QString networkName, QString networkUuidStr, QWidget *parent) : QDialog(parent), ui(new Ui::NetworkDeleter) { targetNetworkName = networkName; targetNetworkUuidStr = networkUuidStr; ui->setupUi(this); this->setWindowTitle(tr("Delete connection %1?").arg(networkName)); ui->connectionDeleteWarningLabel->setText(tr("Are you sure you want to delete connection %1?").arg(networkName)); this->layout()->setSizeConstraint(QLayout::SetFixedSize); connect(ui->cancelButton, &QPushButton::clicked, this, &NetworkDeleter::onCancelClicked); connect(ui->deleteButton, &QPushButton::clicked, this, &NetworkDeleter::onDeleteClicked); } NetworkDeleter::~NetworkDeleter() { delete ui; } void NetworkDeleter::onCancelClicked() { this->done(0); } void NetworkDeleter::onDeleteClicked() { NetworkManager::Connection::Ptr conn = NetworkManager::findConnectionByUuid(targetNetworkUuidStr); if (!conn || conn->uuid().isEmpty()) { QMessageBox errorMsg(QMessageBox::Critical, tr("Connection removal failed"), tr("Could not remove connection %1.").arg(targetNetworkName)); errorMsg.exec(); } else { // Copied and adapted from plasma-nm // Remove slave connections for (const NetworkManager::Connection::Ptr &connection : NetworkManager::listConnections()) { NetworkManager::ConnectionSettings::Ptr settings = connection->settings(); if (settings->master() == conn->uuid()) { connection->remove(); } } QDBusPendingReply<> reply = conn->remove(); auto watcher = new QDBusPendingCallWatcher(reply, this); connect(watcher, &QDBusPendingCallWatcher::finished, this, &NetworkDeleter::deleteReplyFinished); ui->connectionDeleteWarningLabel->setText(tr("Deleting connection %1...").arg(targetNetworkName)); ui->deleteButton->setEnabled(false); } } void NetworkDeleter::deleteReplyFinished(QDBusPendingCallWatcher *watcher) { // Inspired by plasma-nm QDBusPendingReply<> reply = *watcher; if (reply.isError() || !reply.isValid()) { QMessageBox errorMsg(QMessageBox::Critical, tr("Connection removal failed"), tr("Could not remove connection %1.").arg(targetNetworkName)); errorMsg.exec(); } this->done(0); }