diff options
-rw-r--r-- | src/libs/installer/packagemanagercore_p.cpp | 2 | ||||
-rw-r--r-- | src/libs/installer/uninstallercalculator.cpp | 17 | ||||
-rw-r--r-- | src/libs/installer/uninstallercalculator.h | 6 | ||||
-rw-r--r-- | tests/auto/installer/solver/tst_solver.cpp | 2 |
4 files changed, 13 insertions, 14 deletions
diff --git a/src/libs/installer/packagemanagercore_p.cpp b/src/libs/installer/packagemanagercore_p.cpp index 38909b4ea..18736e587 100644 --- a/src/libs/installer/packagemanagercore_p.cpp +++ b/src/libs/installer/packagemanagercore_p.cpp @@ -599,7 +599,7 @@ UninstallerCalculator *PackageManagerCorePrivate::uninstallerCalculator() const } } - pmcp->m_uninstallerCalculator = new UninstallerCalculator(installedComponents); + pmcp->m_uninstallerCalculator = new UninstallerCalculator(installedComponents, m_core); } return m_uninstallerCalculator; } diff --git a/src/libs/installer/uninstallercalculator.cpp b/src/libs/installer/uninstallercalculator.cpp index 10b44d80a..fc5620936 100644 --- a/src/libs/installer/uninstallercalculator.cpp +++ b/src/libs/installer/uninstallercalculator.cpp @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -42,8 +42,9 @@ namespace QInstaller { \internal */ -UninstallerCalculator::UninstallerCalculator(const QList<Component *> &installedComponents) +UninstallerCalculator::UninstallerCalculator(const QList<Component *> &installedComponents, PackageManagerCore *core) : m_installedComponents(installedComponents) + , m_core(core) { } @@ -60,9 +61,8 @@ void UninstallerCalculator::appendComponentToUninstall(Component *component) if (!component->isInstalled()) return; - PackageManagerCore *core = component->packageManagerCore(); // remove all already resolved dependees - const QList<Component *> dependeesList = core->dependees(component); + const QList<Component *> dependeesList = m_core->dependees(component); QSet<Component *> dependees = QSet<Component *>(dependeesList.begin(), dependeesList.end()).subtract(m_componentsToUninstall); @@ -134,17 +134,14 @@ void UninstallerCalculator::continueAppendComponentsToUninstall() { QList<Component*> unneededVirtualList; // Check for virtual components without dependees - foreach (Component *component, m_installedComponents) { + for (Component *component : qAsConst(m_installedComponents)) { if (component->isInstalled() && component->isVirtual() && !m_componentsToUninstall.contains(component)) { // Components with auto dependencies were handled in the previous step - if (!component->autoDependencies().isEmpty()) - continue; - if (component->forcedInstallation()) + if (!component->autoDependencies().isEmpty() || component->forcedInstallation()) continue; bool required = false; - PackageManagerCore *core = component->packageManagerCore(); - foreach (Component *dependee, core->dependees(component)) { + for (Component *dependee : m_core->dependees(component)) { if (dependee->isInstalled() && !m_componentsToUninstall.contains(dependee)) { required = true; break; diff --git a/src/libs/installer/uninstallercalculator.h b/src/libs/installer/uninstallercalculator.h index a684c92cc..4d1f8816a 100644 --- a/src/libs/installer/uninstallercalculator.h +++ b/src/libs/installer/uninstallercalculator.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2017 The Qt Company Ltd. +** Copyright (C) 2022 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -38,11 +38,12 @@ namespace QInstaller { class Component; +class PackageManagerCore; class INSTALLER_EXPORT UninstallerCalculator { public: - UninstallerCalculator(const QList<Component *> &installedComponents); + UninstallerCalculator(const QList<Component *> &installedComponents, PackageManagerCore *core); QSet<Component*> componentsToUninstall() const; @@ -55,6 +56,7 @@ private: QList<Component *> m_installedComponents; QSet<Component *> m_componentsToUninstall; + PackageManagerCore *m_core; }; } diff --git a/tests/auto/installer/solver/tst_solver.cpp b/tests/auto/installer/solver/tst_solver.cpp index d1c3aaa14..2f4e17855 100644 --- a/tests/auto/installer/solver/tst_solver.cpp +++ b/tests/auto/installer/solver/tst_solver.cpp @@ -290,7 +290,7 @@ private slots: QFETCH(QList<Component *> , installedComponents); QFETCH(QSet<Component *> , expectedResult); - UninstallerCalculator calc(installedComponents); + UninstallerCalculator calc(installedComponents, core); calc.appendComponentsToUninstall(selectedToUninstall); QSet<Component *> result = calc.componentsToUninstall(); |