diff options
Diffstat (limited to 'src/libs/installer/installercalculator.h')
-rw-r--r-- | src/libs/installer/installercalculator.h | 62 |
1 files changed, 23 insertions, 39 deletions
diff --git a/src/libs/installer/installercalculator.h b/src/libs/installer/installercalculator.h index 21b3775eb..e542dc664 100644 --- a/src/libs/installer/installercalculator.h +++ b/src/libs/installer/installercalculator.h @@ -1,6 +1,6 @@ /************************************************************************** ** -** Copyright (C) 2022 The Qt Company Ltd. +** Copyright (C) 2023 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt Installer Framework. @@ -30,6 +30,7 @@ #include "installer_global.h" #include "qinstallerglobal.h" +#include "calculatorbase.h" #include <QHash> #include <QList> @@ -39,58 +40,41 @@ namespace QInstaller { class Component; +class ComponentAlias; +class PackageManagerCore; -class INSTALLER_EXPORT InstallerCalculator +class INSTALLER_EXPORT InstallerCalculator : public CalculatorBase { public: - InstallerCalculator(PackageManagerCore *core, const QList<Component *> &allComponents, const AutoDependencyHash &autoDependencyComponentHash); + InstallerCalculator(PackageManagerCore *core, const AutoDependencyHash &autoDependencyComponentHash); + ~InstallerCalculator(); - enum InstallReasonType - { - Selected, // "Selected Component(s) without Dependencies" - Automatic, // "Component(s) added as automatic dependencies" - Dependent, // "Added as dependency for %1." - Resolved // "Component(s) that have resolved Dependencies" - }; + bool solve(); + bool solve(const QList<Component *> &components) override; + bool solve(const QList<ComponentAlias *> &aliases); - InstallReasonType installReasonType(const Component *c) const; - QString installReason(const Component *component) const; - QList<Component*> orderedComponentsToInstall() const; - QString componentsToInstallError() const; - - bool appendComponentsToInstall(const QList<Component*> &components, bool modelReset = false, const bool revertFromInstall = false); - bool removeComponentsFromInstall(const QList<Component*> &components); + QString resolutionText(Component *component) const override; private: - QString installReasonReferencedComponent(const Component *component) const; - void insertInstallReason(const Component *component, - const InstallReasonType installReason, - const QString &referencedComponentName = QString(), - const bool revertFromInstall = false); - void realAppendToInstallComponents(Component *component, const QString &version, const bool revertFromInstall); - bool appendComponentToInstall(Component *component, const QString &version, const bool revertFromInstall); - QString recursionError(const Component *component) const; - QSet<Component *> autodependencyComponents(const bool revertFromInstall); + bool solveComponent(Component *component, const QString &version = QString()) override; + bool solveAlias(ComponentAlias *alias); + + void addComponentForInstall(Component *component, const QString &version = QString()); + bool addComponentsFromAlias(ComponentAlias *alias); + QSet<Component *> autodependencyComponents(); + QString recursionError(Component *component) const; + + bool updateCheckState(Component *component, Qt::CheckState state); private: - PackageManagerCore *m_core; - QList<Component*> m_allComponents; QHash<Component*, QSet<Component*> > m_visitedComponents; QList<const Component*> m_componentsForAutodepencencyCheck; - //for faster lookups. - QSet<QString> m_toInstallComponentIds; - QHash<QString, QStringList> m_referenceCount; - QString m_componentsToInstallError; - //calculate installation order variables - QList<Component*> m_orderedComponentsToInstall; - //we can't use this reason hash as component id hash, because some reasons are ready before - //the component is added - QHash<QString, QPair<InstallReasonType, QString> > m_toInstallComponentIdReasonHash; + QSet<QString> m_toInstallComponentIds; //for faster lookups + QSet<QString> m_toInstallComponentAliases; //Helper hash for quicker search for autodependency components AutoDependencyHash m_autoDependencyComponentHash; }; -} - +} // namespace QInstaller #endif // INSTALLERCALCULATOR_H |