diff options
author | Katja Marttila <katja.marttila@qt.io> | 2018-02-26 12:36:04 +0200 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2018-11-06 05:55:33 +0000 |
commit | bc545c65836cf81533c54438f0113ff2a76bfd52 (patch) | |
tree | 0c356ff2f8c1c35206f604e119a92681a17c4218 | |
parent | a2b41038222b43dd593e57a586a9113395fca678 (diff) |
Register virtual component for uninstall
Task-number: QTIFW-1102
Change-Id: I5033f095eece1f1e588c00f518cf7d9d046c2003
Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
10 files changed, 71 insertions, 0 deletions
diff --git a/examples/registervirtualcomponentforuninstall/README b/examples/registervirtualcomponentforuninstall/README new file mode 100644 index 000000000..930efa5ed --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/README @@ -0,0 +1,6 @@ +Shows how to register virtual component to uninstall in component script. + +Generate installer with + +binarycreator --offline-only -c config/config.xml -p packages installer + diff --git a/examples/registervirtualcomponentforuninstall/config/config.xml b/examples/registervirtualcomponentforuninstall/config/config.xml new file mode 100644 index 000000000..48b5c7438 --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/config/config.xml @@ -0,0 +1,10 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Installer> + <Name>Register Component to Uninstall Example</Name> + <Version>1.0.0</Version> + <Title>Register Component to Uninstall Example</Title> + <Publisher>Qt-Project</Publisher> + <StartMenuDir>Qt IFW Examples</StartMenuDir> + <TargetDir>@HomeDir@/IfwExamples/registercomponenttouninstall</TargetDir> + <ControlScript>controller.qs</ControlScript> +</Installer> diff --git a/examples/registervirtualcomponentforuninstall/config/controller.qs b/examples/registervirtualcomponentforuninstall/config/controller.qs new file mode 100644 index 000000000..ba1e74651 --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/config/controller.qs @@ -0,0 +1,9 @@ +function Controller() { + +} + +Controller.prototype.ComponentSelectionPageCallback = function() { + + var page = gui.pageWidgetByObjectName("ComponentSelectionPage"); + page.addVirtualComponentToUninstall("component") +} diff --git a/examples/registervirtualcomponentforuninstall/packages/component/data/selectedcomponent b/examples/registervirtualcomponentforuninstall/packages/component/data/selectedcomponent new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/packages/component/data/selectedcomponent diff --git a/examples/registervirtualcomponentforuninstall/packages/component/meta/package.xml b/examples/registervirtualcomponentforuninstall/packages/component/meta/package.xml new file mode 100644 index 000000000..9e02c2885 --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/packages/component/meta/package.xml @@ -0,0 +1,8 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Package> + <DisplayName>Component selected from script</DisplayName> + <Description>This component is selected to uninstall in script</Description> + <Version>1.0.0-1</Version> + <ReleaseDate>2018-02-02</ReleaseDate> + <Virtual>true</Virtual> +</Package> diff --git a/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/data/registercomponent b/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/data/registercomponent new file mode 100644 index 000000000..e69de29bb --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/data/registercomponent diff --git a/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/meta/package.xml b/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/meta/package.xml new file mode 100644 index 000000000..431ff2441 --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/meta/package.xml @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Package> + <DisplayName>Registers component for install</DisplayName> + <Description>Register a component for installation</Description> + <Version>1.0.0-1</Version> + <ReleaseDate>2013-01-01</ReleaseDate> + <Default>true</Default> + <Dependencies>component</Dependencies> +</Package> diff --git a/examples/registervirtualcomponentforuninstall/registercomponentforinstall.pro b/examples/registervirtualcomponentforuninstall/registercomponentforinstall.pro new file mode 100644 index 000000000..415df49d5 --- /dev/null +++ b/examples/registervirtualcomponentforuninstall/registercomponentforinstall.pro @@ -0,0 +1,13 @@ +TEMPLATE = aux + +INSTALLER = installer + +INPUT = $$PWD/config/config.xml $$PWD/packages +example.input = INPUT +example.output = $$INSTALLER +example.commands = ../../bin/binarycreator -c $$PWD/config/config.xml -p $$PWD/packages ${QMAKE_FILE_OUT} +example.CONFIG += target_predeps no_link combine + +QMAKE_EXTRA_COMPILERS += example + +OTHER_FILES = README diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp index 5ee3d14fc..9ed02249f 100644 --- a/src/libs/installer/packagemanagergui.cpp +++ b/src/libs/installer/packagemanagergui.cpp @@ -2273,6 +2273,21 @@ void ComponentSelectionPage::allowCompressedRepositoryInstall() d->allowCompressedRepositoryInstall(); } +bool ComponentSelectionPage::addVirtualComponentToUninstall(const QString &name) +{ + PackageManagerCore *core = packageManagerCore(); + const QList<Component *> allComponents = core->components(PackageManagerCore::ComponentType::All); + Component *component = PackageManagerCore::componentByName( + name, allComponents); + if (component && component->isInstalled() && component->isVirtual()) { + component->setCheckState(Qt::Unchecked); + core->componentsToInstallNeedsRecalculation(); + qDebug() << "Virtual component " << name << " was selected for uninstall by script."; + return true; + } + return false; +} + void ComponentSelectionPage::setModified(bool modified) { setComplete(modified); diff --git a/src/libs/installer/packagemanagergui.h b/src/libs/installer/packagemanagergui.h index 238e22a62..4694e723b 100644 --- a/src/libs/installer/packagemanagergui.h +++ b/src/libs/installer/packagemanagergui.h @@ -311,6 +311,7 @@ public: Q_INVOKABLE void selectComponent(const QString &id); Q_INVOKABLE void deselectComponent(const QString &id); Q_INVOKABLE void allowCompressedRepositoryInstall(); + Q_INVOKABLE bool addVirtualComponentToUninstall(const QString &name); protected: void entering(); |