summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@digia.com>2014-09-12 08:51:28 +0200
committerJarek Kobus <jaroslaw.kobus@digia.com>2014-09-25 12:56:27 +0200
commit799d6362117696af748cd4dd031611b76289ebba (patch)
treea3997e19c9e69590781bb92b0286692be2d267cf /src
parent9b1a8671109895c908aaba2f2b507439bcce4d60 (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.cpp40
-rw-r--r--src/libs/installer/packagemanagercore_p.h16
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