diff --git a/run-applet/runapplet.cpp b/run-applet/runapplet.cpp index 02868f3..c970d0f 100644 --- a/run-applet/runapplet.cpp +++ b/run-applet/runapplet.cpp @@ -4,6 +4,7 @@ #include #include #include +#include RunApplet::RunApplet(QWidget *parent) : QDialog(parent) @@ -11,6 +12,8 @@ RunApplet::RunApplet(QWidget *parent) { ui->setupUi(this); + restoreState(); + ui->label->setPixmap(QIcon::fromTheme("system-run-symbolic").pixmap(42, 42)); // https://forum.qt.io/post/291563 ui->cancelBtn->setIcon(style()->standardIcon(QStyle::SP_DialogCancelButton)); @@ -24,6 +27,11 @@ RunApplet::RunApplet(QWidget *parent) connect(ui->okBtn, &QPushButton::clicked, this, &RunApplet::runApp); } +RunApplet::~RunApplet() +{ + delete ui; +} + void RunApplet::runApp() { QString command = ui->comboBox->currentText(); QStringList args = command.split(" "); @@ -37,14 +45,32 @@ void RunApplet::runApp() { qApp->quit(); } - // QString errorMessage = process->errorString(); - QMessageBox messageBox; messageBox.critical(0, process->program(), QString(tr("Windows cannot find '%1'. Make sure you typed the name correctly, and then try again.")).arg(process->program())); - messageBox.setFixedSize(500,200); } -RunApplet::~RunApplet() -{ - delete ui; +void RunApplet::closeEvent(QCloseEvent* evt) { + saveState(); + + return QDialog::closeEvent(evt); +} + +void RunApplet::saveState() { + // https://stackoverflow.com/a/33639884/16255372 + QSettings settings("aero-applets", "run-applet"); + + QStringList commandHistory; + + for (int i = 0; i < ui->comboBox->count(); i++) { + commandHistory.append(ui->comboBox->itemText(i)); + } + + settings.setValue("commandHistory", commandHistory); +} + +void RunApplet::restoreState() { + // https://stackoverflow.com/a/33639884/16255372 + QSettings settings("aero-applets", "run-applet"); + + ui->comboBox->addItems(settings.value("commandHistory").toStringList()); } diff --git a/run-applet/runapplet.h b/run-applet/runapplet.h index ed930bd..1c19c74 100644 --- a/run-applet/runapplet.h +++ b/run-applet/runapplet.h @@ -21,5 +21,11 @@ private: Ui::RunApplet *ui; void runApp(); + + void saveState(); + void restoreState(); + +protected: + void closeEvent(QCloseEvent*) override; }; #endif // RUNAPPLET_H diff --git a/run-applet/runapplet.ui b/run-applet/runapplet.ui index e8ddb03..76862db 100644 --- a/run-applet/runapplet.ui +++ b/run-applet/runapplet.ui @@ -11,7 +11,10 @@ - RunApplet + Run + + +