diff options
author | Katja Marttila <katja.marttila@qt.io> | 2020-06-22 07:18:10 +0300 |
---|---|---|
committer | Katja Marttila <katja.marttila@qt.io> | 2020-06-25 08:42:24 +0300 |
commit | f546080906dda47adcb62ef30f118fb8a044e03f (patch) | |
tree | 0d87470fe60d5f79ee0d983d55c61a4b829512bd | |
parent | 7dc2fd7e810d9bc96d2b4c0bfda1df3fe4bc8b6c (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.qdoc | 12 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 20 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 8 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 1 | ||||
-rw-r--r-- | src/libs/installer/packagemanagergui.cpp | 8 |
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); } /*! |