#ifndef PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H #define PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H #include #include #include #include #include namespace RepoIndex { class Manager; class TaskInfo; class Dependency; class Package; class PackageFinder; class BuildOrderResolver : public QObject { Q_OBJECT public: BuildOrderResolver(Manager &manager, const ApplicationUtilities::StringVector &packages, bool addSourceOnlyDeps = false); ~BuildOrderResolver(); void cli(); void findDependencies(); QStringList resultNames(); public slots: void printRelevantPackages(); void printResults(); void resolve(); signals: void ready(); void resolvingFinished(); void resolvingFailed(const QString &message); private slots: void addRequestedPackages(); private: Package *findPackageForDependency(const Dependency &dependency); bool addDependenciesToTask(TaskInfo *task); bool addDependenciesToTask(TaskInfo *task, const QList &dependencies); void requestDependenciesToBeRequested(); Manager &m_manager; QList m_tasks; QList m_dependenciesToBeRequested; std::unique_ptr m_finder; QList m_results; bool m_addSourceOnlyDeps; }; } // namespace PackageManagement #endif // PACKAGEMANAGEMENT_RESOLVEBUILDORDER_H