From 32b640a5f9dbe9465ac2f6dd3da7c06839edda25 Mon Sep 17 00:00:00 2001 From: Aurindam Jana Date: Thu, 7 Feb 2013 13:02:21 +0100 Subject: Add RunProgramArguments The common case that the called application needs arguments wasn't implemented. Change-Id: I60b2d149399b4036c4fc30b55b0d17997993d8bd Reviewed-by: Leena Miettinen Reviewed-by: Karsten Heimrich Reviewed-by: Niels Weber Reviewed-by: Kai Koehne --- doc/examples/config.xml | 1 + doc/installerfw.qdoc | 3 +++ src/libs/installer/constants.h | 1 + src/libs/installer/packagemanagercore_p.cpp | 2 +- src/libs/installer/packagemanagercoredata.cpp | 1 + src/libs/installer/packagemanagergui.cpp | 6 ++++-- src/libs/installer/settings.cpp | 5 +++++ src/libs/installer/settings.h | 1 + tests/auto/installer/settings/data/full_config.xml | 1 + tests/auto/installer/settings/tst_settings.cpp | 1 + 10 files changed, 19 insertions(+), 3 deletions(-) diff --git a/doc/examples/config.xml b/doc/examples/config.xml index c234bab25..daf212711 100644 --- a/doc/examples/config.xml +++ b/doc/examples/config.xml @@ -8,6 +8,7 @@ logo.png watermark.png + Some Application Entry Dir SDKMaintenanceTool diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc index c57260e91..00d602bce 100644 --- a/doc/installerfw.qdoc +++ b/doc/installerfw.qdoc @@ -199,6 +199,9 @@ \o RunProgram \o Command executed after the installer is done if the user accepts the action. + \row + \o RunProgramArguments + \o Arguments passed to the program specified in RunProgram. \row \o RunProgramDescription \o Text shown next to the check box for running the program after diff --git a/src/libs/installer/constants.h b/src/libs/installer/constants.h index 3929681a7..7ea73bbb9 100644 --- a/src/libs/installer/constants.h +++ b/src/libs/installer/constants.h @@ -80,6 +80,7 @@ static const QLatin1String scSortingPriority("SortingPriority"); static const QLatin1String scTitle("Title"); static const QLatin1String scPublisher("Publisher"); static const QLatin1String scRunProgram("RunProgram"); +static const QLatin1String scRunProgramArguments("RunProgramArguments"); static const QLatin1String scStartMenuDir("StartMenuDir"); static const QLatin1String scRemoveTargetDir("RemoveTargetDir"); static const QLatin1String scRunProgramDescription("RunProgramDescription"); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 4a7452cd4..5bcbb5418 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -761,7 +761,7 @@ void PackageManagerCorePrivate::writeMaintenanceConfigFiles() QVariantHash variables; QSettingsWrapper cfg(iniPath, QSettingsWrapper::IniFormat); foreach (const QString &key, m_data.keys()) { - if (key != scRunProgramDescription && key != scRunProgram) + if (key != scRunProgramDescription && key != scRunProgram && key != scRunProgramArguments) variables.insert(key, m_data.value(key)); } cfg.setValue(QLatin1String("Variables"), variables); diff --git a/src/libs/installer/packagemanagercoredata.cpp b/src/libs/installer/packagemanagercoredata.cpp index 4c848f13e..b15b2796c 100644 --- a/src/libs/installer/packagemanagercoredata.cpp +++ b/src/libs/installer/packagemanagercoredata.cpp @@ -99,6 +99,7 @@ PackageManagerCoreData::PackageManagerCoreData(const QHash &va m_variables.insert(scTargetDir, replaceVariables(m_settings.targetDir())); m_variables.insert(scRunProgram, replaceVariables(m_settings.runProgram())); + m_variables.insert(scRunProgramArguments, replaceVariables(m_settings.runProgramArguments())); m_variables.insert(scRemoveTargetDir, replaceVariables(m_settings.removeTargetDir())); } diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 9dfcaa91c..c68891145 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -2011,11 +2011,13 @@ void FinishedPage::leaving() void FinishedPage::handleFinishClicked() { const QString program = packageManagerCore()->replaceVariables(packageManagerCore()->value(scRunProgram)); + const QStringList args = packageManagerCore()->replaceVariables( + packageManagerCore()->value(scRunProgramArguments)).split(QLatin1Char(' ')); if (!m_runItCheckBox->isChecked() || program.isEmpty()) return; - qDebug() << "starting" << program; - QProcess::startDetached(program); + qDebug() << "starting" << program << args; + QProcess::startDetached(program, args); } diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp index c5e41ed3f..3fe8320fa 100644 --- a/src/libs/installer/settings.cpp +++ b/src/libs/installer/settings.cpp @@ -360,6 +360,11 @@ QString Settings::runProgram() const return d->m_data.value(scRunProgram).toString(); } +QString Settings::runProgramArguments() const +{ + return d->m_data.value(scRunProgramArguments).toString(); +} + QString Settings::runProgramDescription() const { return d->m_data.value(scRunProgramDescription).toString(); diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h index 51355d038..db7212b1e 100644 --- a/src/libs/installer/settings.h +++ b/src/libs/installer/settings.h @@ -95,6 +95,7 @@ public: QString applicationVersion() const; QString runProgram() const; + QString runProgramArguments() const; QString runProgramDescription() const; QString startMenuDir() const; QString targetDir() const; diff --git a/tests/auto/installer/settings/data/full_config.xml b/tests/auto/installer/settings/data/full_config.xml index 9f06703b0..d52514642 100644 --- a/tests/auto/installer/settings/data/full_config.xml +++ b/tests/auto/installer/settings/data/full_config.xml @@ -27,6 +27,7 @@ File should contain all elements we allow in a config.xml true myapp + foo bar Launch MyApp true diff --git a/tests/auto/installer/settings/tst_settings.cpp b/tests/auto/installer/settings/tst_settings.cpp index 073d7b7d1..a578ea37e 100644 --- a/tests/auto/installer/settings/tst_settings.cpp +++ b/tests/auto/installer/settings/tst_settings.cpp @@ -47,6 +47,7 @@ void tst_Settings::loadTutorialConfig() QCOMPARE(settings.icon(), QLatin1String(":/installer.png")); #endif QCOMPARE(settings.runProgram(), QString()); + QCOMPARE(settings.runProgramArguments(), QString()); QCOMPARE(settings.runProgramDescription(), QString()); QCOMPARE(settings.adminTargetDir(), QString()); QCOMPARE(settings.removeTargetDir(), QLatin1String("true")); -- cgit v1.2.3