diff options
Diffstat (limited to 'src/libs/installer/installercalculator.h')
-rw-r--r-- | src/libs/installer/installercalculator.h | 47 |
1 files changed, 18 insertions, 29 deletions
diff --git a/src/libs/installer/installercalculator.h b/src/libs/installer/installercalculator.h index 422de439c..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,53 +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 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 *component) const; - QString installReason(const Component *component) const; - QList<Component*> orderedComponentsToInstall() const; - QString componentsToInstallError() const; - bool appendComponentsToInstall(const QList<Component*> &components); + QString resolutionText(Component *component) const override; private: - QString installReasonReferencedComponent(const Component *component) const; - void insertInstallReason(Component *component, - InstallReasonType installReasonType, - const QString &referencedComponentName = QString()); - void realAppendToInstallComponents(Component *component, const QString &version = QString()); - bool appendComponentToInstall(Component *components, const QString &version = QString()); + 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; QHash<Component*, QSet<Component*> > m_visitedComponents; QList<const Component*> m_componentsForAutodepencencyCheck; QSet<QString> m_toInstallComponentIds; //for faster lookups - 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_toInstallComponentAliases; //Helper hash for quicker search for autodependency components AutoDependencyHash m_autoDependencyComponentHash; }; -} - +} // namespace QInstaller #endif // INSTALLERCALCULATOR_H |