summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAurindam Jana <aurindam.jana@digia.com>2013-02-07 13:02:21 +0100
committerAurindam Jana <aurindam.jana@digia.com>2013-03-04 15:32:55 +0100
commit32b640a5f9dbe9465ac2f6dd3da7c06839edda25 (patch)
tree94b50beba373ca92e1cfad76ea8667581ed7f64b
parent9e8a2a251636df5fda1b61f124a5c161428b18c9 (diff)
Add RunProgramArguments
The common case that the called application needs arguments wasn't implemented. Change-Id: I60b2d149399b4036c4fc30b55b0d17997993d8bd Reviewed-by: Leena Miettinen <riitta-leena.miettinen@digia.com> Reviewed-by: Karsten Heimrich <karsten.heimrich@digia.com> Reviewed-by: Niels Weber <niels.weber@digia.com> Reviewed-by: Kai Koehne <kai.koehne@digia.com>
-rw-r--r--doc/examples/config.xml1
-rw-r--r--doc/installerfw.qdoc3
-rw-r--r--src/libs/installer/constants.h1
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp2
-rw-r--r--src/libs/installer/packagemanagercoredata.cpp1
-rw-r--r--src/libs/installer/packagemanagergui.cpp6
-rw-r--r--src/libs/installer/settings.cpp5
-rw-r--r--src/libs/installer/settings.h1
-rw-r--r--tests/auto/installer/settings/data/full_config.xml1
-rw-r--r--tests/auto/installer/settings/tst_settings.cpp1
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>logo.png</Logo>
<Watermark>watermark.png</Watermark>
<RunProgram></RunProgram>
+ <RunProgramArguments></RunProgramArguments>
<RunProgramDescription></RunProgramDescription>
<StartMenuDir>Some Application Entry Dir</StartMenuDir>
<UninstallerName>SDKMaintenanceTool</UninstallerName>
diff --git a/doc/installerfw.qdoc b/doc/installerfw.qdoc
index c57260e91..00d602bce 100644
--- a/doc/installerfw.qdoc
+++ b/doc/installerfw.qdoc
@@ -200,6 +200,9 @@
\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
the installation. Defaults to \gui {Run <Name>}.
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<QString, QString> &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
<RemoveTargetDir>true</RemoveTargetDir>
<RunProgram>myapp</RunProgram>
+ <RunProgramArguments>foo bar</RunProgramArguments>
<RunProgramDescription>Launch MyApp</RunProgramDescription>
<DependsOnLocalInstallerBinary>true</DependsOnLocalInstallerBinary>
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"));