summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorkh1 <karsten.heimrich@digia.com>2014-10-01 22:10:04 +0200
committerKarsten Heimrich <karsten.heimrich@digia.com>2014-10-06 16:06:40 +0200
commitce0f0498aab6f0c7101ae8a8de36ca1f2ce3b056 (patch)
tree8658d17706a1ad223c9568ca8f298a79ebcaf64e /src
parent62cf969c09ef821a0f8153e2fd9538c6664e8bef (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.cpp14
-rw-r--r--src/libs/installer/packagemanagercore.h2
-rw-r--r--src/libs/installer/packagemanagercore_p.cpp20
-rw-r--r--src/libs/installer/packagemanagercore_p.h5
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;