diff options
author | kh1 <karsten.heimrich@digia.com> | 2014-10-01 22:10:04 +0200 |
---|---|---|
committer | Karsten Heimrich <karsten.heimrich@digia.com> | 2014-10-06 16:06:40 +0200 |
commit | ce0f0498aab6f0c7101ae8a8de36ca1f2ce3b056 (patch) | |
tree | 8658d17706a1ad223c9568ca8f298a79ebcaf64e /src | |
parent | 62cf969c09ef821a0f8153e2fd9538c6664e8bef (diff) |
Remove PackageManagerCore from InstallerCalculator
Change-Id: Id6e784c77d6f119d4a2aa028d5c14264bf9c457b
Reviewed-by: Jarek Kobus <jaroslaw.kobus@digia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/installer/packagemanagercore.cpp | 14 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore.h | 2 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 20 | ||||
-rw-r--r-- | src/libs/installer/packagemanagercore_p.h | 5 |
4 files changed, 24 insertions, 17 deletions
diff --git a/src/libs/installer/packagemanagercore.cpp b/src/libs/installer/packagemanagercore.cpp index 67aabce94..e52053ba9 100644 --- a/src/libs/installer/packagemanagercore.cpp +++ b/src/libs/installer/packagemanagercore.cpp @@ -1195,13 +1195,18 @@ void PackageManagerCore::appendUpdaterComponent(Component *component) /*! \qmlmethod Component QInstaller::componentByName(string name) - Returns a component matching \a name. \a name can also contains a version requirement. - E.g. "org.qt-project.sdk.qt" returns any component with that name, "org.qt-project.sdk.qt->=4.5" requires - the returned component to have at least version 4.5. + Returns a component matching \a name. \a name can also contain a version requirement. + For example "org.qt-project.sdk.qt" returns any component with that name, + "org.qt-project.sdk.qt->=4.5" requires the returned component to have at least version 4.5. If no component matches the requirement, 0 is returned. */ Component *PackageManagerCore::componentByName(const QString &name) const { + return componentByName(name, components(ComponentType::AllNoReplacements)); +} + +Component *PackageManagerCore::componentByName(const QString &name, const QList<Component *> &components) +{ if (name.isEmpty()) return 0; @@ -1213,8 +1218,7 @@ Component *PackageManagerCore::componentByName(const QString &name) const fixedName = name.section(QLatin1Char('-'), 0, 0); } - const QList<Component *> list = components(ComponentType::AllNoReplacements); - foreach (Component *component, list) { + foreach (Component *component, components) { if (componentMatches(component, fixedName, fixedVersion)) return component; } diff --git a/src/libs/installer/packagemanagercore.h b/src/libs/installer/packagemanagercore.h index c85c42d8e..338775159 100644 --- a/src/libs/installer/packagemanagercore.h +++ b/src/libs/installer/packagemanagercore.h @@ -123,6 +123,8 @@ public: static bool createLocalRepositoryFromBinary(); static void setCreateLocalRepositoryFromBinary(bool create); + static Component *componentByName(const QString &name, const QList<Component *> &components); + bool fetchLocalPackagesTree(); LocalPackagesHash localInstalledPackages(); diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 200086217..4e973afc5 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -182,9 +182,10 @@ static void deferredRename(const QString &oldName, const QString &newName, bool #endif } -InstallerCalculator::InstallerCalculator(PackageManagerCore *publicManager, PackageManagerCorePrivate *privateManager) - : m_publicManager(publicManager), - m_privateManager(privateManager) +InstallerCalculator::InstallerCalculator(const QList<Component *> &allComponents, + PackageManagerCorePrivate *privateManager) + : m_privateManager(privateManager), + m_allComponents(allComponents) { } @@ -280,12 +281,9 @@ bool InstallerCalculator::appendComponentsToInstall(const QList<Component *> &co return false; } - const QList<Component*> relevantComponentForAutoDependOn = - m_publicManager->components(PackageManagerCore::ComponentType::AllNoReplacements); - QList<Component *> foundAutoDependOnList; // All regular dependencies are resolved. Now we are looking for auto depend on components. - foreach (Component *component, relevantComponentForAutoDependOn) { + foreach (Component *component, m_allComponents) { // If a components is already installed or is scheduled for installation, no need to check for // auto depend installation. if ((!component->isInstalled() || component->updateRequested()) @@ -310,7 +308,7 @@ bool InstallerCalculator::appendComponentToInstall(Component *component) foreach (const QString &dependencyComponentName, allDependencies) { //componentByName returns 0 if dependencyComponentName contains a version which is not available - Component *dependencyComponent = m_publicManager->componentByName(dependencyComponentName); + Component *dependencyComponent = PackageManagerCore::componentByName(dependencyComponentName, m_allComponents); if (!dependencyComponent) { const QString errorMessage = PackageManagerCorePrivate::tr("Cannot find missing dependency (%1) for %2.") .arg(dependencyComponentName, component->name()); @@ -651,8 +649,10 @@ void PackageManagerCorePrivate::clearInstallerCalculator() InstallerCalculator *PackageManagerCorePrivate::installerCalculator() const { if (!m_installerCalculator) { - PackageManagerCorePrivate *that = (PackageManagerCorePrivate *)(this); - that->m_installerCalculator = new InstallerCalculator(m_core, that); + PackageManagerCorePrivate *const pmcp = const_cast<PackageManagerCorePrivate *> (this); + pmcp->m_installerCalculator = new InstallerCalculator( + m_core->components(PackageManagerCore::ComponentType::AllNoReplacements), + pmcp); } return m_installerCalculator; } diff --git a/src/libs/installer/packagemanagercore_p.h b/src/libs/installer/packagemanagercore_p.h index 25d6d1fb0..6c088cf42 100644 --- a/src/libs/installer/packagemanagercore_p.h +++ b/src/libs/installer/packagemanagercore_p.h @@ -95,7 +95,8 @@ public: class InstallerCalculator { public: - InstallerCalculator(PackageManagerCore *publicManager, PackageManagerCorePrivate *privateManager); + InstallerCalculator(const QList<Component *> &allComponents, + PackageManagerCorePrivate *privateManager); enum InstallReasonType { @@ -121,9 +122,9 @@ private: bool appendComponentToInstall(Component *components); QString recursionError(Component *component); - PackageManagerCore *m_publicManager; PackageManagerCorePrivate *m_privateManager; + QList<Component*> m_allComponents; QHash<Component*, QSet<Component*> > m_visitedComponents; QSet<QString> m_toInstallComponentIds; //for faster lookups QString m_componentsToInstallError; |