diff options
author | jkobus <jaroslaw.kobus@digia.com> | 2014-09-22 11:55:09 +0200 |
---|---|---|
committer | Jarek Kobus <jaroslaw.kobus@digia.com> | 2014-09-25 12:56:47 +0200 |
commit | 0d529d9a8920ba308897c2ca3c69ac98109b0340 (patch) | |
tree | 78c8878f77420a460fb58a25454d21c08533234f /src/libs/installer | |
parent | f069a8927a84af9ba7825a059b5190e8177a34f6 (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.cpp | 49 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 3 |
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); |