summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorkh <karsten.heimrich@theqtcompany.com>2014-11-25 16:18:26 +0100
committerKai Koehne <kai.koehne@theqtcompany.com>2014-12-10 08:54:18 +0100
commit4853be33e29654304af4209b38137541068c1662 (patch)
tree71ea26e92db160ecdffc0bcc8b8c621bab9a4cf4 /src/libs/installer
parent7c2d08ca09875224ee7dca480d91a07bcc7719a6 (diff)
Add possibility to specify a control script.
Right now we support control scripts just as command line argument, but now we can also bundle it in the binary as well. This helps e.g. with running scripts during uninstallation, enables the possibility to modify the introduction page or enables headless installer builds. Task-number: QTIFW-495 Task-number: QTIFW-166 Change-Id: I6fee6a55db78ed28b1eeb8257a4febaa2703c04e Reviewed-by: Leena Miettinen <riitta-leena.miettinen@theqtcompany.com> Reviewed-by: Kai Koehne <kai.koehne@theqtcompany.com>
Diffstat (limited to 'src/libs/installer')
-rw-r--r--src/libs/installer/packagemanagergui.cpp14
-rw-r--r--src/libs/installer/packagemanagergui.h7
-rw-r--r--src/libs/installer/settings.cpp9
-rw-r--r--src/libs/installer/settings.h2
4 files changed, 13 insertions, 19 deletions
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 35a509f22..4653c7ff6 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -504,7 +504,7 @@ void PackageManagerGui::wizardPageInsertionRequested(QWidget *widget,
void PackageManagerGui::wizardPageRemovalRequested(QWidget *widget)
{
foreach (int pageId, pageIds()) {
- DynamicInstallerPage *const dynamicPage = dynamic_cast<DynamicInstallerPage*>(page(pageId));
+ DynamicInstallerPage *const dynamicPage = qobject_cast<DynamicInstallerPage*>(page(pageId));
if (dynamicPage == 0)
continue;
if (dynamicPage->widget() != widget)
@@ -1007,8 +1007,6 @@ bool IntroductionPage::validatePage()
setErrorMessage(core->error());
}
- callControlScript(QLatin1String("UpdaterSelectedCallback"));
-
if (m_updatesFetched) {
if (core->components(QInstaller::PackageManagerCore::ComponentType::Root).count() <= 0)
setErrorMessage(QString::fromLatin1("<b>%1</b>").arg(tr("No updates available.")));
@@ -1038,8 +1036,6 @@ bool IntroductionPage::validatePage()
}
}
- callControlScript(QLatin1String("PackageManagerSelectedCallback"));
-
if (m_allPackagesFetched || localPackagesTreeFetched)
setComplete(true);
}
@@ -1121,14 +1117,6 @@ void IntroductionPage::setErrorMessage(const QString &error)
#endif
}
-void IntroductionPage::callControlScript(const QString &callback)
-{
- // Initialize the gui. Needs to be done after check repositories as only then the ui can handle
- // hide of pages depending on the components.
- gui()->init();
- gui()->callControlScriptMethod(callback);
-}
-
bool IntroductionPage::validRepositoriesAvailable() const
{
const PackageManagerCore *const core = packageManagerCore();
diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h
index 6c3c56fc9..2830b1b3d 100644
--- a/src/libs/installer/packagemanagergui.h
+++ b/src/libs/installer/packagemanagergui.h
@@ -72,8 +72,7 @@ class INSTALLER_EXPORT PackageManagerGui : public QWizard
public:
explicit PackageManagerGui(PackageManagerCore *core, QWidget *parent = 0);
- virtual ~PackageManagerGui();
- virtual void init() = 0;
+ virtual ~PackageManagerGui() = 0;
void loadControlScript(const QString& scriptPath);
void callControlScriptMethod(const QString& methodName);
@@ -219,7 +218,7 @@ public:
void showMaintenanceTools();
void setMaintenanceToolsEnabled(bool enable);
- public Q_SLOTS:
+public Q_SLOTS:
void onCoreNetworkSettingsChanged();
void setMessage(const QString &msg);
void onProgressChanged(int progress);
@@ -238,8 +237,6 @@ private:
void leaving();
void showWidgets(bool show);
- void callControlScript(const QString &callback);
-
bool validRepositoriesAvailable() const;
private:
diff --git a/src/libs/installer/settings.cpp b/src/libs/installer/settings.cpp
index c00cfd794..a225d4262 100644
--- a/src/libs/installer/settings.cpp
+++ b/src/libs/installer/settings.cpp
@@ -66,6 +66,8 @@ static const QLatin1String scFtpProxy("FtpProxy");
static const QLatin1String scHttpProxy("HttpProxy");
static const QLatin1String scProxyType("ProxyType");
+const char scControlScript[] = "ControlScript";
+
template <typename T>
static QSet<T> variantListToSet(const QVariantList &list)
{
@@ -253,7 +255,7 @@ Settings Settings::fromFileAndPrefix(const QString &path, const QString &prefix,
<< scAllowSpaceInPath << scAllowNonAsciiCharacters << scWizardStyle << scTitleColor
<< scWizardDefaultWidth << scWizardDefaultHeight
<< scRepositorySettingsPageVisible << scTargetConfigurationFile
- << scRemoteRepositories << scTranslations;
+ << scRemoteRepositories << scTranslations << QLatin1String(scControlScript);
Settings s;
s.d->m_data.insert(scPrefix, prefix);
@@ -683,3 +685,8 @@ void Settings::setTranslations(const QStringList &translations)
{
d->m_data.insert(scTranslations, translations);
}
+
+QString Settings::controlScript() const
+{
+ return d->m_data.value(QLatin1String(scControlScript)).toString();
+}
diff --git a/src/libs/installer/settings.h b/src/libs/installer/settings.h
index 33f6c0ae1..a9cf08d85 100644
--- a/src/libs/installer/settings.h
+++ b/src/libs/installer/settings.h
@@ -151,6 +151,8 @@ public:
QStringList translations() const;
void setTranslations(const QStringList &translations);
+ QString controlScript() const;
+
private:
class Private;
QSharedDataPointer<Private> d;