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/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
+
+
+
-
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;