summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKatja Marttila <katja.marttila@qt.io>2020-06-22 07:18:10 +0300
committerKatja Marttila <katja.marttila@qt.io>2020-06-25 08:42:24 +0300
commitf546080906dda47adcb62ef30f118fb8a044e03f (patch)
tree0d87470fe60d5f79ee0d983d55c61a4b829512bd
parent7dc2fd7e810d9bc96d2b4c0bfda1df3fe4bc8b6c (diff)
Add possibility to select/deselect component from script using core
We might not have componentselection page visible, so we need a possibility to select/deselect components also using core. Task-number: QTIFW-1847 Change-Id: I85ccf0602144f843c15ef7c0818ba435d36bdac5 Reviewed-by: Arttu Tarkiainen <arttu.tarkiainen@qt.io>
-rw-r--r--doc/scripting-api/packagemanagercore.qdoc12
-rw-r--r--src/libs/installer/packagemanagercore.cpp20
-rw-r--r--src/libs/installer/packagemanagercore.h2
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp8
-rw-r--r--src/libs/installer/packagemanagercore_p.h1
-rw-r--r--src/libs/installer/packagemanagergui.cpp8
6 files changed, 45 insertions, 6 deletions
diff --git a/doc/scripting-api/packagemanagercore.qdoc b/doc/scripting-api/packagemanagercore.qdoc
index cb11cef0d..5c35dccad 100644
--- a/doc/scripting-api/packagemanagercore.qdoc
+++ b/doc/scripting-api/packagemanagercore.qdoc
@@ -273,6 +273,18 @@
*/
/*!
+ \qmlmethod void installer::selectComponent(string id)
+
+ Selects the component with \a id.
+*/
+
+/*!
+ \qmlmethod void installer::deselectComponent(string id)
+
+ Deselects the component with \a id.
+*/
+
+/*!
\qmlmethod void installer::setCompleteUninstallation(bool complete)
Sets the uninstallation to be \a complete. If \a complete is false, only components deselected
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index 73909e365..3462e7147 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -1658,6 +1658,26 @@ void PackageManagerCore::setValidatorForCustomPage(Component *component, const Q
}
/*!
+ Selects the component with \a id.
+ \sa {installer::selectComponent}{installer.selectComponent}
+ \sa deselectComponent()
+*/
+void PackageManagerCore::selectComponent(const QString &id)
+{
+ d->setComponentSelection(id, Qt::Checked);
+}
+
+/*!
+ Deselects the component with \a id.
+ \sa {installer::deselectComponent}{installer.deselectComponent}
+ \sa selectComponent()
+*/
+void PackageManagerCore::deselectComponent(const QString &id)
+{
+ d->setComponentSelection(id, Qt::Unchecked);
+}
+
+/*!
\fn PackageManagerCore::addWizardPageItem(QInstaller::Component * component, const QString & name, int page)
Adds the widget with the object name \a name registered by \a component as a GUI element
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index 13b4c47ad..66efb6539 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -286,6 +286,8 @@ public:
Q_INVOKABLE bool setDefaultPageVisible(int page, bool visible);
Q_INVOKABLE void setValidatorForCustomPage(QInstaller::Component *component, const QString &name,
const QString &callbackName);
+ Q_INVOKABLE void selectComponent(const QString &id);
+ Q_INVOKABLE void deselectComponent(const QString &id);
void rollBackInstallation();
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp
index 5fdba4bd0..49df7958d 100644
--- a/src/libs/installer/packagemanagercore_p.cpp
+++ b/src/libs/installer/packagemanagercore_p.cpp
@@ -2016,6 +2016,14 @@ bool PackageManagerCorePrivate::runningProcessesFound()
return false;
}
+void PackageManagerCorePrivate::setComponentSelection(const QString &id, Qt::CheckState state)
+{
+ ComponentModel *model = m_core->isUpdater() ? m_core->updaterComponentModel() : m_core->defaultComponentModel();
+ const QModelIndex &idx = model->indexFromComponentName(id);
+ if (idx.isValid())
+ model->setData(idx, state, Qt::CheckStateRole);
+}
+
// -- private
void PackageManagerCorePrivate::deleteMaintenanceTool()
diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h
index d75a4a0ce..27baec1aa 100644
--- a/src/libs/installer/packagemanagercore_p.h
+++ b/src/libs/installer/packagemanagercore_p.h
@@ -164,6 +164,7 @@ public:
bool adminRightsGained = false);
bool runningProcessesFound();
+ void setComponentSelection(const QString &id, Qt::CheckState state);
signals:
void installationStarted();
diff --git a/src/libs/installer/packagemanagergui.cpp b/src/libs/installer/packagemanagergui.cpp
index 090465b28..f1496ce9f 100644
--- a/src/libs/installer/packagemanagergui.cpp
+++ b/src/libs/installer/packagemanagergui.cpp
@@ -2149,9 +2149,7 @@ void ComponentSelectionPage::selectDefault()
*/
void ComponentSelectionPage::selectComponent(const QString &id)
{
- const QModelIndex &idx = d->m_currentModel->indexFromComponentName(id);
- if (idx.isValid())
- d->m_currentModel->setData(idx, Qt::Checked, Qt::CheckStateRole);
+ d->m_core->selectComponent(id);
}
/*!
@@ -2159,9 +2157,7 @@ void ComponentSelectionPage::selectComponent(const QString &id)
*/
void ComponentSelectionPage::deselectComponent(const QString &id)
{
- const QModelIndex &idx = d->m_currentModel->indexFromComponentName(id);
- if (idx.isValid())
- d->m_currentModel->setData(idx, Qt::Unchecked, Qt::CheckStateRole);
+ d->m_core->deselectComponent(id);
}
/*!