diff options
author | jkobus <jaroslaw.kobus@digia.com> | 2014-09-11 12:24:43 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@digia.com> | 2014-09-25 10:00:12 +0200 |
commit | 71e524a64da7480d719cd2f09387da9a0eb3e179 (patch) | |
tree | 709d0020e328f34a9059360dfffc7fe5688e671b /src/libs/installer | |
parent | f6a3c926d1c6980706c5cf0e5387201018beb827 (diff) |
Add rootAndChildComponents() method.
Change-Id: I4f7dd4777aafffabcf3e8a6b081478f32b33da97
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 21 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 13 |
3 files changed, 20 insertions, 16 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index d6a31286c..4d6358803 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1186,6 +1186,18 @@ void PackageManagerCore::appendRootComponent(Component *component) } /*! + Returns a list of root components and all of their descendant components if run in installer or package manager mode. + Might return an empty list in case the engine has only been run in updater mode or no components have been fetched. +*/ +QList<Component*> PackageManagerCore::rootAndChildComponents() const +{ + QList<Component*> result = d->m_rootComponents; + foreach (QInstaller::Component *component, d->m_rootComponents) + result += component->childComponents(Component::Descendants); + return result; +} + +/*! \qmlmethod int QInstaller::updaterComponentCount() Returns the number of components in the list for updater mode. Might return 0 in case the engine has only @@ -1234,10 +1246,7 @@ QList<Component*> PackageManagerCore::availableComponents() const if (isUpdater()) return d->m_updaterComponents + d->m_updaterComponentsDeps + d->m_updaterDependencyReplacements; - QList<Component*> result = d->m_rootComponents; - foreach (QInstaller::Component *component, d->m_rootComponents) - result += component->childComponents(Component::Descendants); - return result + d->m_rootDependencyReplacements; + return rootAndChildComponents() + d->m_rootDependencyReplacements; } /*! @@ -1283,9 +1292,7 @@ bool PackageManagerCore::calculateComponentsToInstall() const } } else if (!isUpdater()) { // relevant means all components which are not replaced - QList<Component*> relevantComponents = rootComponents(); - foreach (QInstaller::Component *component, rootComponents()) - relevantComponents += component->childComponents(Component::Descendants); + const QList<Component*> relevantComponents = rootAndChildComponents(); foreach (Component *component, relevantComponents) { // ask for all components which will be installed to get all dependencies // even dependencies which are changed without an increased version diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index d8bcc86a6..7de374b47 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -192,6 +192,8 @@ public: QList<Component*> rootComponents() const; void appendRootComponent(Component *components); + QList<Component*> rootAndChildComponents() const; + Q_INVOKABLE int updaterComponentCount() const; Component *updaterComponent(int i) const; QList<Component*> updaterComponents() const; diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 9fc81513c..011a79500 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -493,15 +493,6 @@ bool PackageManagerCorePrivate::appendComponentsToInstall(const QList<Component return true; } - QList<Component*> relevantComponentForAutoDependOn; - if (isUpdater()) - relevantComponentForAutoDependOn = m_updaterComponents + m_updaterComponentsDeps; - else { - relevantComponentForAutoDependOn = m_rootComponents; - foreach (QInstaller::Component *component, m_rootComponents) - relevantComponentForAutoDependOn += component->childComponents(Component::Descendants); - } - QList<Component*> notAppendedComponents; // for example components with unresolved dependencies foreach (Component *component, components){ if (m_toInstallComponentIds.contains(component->name())) { @@ -525,6 +516,10 @@ bool PackageManagerCorePrivate::appendComponentsToInstall(const QList<Component return false; } + const QList<Component*> relevantComponentForAutoDependOn = isUpdater() + ? m_updaterComponents + m_updaterComponentsDeps + : m_core->rootAndChildComponents(); + QList<Component *> foundAutoDependOnList; // All regular dependencies are resolved. Now we are looking for auto depend on components. foreach (Component *component, relevantComponentForAutoDependOn) { |