summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2018-02-26 12:36:04 +0200
committerKatja Marttila <katja.marttila@qt.io>2018-11-06 05:55:33 +0000
commitbc545c65836cf81533c54438f0113ff2a76bfd52 (patch)
tree0c356ff2f8c1c35206f604e119a92681a17c4218
parenta2b41038222b43dd593e57a586a9113395fca678 (diff)
Register virtual component for uninstall
Task-number: QTIFW-1102 Change-Id: I5033f095eece1f1e588c00f518cf7d9d046c2003 Reviewed-by: Iikka Eklund <iikka.eklund@qt.io>
-rw-r--r--examples/registervirtualcomponentforuninstall/README6
-rw-r--r--examples/registervirtualcomponentforuninstall/config/config.xml10
-rw-r--r--examples/registervirtualcomponentforuninstall/config/controller.qs9
-rw-r--r--examples/registervirtualcomponentforuninstall/packages/component/data/selectedcomponent0
-rw-r--r--examples/registervirtualcomponentforuninstall/packages/component/meta/package.xml8
-rw-r--r--examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/data/registercomponent0
-rw-r--r--examples/registervirtualcomponentforuninstall/packages/org.qtproject.ifw.example.registercomponent/meta/package.xml9
-rw-r--r--examples/registervirtualcomponentforuninstall/registercomponentforinstall.pro13
-rw-r--r--src/libs/installer/packagemanagergui.cpp15
-rw-r--r--src/libs/installer/packagemanagergui.h1
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();