diff options
author | Jarek Kobus <jaroslaw.kobus@digia.com> | 2014-09-12 08:51:28 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@digia.com> | 2014-09-25 12:56:27 +0200 |
commit | 799d6362117696af748cd4dd031611b76289ebba (patch) | |
tree | a3997e19c9e69590781bb92b0286692be2d267cf /src | |
parent | 9b1a8671109895c908aaba2f2b507439bcce4d60 (diff) |
Differentiate install reason types
Change-Id: I7964721fd0a124f54f9a4315e8b4ba98491fa253
Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 40 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 16 |
2 files changed, 44 insertions, 12 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 3017bd416..cea9c2b07 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -189,19 +189,39 @@ InstallerCalculator::InstallerCalculator(PackageManagerCore *publicManager, Pack } -void InstallerCalculator::insertInstallReason(Component *component, const QString &reason) +void InstallerCalculator::insertInstallReason(Component *component, + InstallReasonType installReason, + const QString &referencedComponentName) { // keep the first reason - if (m_toInstallComponentIdReasonHash.value(component->name()).isEmpty()) - m_toInstallComponentIdReasonHash.insert(component->name(), reason); + if (m_toInstallComponentIdReasonHash.contains(component->name())) + return; + m_toInstallComponentIdReasonHash.insert(component->name(), + qMakePair(installReason, referencedComponentName)); +} + +InstallerCalculator::InstallReasonType InstallerCalculator::installReasonType(Component *component) const +{ + return m_toInstallComponentIdReasonHash.value(component->name(), + qMakePair(InstallerCalculator::Selected, QString())).first; +} + +QString InstallerCalculator::installReasonReferencedComponent(Component *component) const +{ + return m_toInstallComponentIdReasonHash.value(component->name(), + qMakePair(InstallerCalculator::Selected, QString())).second; } QString InstallerCalculator::installReason(Component *component) const { - const QString reason = m_toInstallComponentIdReasonHash.value(component->name()); - if (reason.isEmpty()) - return PackageManagerCorePrivate::tr("Selected Component(s) without Dependencies"); - return reason; + InstallerCalculator::InstallReasonType reason = installReasonType(component); + switch (reason) { + case Automatic: return PackageManagerCorePrivate::tr("Components added as automatic dependencies:"); + case Dependent: return PackageManagerCorePrivate::tr("Components added as dependency for '%1':").arg(installReasonReferencedComponent(component)); + case Resolved: return PackageManagerCorePrivate::tr("Components that have resolved dependencies:"); + case Selected: return PackageManagerCorePrivate::tr("Selected components without dependencies:"); + } + return QString(); } QList<Component*> InstallerCalculator::orderedComponentsToInstall() const @@ -270,7 +290,7 @@ bool InstallerCalculator::appendComponentsToInstall(const QList<Component *> &co // well. if (component->isAutoDependOn(m_toInstallComponentIds)) { foundAutoDependOnList.append(component); - insertInstallReason(component, PackageManagerCorePrivate::tr("Component(s) added as automatic dependencies")); + insertInstallReason(component, InstallerCalculator::Automatic); } } } @@ -311,7 +331,7 @@ bool InstallerCalculator::appendComponentToInstall(Component *component) m_visitedComponents[component].insert(dependencyComponent); // add needed dependency components to the next run - insertInstallReason(dependencyComponent, PackageManagerCorePrivate::tr("Added as dependency for %1.").arg(component->name())); + insertInstallReason(dependencyComponent, InstallerCalculator::Dependent, component->name()); if (!appendComponentToInstall(dependencyComponent)) return false; @@ -320,7 +340,7 @@ bool InstallerCalculator::appendComponentToInstall(Component *component) if (!m_toInstallComponentIds.contains(component->name())) { realAppendToInstallComponents(component); - insertInstallReason(component, PackageManagerCorePrivate::tr("Component(s) that have resolved Dependencies")); + insertInstallReason(component, InstallerCalculator::Resolved); } return true; } diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index e37ed980f..dd99b5a7c 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -97,6 +97,16 @@ class InstallerCalculator public: InstallerCalculator(PackageManagerCore *publicManager, PackageManagerCorePrivate *privateManager); + enum InstallReasonType + { + Automatic, // "Component(s) added as automatic dependencies" + Dependent, // "Added as dependency for %1." + Resolved, // "Component(s) that have resolved Dependencies" + Selected // "Selected Component(s) without Dependencies" + }; + + InstallReasonType installReasonType(Component *component) const; + QString installReasonReferencedComponent(Component *component) const; QString installReason(Component *component) const; QList<Component*> orderedComponentsToInstall() const; QString componentsToInstallError() const; @@ -104,7 +114,9 @@ public: bool appendComponentsToInstall(const QList<Component*> &components); private: - void insertInstallReason(Component *component, const QString &reason); + void insertInstallReason(Component *component, + InstallReasonType installReasonType, + const QString &referencedComponentName = QString()); void realAppendToInstallComponents(Component *component); bool appendComponentToInstall(Component *components); @@ -118,7 +130,7 @@ private: QList<Component*> m_orderedComponentsToInstall; //we can't use this reason hash as component id hash, because some reasons are ready before //the component is added - QHash<QString, QString> m_toInstallComponentIdReasonHash; + QHash<QString, QPair<InstallReasonType, QString> > m_toInstallComponentIdReasonHash; }; class PackageManagerCorePrivate : public QObject |