summaryrefslogtreecommitdiffstats
path: root/src/libs/installer
diff options
context:
space:
mode:
authorjkobus <jaroslaw.kobus@digia.com>2014-09-22 11:55:09 +0200
committerJarek Kobus <jaroslaw.kobus@digia.com>2014-09-25 12:56:47 +0200
commit0d529d9a8920ba308897c2ca3c69ac98109b0340 (patch)
tree78c8878f77420a460fb58a25454d21c08533234f /src/libs/installer
parentf069a8927a84af9ba7825a059b5190e8177a34f6 (diff)
Get rid of subComponentByName()
Simplify componentByName() by removing recursive code. Change-Id: I11cf8efd04869ab2876bd4e35e04fa4f46cd4032 Reviewed-by: Kai Koehne <kai.koehne@digia.com>
Diffstat (limited to 'src/libs/installer')
-rw-r--r--src/libs/installer/packagemanagercore.cpp49
-rw-r--r--src/libs/installer/packagemanagercore.h3
2 files changed, 14 insertions, 38 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp
index e9acdc580..e83b0471c 100644
--- a/src/libs/installer/packagemanagercore.cpp
+++ b/src/libs/installer/packagemanagercore.cpp
@@ -377,38 +377,6 @@ static bool componentMatches(const Component *component, const QString &name,
return PackageManagerCore::versionMatches(component->value(scVersion), version);
}
-Component *PackageManagerCore::subComponentByName(const QInstaller::PackageManagerCore *installer,
- const QString &name, const QString &version, Component *check)
-{
- if (name.isEmpty())
- return 0;
-
- if (check != 0 && componentMatches(check, name, version))
- return check;
-
- if (!installer->isUpdater()) {
- QList<Component*> rootComponents;
- if (check == 0)
- rootComponents = installer->rootComponents();
- else
- rootComponents = check->childComponents(Component::DirectChildrenOnly);
-
- foreach (QInstaller::Component *component, rootComponents) {
- Component *const result = subComponentByName(installer, name, version, component);
- if (result != 0)
- return result;
- }
- } else {
- const QList<Component*> updaterComponents = installer->updaterComponents()
- + installer->d->m_updaterComponentsDeps;
- foreach (QInstaller::Component *component, updaterComponents) {
- if (componentMatches(component, name, version))
- return component;
- }
- }
- return 0;
-}
-
void PackageManagerCore::writeMaintenanceTool()
{
if (d->m_needToWriteMaintenanceTool) {
@@ -1262,13 +1230,24 @@ Component *PackageManagerCore::componentByName(const QString &name) const
if (name.isEmpty())
return 0;
+ QString fixedVersion;
+ QString fixedName = name;
if (name.contains(QChar::fromLatin1('-'))) {
// the last part is considered to be the version, then
- const QString version = name.section(QLatin1Char('-'), 1);
- return subComponentByName(this, name.section(QLatin1Char('-'), 0, 0), version);
+ fixedVersion = name.section(QLatin1Char('-'), 1);
+ fixedName = name.section(QLatin1Char('-'), 0, 0);
}
- return subComponentByName(this, name);
+ const QList<Component *> components = isUpdater()
+ ? updaterComponents() + d->m_updaterComponentsDeps
+ : rootAndChildComponents();
+
+ foreach (Component *component, components) {
+ if (componentMatches(component, fixedName, fixedVersion))
+ return component;
+ }
+
+ return 0;
}
/*!
diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h
index 7de374b47..5e372d53e 100644
--- a/src/libs/installer/packagemanagercore.h
+++ b/src/libs/installer/packagemanagercore.h
@@ -327,9 +327,6 @@ private:
bool fetchAllPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages);
bool fetchUpdaterPackages(const PackagesList &remotePackages, const LocalPackagesHash &localPackages);
- static Component *subComponentByName(const QInstaller::PackageManagerCore *installer, const QString &name,
- const QString &version = QString(), Component *check = 0);
-
void updateDisplayVersions(const QString &displayKey);
QString findDisplayVersion(const QString &componentName, const QHash<QString, QInstaller::Component*> &components,
const QString& versionKey, QHash<QString, bool> &visited);