From 1efd63efaf435db81cf5bfd0ca6b0534d8c1c36c Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Thu, 14 Jun 2018 18:09:01 +0200 Subject: ProfileEditor: add delete button --- .../ProfileEditor/forms/profilemanagerdialog.cpp | 29 ++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'plugins/ProfileEditor/forms/profilemanagerdialog.cpp') diff --git a/plugins/ProfileEditor/forms/profilemanagerdialog.cpp b/plugins/ProfileEditor/forms/profilemanagerdialog.cpp index d05b480..2f0f4a2 100644 --- a/plugins/ProfileEditor/forms/profilemanagerdialog.cpp +++ b/plugins/ProfileEditor/forms/profilemanagerdialog.cpp @@ -2,6 +2,7 @@ #include "profileview.h" #include "ui_profilemanagerdialog.h" #include +#include ProfileManagerDialog::ProfileManagerDialog(QHash *profiles, QWidget *parent) : QDialog(parent) @@ -13,6 +14,10 @@ ProfileManagerDialog::ProfileManagerDialog(QHash *profile connect(ui->listWidget, &QListWidget::itemPressed, this, &ProfileManagerDialog::showProfile); showProfile(nullptr); + connect(ui->delete_pushButton, &QPushButton::clicked, this, [=]() { + deleteProfile(ui->listWidget->currentItem()); + }); + for(auto i = profiles->constBegin(); i != profiles->constEnd(); ++i) { ui->listWidget->addItem(i.key()); } @@ -42,3 +47,27 @@ void ProfileManagerDialog::showProfile(QListWidgetItem *item) ui->groupBox->layout()->addWidget(v); v->adjustSize(); } + +void ProfileManagerDialog::deleteProfile(QListWidgetItem *item) +{ + if(item == nullptr) + return; + + // clear out groupbox layout + QLayoutItem *i; + while((i = ui->groupBox->layout()->takeAt(0)) != nullptr) { + delete i->widget(); + delete i; + } + + auto *profile = profiles->value(item->text()); + Q_CHECK_PTR(profile); + + qDebug("deleting profile %s", qUtf8Printable(profile->name())); + qDebug("deleting %s: %s", qUtf8Printable(profile->configurationPath()), QFile(profile->configurationPath()).remove() ? "okay" : "failed"); + qDebug("deleting %s: %s", qUtf8Printable(profile->persistentStoragePath()), QDir(profile->persistentStoragePath()).removeRecursively() ? "okay" : "failed"); + qDebug("deleting %s: %s", qUtf8Printable(profile->cachePath()), QDir(profile->cachePath()).removeRecursively() ? "okay" : "failed"); + + delete item; + delete profile; +} -- cgit v1.2.1