From a334049b6ffdcfd3dcdcdf09de7ff6f1f8940c52 Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 8 Sep 2022 18:26:16 +0200 Subject: [PATCH 1/2] add "Settings" option in integration screen --- src/ui/integration_dialog.ui | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/ui/integration_dialog.ui b/src/ui/integration_dialog.ui index f21f407e..3e4b78ee 100644 --- a/src/ui/integration_dialog.ui +++ b/src/ui/integration_dialog.ui @@ -29,6 +29,23 @@ true + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + @@ -89,6 +106,13 @@ p, li { white-space: pre-wrap; } + + + + Settings + + + From e1a4b4f63260ec170ff28feee83938739be073dc Mon Sep 17 00:00:00 2001 From: iTrooz Date: Thu, 8 Sep 2022 20:05:10 +0200 Subject: [PATCH 2/2] connect Settings button --- src/ui/integration_dialog.cpp | 7 +++++++ src/ui/integration_dialog.h | 5 ++++- src/ui/main.cpp | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 1 deletion(-) diff --git a/src/ui/integration_dialog.cpp b/src/ui/integration_dialog.cpp index f5d533e0..c6af1ee0 100644 --- a/src/ui/integration_dialog.cpp +++ b/src/ui/integration_dialog.cpp @@ -23,6 +23,8 @@ IntegrationDialog::IntegrationDialog(QString pathToAppImage, QString integratedA &IntegrationDialog::onPushButtonIntegrateAndRunReleased); QObject::connect(ui->pushButtonRunOnce, &QPushButton::released, this, &IntegrationDialog::onPushButtonRunOnceReleased); + QObject::connect(ui->pushButtonSettings, &QPushButton::released, this, + &IntegrationDialog::onPushButtonSettingsReleased); // make translation fit by adjusting the minimum size of the message label to the size calculated by Qt ui->message->setMinimumSize(ui->message->sizeHint()); @@ -54,6 +56,11 @@ void IntegrationDialog::onPushButtonRunOnceReleased() { this->accept(); } +void IntegrationDialog::onPushButtonSettingsReleased() { + this->resultAction = ResultingAction::Settings; + this->accept(); +} + IntegrationDialog::ResultingAction IntegrationDialog::getResultAction() const { return resultAction; } diff --git a/src/ui/integration_dialog.h b/src/ui/integration_dialog.h index 6ccc6788..55b313bd 100644 --- a/src/ui/integration_dialog.h +++ b/src/ui/integration_dialog.h @@ -14,7 +14,8 @@ Q_OBJECT public: enum ResultingAction { IntegrateAndRun, - RunOnce + RunOnce, + Settings }; explicit IntegrationDialog(QString pathToAppImage, QString integratedAppImagesDestinationPath, @@ -29,6 +30,8 @@ Q_OBJECT Q_SLOT void onPushButtonRunOnceReleased(); + Q_SLOT void onPushButtonSettingsReleased(); + ResultingAction resultAction; private: diff --git a/src/ui/main.cpp b/src/ui/main.cpp index c99e4ae4..baf389d7 100644 --- a/src/ui/main.cpp +++ b/src/ui/main.cpp @@ -434,6 +434,21 @@ int main(int argc, char** argv) { return integrateAndRunAppImage(); case IntegrationDialog::RunOnce: return runAppImage(pathToAppImage, appImageArgv.size(), appImageArgv.data()); + case IntegrationDialog::Settings:{ + + auto makeVectorBuffer = [](const std::string& str) { + std::vector strBuffer(str.size() + 1, '\0'); + strncpy(strBuffer.data(), str.c_str(), str.size()); + return strBuffer; + }; + + const QString ownBinaryDirPath = QFileInfo(getOwnBinaryPath().get()).dir().absolutePath(); + auto settingsBinBuffer = makeVectorBuffer((ownBinaryDirPath+"/AppImageLauncherSettings").toStdString()); + char* settingsBin = settingsBinBuffer.data(); + + char* settingsArgs[] = {settingsBin, nullptr}; + return execv(settingsBin, settingsArgs); + } default: displayError(QObject::tr("Unexpected result from the integration dialog.")); return 1;