File indexing completed on 2024-05-05 17:43:14

0001 /*
0002  *   SPDX-FileCopyrightText: 2017 Ivan Cukic <ivan.cukic (at) kde.org>
0003  *
0004  *   SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005  */
0006 
0007 #include "vaultdeletionwidget.h"
0008 
0009 #include "ui_vaultdeletionwidget.h"
0010 
0011 #include <KConfigGroup>
0012 #include <KMessageWidget>
0013 #include <KSharedConfig>
0014 
0015 #include <QDBusInterface>
0016 #include <QDBusPendingCall>
0017 
0018 class VaultDeletionWidget::Private
0019 {
0020 public:
0021     Ui::VaultDeletionWidget ui;
0022     QString vaultName;
0023     QString vaultDevice;
0024     KSharedConfig::Ptr config;
0025 };
0026 
0027 VaultDeletionWidget::VaultDeletionWidget()
0028     : DialogDsl::DialogModule(true)
0029     , d(new Private())
0030 {
0031     d->ui.setupUi(this);
0032 
0033     auto messageWidget = new KMessageWidget(d->ui.labelWarning->text(), this);
0034     messageWidget->setMessageType(KMessageWidget::Warning);
0035     messageWidget->setCloseButtonVisible(false);
0036     messageWidget->setIcon(QIcon::fromTheme("dialog-warning"));
0037     static_cast<QBoxLayout *>(layout())->insertWidget(0, messageWidget);
0038 
0039     d->ui.labelWarning->hide();
0040 
0041     connect(d->ui.textVaultNameConfirmation, &QLineEdit::textEdited, this, [this](const QString &newText) {
0042         d->ui.buttonDeleteVault->setEnabled(d->vaultName == newText);
0043     });
0044 
0045     connect(d->ui.buttonDeleteVault, &QPushButton::clicked, this, [this] {
0046         d->ui.buttonDeleteVault->setEnabled(false);
0047         Q_EMIT requestCancellation();
0048 
0049         QDBusInterface(QStringLiteral("org.kde.kded5"), QStringLiteral("/modules/plasmavault"), QStringLiteral("org.kde.plasmavault"))
0050             .asyncCall("deleteVault", d->vaultDevice, d->vaultName);
0051     });
0052 }
0053 
0054 VaultDeletionWidget::~VaultDeletionWidget()
0055 {
0056 }
0057 
0058 PlasmaVault::Vault::Payload VaultDeletionWidget::fields() const
0059 {
0060     return {};
0061 }
0062 
0063 void VaultDeletionWidget::init(const PlasmaVault::Vault::Payload &payload)
0064 {
0065     d->vaultName = payload[KEY_NAME].toString();
0066     d->vaultDevice = payload[KEY_DEVICE].toString();
0067     d->ui.buttonDeleteVault->setEnabled(false);
0068 }