aero-applets/run-applet/runapplet.cpp
2025-05-14 21:53:38 +02:00

50 lines
1.4 KiB
C++

#include "runapplet.h"
#include "ui_runapplet.h"
#include <QLineEdit>
#include <QProcess>
#include <QMessageBox>
RunApplet::RunApplet(QWidget *parent)
: QDialog(parent)
, ui(new Ui::RunApplet)
{
ui->setupUi(this);
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));
ui->okBtn->setIcon(style()->standardIcon(QStyle::SP_DialogOkButton));
ui->browseBtn->setIcon(style()->standardIcon(QStyle::SP_DialogOpenButton));
connect(ui->cancelBtn, &QPushButton::clicked, this, [&]() {
qApp->quit();
});
connect(ui->okBtn, &QPushButton::clicked, this, &RunApplet::runApp);
}
void RunApplet::runApp() {
QString command = ui->comboBox->currentText();
QStringList args = command.split(" ");
QProcess *process = new QProcess;
process->setProgram(args[0]);
args.remove(0);
process->setArguments(args);
bool status = process->startDetached();
if (status) {
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;
}