diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2022-05-17 11:47:01 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2023-07-09 17:20:40 +0200 |
| commit | d13f6bb870cdda71257f665367be8ef9fca86255 (patch) | |
| tree | 52e214718478f1e52856572f5aa1a2ac58537f9f /src/organizercore.h | |
| parent | 86bb01ba9eac879d3685c439ac9da0028bc4bc80 (diff) | |
Apply clang-format.
Diffstat (limited to 'src/organizercore.h')
| -rw-r--r-- | src/organizercore.h | 315 |
1 files changed, 177 insertions, 138 deletions
diff --git a/src/organizercore.h b/src/organizercore.h index dc287b1f..daeb7a7f 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -1,29 +1,29 @@ #ifndef ORGANIZERCORE_H #define ORGANIZERCORE_H -#include "selfupdater.h" -#include "settings.h" -#include "modlist.h" -#include "modinfo.h" -#include "pluginlist.h" -#include "installationmanager.h" #include "downloadmanager.h" +#include "envdump.h" +#include "executableinfo.h" #include "executableslist.h" -#include "usvfsconnector.h" #include "guessedvalue.h" -#include "moshortcut.h" +#include "installationmanager.h" #include "memoizedlock.h" +#include "moddatacontent.h" +#include "modinfo.h" +#include "modlist.h" +#include "moshortcut.h" +#include "pluginlist.h" #include "processrunner.h" +#include "selfupdater.h" +#include "settings.h" #include "uilocker.h" -#include "envdump.h" +#include "usvfsconnector.h" +#include <boost/signals2.hpp> +#include <delayedfilewriter.h> #include <imoinfo.h> #include <iplugindiagnose.h> -#include <versioninfo.h> -#include <delayedfilewriter.h> -#include <boost/signals2.hpp> -#include "executableinfo.h" -#include "moddatacontent.h" #include <log.h> +#include <versioninfo.h> #include <QDir> #include <QFileInfo> @@ -44,17 +44,17 @@ class DirectoryRefresher; namespace MOBase { - template <typename T> class GuessedValue; - class IModInterface; - class IPluginGame; -} +template <typename T> +class GuessedValue; +class IModInterface; +class IPluginGame; +} // namespace MOBase namespace MOShared { - class DirectoryEntry; +class DirectoryEntry; } - class OrganizerCore : public QObject, public MOBase::IPluginDiagnose { @@ -62,14 +62,13 @@ class OrganizerCore : public QObject, public MOBase::IPluginDiagnose Q_INTERFACES(MOBase::IPluginDiagnose) private: - friend class OrganizerProxy; struct SignalCombinerAnd { using result_type = bool; - template<typename InputIterator> + template <typename InputIterator> bool operator()(InputIterator first, InputIterator last) const { while (first != last) { @@ -83,24 +82,28 @@ private: }; private: - - using SignalAboutToRunApplication = boost::signals2::signal<bool(const QString&), SignalCombinerAnd>; - using SignalFinishedRunApplication = boost::signals2::signal<void(const QString&, unsigned int)>; + using SignalAboutToRunApplication = + boost::signals2::signal<bool(const QString&), SignalCombinerAnd>; + using SignalFinishedRunApplication = + boost::signals2::signal<void(const QString&, unsigned int)>; using SignalUserInterfaceInitialized = boost::signals2::signal<void(QMainWindow*)>; using SignalProfileCreated = boost::signals2::signal<void(MOBase::IProfile*)>; - using SignalProfileRenamed = boost::signals2::signal<void(MOBase::IProfile*, QString const&, QString const&)>; + using SignalProfileRenamed = + boost::signals2::signal<void(MOBase::IProfile*, QString const&, QString const&)>; using SignalProfileRemoved = boost::signals2::signal<void(QString const&)>; - using SignalProfileChanged = boost::signals2::signal<void(MOBase::IProfile *, MOBase::IProfile *)>; - using SignalPluginSettingChanged = boost::signals2::signal<void(QString const&, const QString& key, const QVariant&, const QVariant&)>; + using SignalProfileChanged = + boost::signals2::signal<void(MOBase::IProfile*, MOBase::IProfile*)>; + using SignalPluginSettingChanged = boost::signals2::signal<void( + QString const&, const QString& key, const QVariant&, const QVariant&)>; using SignalPluginEnabled = boost::signals2::signal<void(const MOBase::IPlugin*)>; public: - /** * Small holder for the game content returned by the ModDataContent feature (the * list of all possible contents, not the per-mod content). */ - struct ModDataContentHolder { + struct ModDataContentHolder + { using Content = ModDataContent::Content; @@ -114,8 +117,12 @@ public: * * @return the content with the given ID, or a null pointer if it is not found. */ - const Content* findById(int id) const { - auto it = std::find_if(std::begin(m_Contents), std::end(m_Contents), [&id](auto const& content) { return content.id() == id; }); + const Content* findById(int id) const + { + auto it = std::find_if(std::begin(m_Contents), std::end(m_Contents), + [&id](auto const& content) { + return content.id() == id; + }); return it == std::end(m_Contents) ? nullptr : &(*it); } @@ -124,35 +131,41 @@ public: * * @param ids The set of content IDs. * @param fn The function to apply. - * @param includeFilter true to also apply the function to filter-only contents, false otherwise. + * @param includeFilter true to also apply the function to filter-only contents, + * false otherwise. */ template <class Fn> - void forEachContentIn(std::set<int> const& ids, Fn const& fn, bool includeFilter = false) const { + void forEachContentIn(std::set<int> const& ids, Fn const& fn, + bool includeFilter = false) const + { for (const auto& content : m_Contents) { - if ((includeFilter || !content.isOnlyForFilter()) - && ids.find(content.id()) != ids.end()) { + if ((includeFilter || !content.isOnlyForFilter()) && + ids.find(content.id()) != ids.end()) { fn(content); } } } /** - * @brief Apply fnIn to each content whose ID is in the given set, and fnOut to each content not in the - * given set, excluding filter-only content (from both cases) unless includeFilter is true. + * @brief Apply fnIn to each content whose ID is in the given set, and fnOut to each + * content not in the given set, excluding filter-only content (from both cases) + * unless includeFilter is true. * * @param ids The set of content IDs. * @param fnIn Function to apply to content whose IDs are in ids. * @param fnOut Function to apply to content whose IDs are not in ids. - * @param includeFilter true to also apply the function to filter-only contents, false otherwise. + * @param includeFilter true to also apply the function to filter-only contents, + * false otherwise. */ template <class FnIn, class FnOut> - void forEachContentInOrOut(std::set<int> const& ids, FnIn const& fnIn, FnOut const& fnOut, bool includeFilter = false) const { + void forEachContentInOrOut(std::set<int> const& ids, FnIn const& fnIn, + FnOut const& fnOut, bool includeFilter = false) const + { for (const auto& content : m_Contents) { if ((includeFilter || !content.isOnlyForFilter())) { if (ids.find(content.id()) != ids.end()) { fnIn(content); - } - else { + } else { fnOut(content); } } @@ -163,10 +176,12 @@ public: * Apply the given function to each content. * * @param fn The function to apply. - * @param includeFilter true to also apply the function to filter-only contents, false otherwise. + * @param includeFilter true to also apply the function to filter-only contents, + * false otherwise. */ template <class Fn> - void forEachContent(Fn const& fn, bool includeFilter = false) const { + void forEachContent(Fn const& fn, bool includeFilter = false) const + { for (const auto& content : m_Contents) { if (includeFilter || !content.isOnlyForFilter()) { fn(content); @@ -174,38 +189,37 @@ public: } } - ModDataContentHolder& operator=(ModDataContentHolder const&) = delete; - ModDataContentHolder& operator=(ModDataContentHolder&&) = default; + ModDataContentHolder& operator=(ModDataContentHolder&&) = default; private: - std::vector<Content> m_Contents; /** - * @brief Construct a ModDataContentHolder without any contents (e.g., if the feature is - * missing). + * @brief Construct a ModDataContentHolder without any contents (e.g., if the + * feature is missing). */ - ModDataContentHolder() { } + ModDataContentHolder() {} /** * @brief Construct a ModDataContentHold holding the given list of contents. */ - ModDataContentHolder(std::vector<ModDataContent::Content> contents) : - m_Contents(std::move(contents)) { } + ModDataContentHolder(std::vector<ModDataContent::Content> contents) + : m_Contents(std::move(contents)) + {} friend class OrganizerCore; }; public: - OrganizerCore(Settings &settings); + OrganizerCore(Settings& settings); ~OrganizerCore(); void setUserInterface(IUserInterface* ui); - void connectPlugins(PluginContainer *container); + void connectPlugins(PluginContainer* container); - void setManagedGame(MOBase::IPluginGame *game); + void setManagedGame(MOBase::IPluginGame* game); void updateExecutablesList(); void updateModInfoFromDisc(); @@ -213,18 +227,19 @@ public: void checkForUpdates(); void startMOUpdate(); - Settings &settings(); - SelfUpdater *updater() { return &m_Updater; } - InstallationManager *installationManager(); - MOShared::DirectoryEntry *directoryStructure() { return m_DirectoryStructure; } - DirectoryRefresher *directoryRefresher() { return m_DirectoryRefresher.get(); } - ExecutablesList *executablesList() { return &m_ExecutablesList; } - void setExecutablesList(const ExecutablesList &executablesList) { + Settings& settings(); + SelfUpdater* updater() { return &m_Updater; } + InstallationManager* installationManager(); + MOShared::DirectoryEntry* directoryStructure() { return m_DirectoryStructure; } + DirectoryRefresher* directoryRefresher() { return m_DirectoryRefresher.get(); } + ExecutablesList* executablesList() { return &m_ExecutablesList; } + void setExecutablesList(const ExecutablesList& executablesList) + { m_ExecutablesList = executablesList; } - Profile *currentProfile() const { return m_CurrentProfile.get(); } - void setCurrentProfile(const QString &profileName); + Profile* currentProfile() const { return m_CurrentProfile.get(); } + void setCurrentProfile(const QString& profileName); std::vector<QString> enabledArchives(); @@ -234,7 +249,7 @@ public: // PluginContainer& pluginContainer() const; - MOBase::IPluginGame const *managedGame() const; + MOBase::IPluginGame const* managedGame() const; /** * @brief Retrieve the organizer proxy of the currently managed game. @@ -242,7 +257,6 @@ public: */ MOBase::IOrganizer const* managedGameOrganizer() const; - /** * @return the list of contents for the currently managed game, or an empty vector * if the game plugin does not implement the ModDataContent feature. @@ -255,15 +269,14 @@ public: ProcessRunner processRunner(); - bool beforeRun( - const QFileInfo& binary, const QString& profileName, - const QString& customOverwrite, - const QList<MOBase::ExecutableForcedLoadSetting>& forcedLibraries); + bool beforeRun(const QFileInfo& binary, const QString& profileName, + const QString& customOverwrite, + const QList<MOBase::ExecutableForcedLoadSetting>& forcedLibraries); void afterRun(const QFileInfo& binary, DWORD exitCode); - ProcessRunner::Results waitForAllUSVFSProcesses( - UILocker::Reasons reason=UILocker::PreventExit); + ProcessRunner::Results + waitForAllUSVFSProcesses(UILocker::Reasons reason = UILocker::PreventExit); void refreshESPList(bool force = false); void refreshBSAList(); @@ -272,28 +285,31 @@ public: void updateModInDirectoryStructure(unsigned int index, ModInfo::Ptr modInfo); void updateModsInDirectoryStructure(QMap<unsigned int, ModInfo::Ptr> modInfos); - void doAfterLogin(const std::function<void()> &function) { m_PostLoginTasks.append(function); } - void loggedInAction(QWidget* parent, std::function<void ()> f); + void doAfterLogin(const std::function<void()>& function) + { + m_PostLoginTasks.append(function); + } + void loggedInAction(QWidget* parent, std::function<void()> f); - bool previewFileWithAlternatives(QWidget* parent, QString filename, int selectedOrigin=-1); + bool previewFileWithAlternatives(QWidget* parent, QString filename, + int selectedOrigin = -1); bool previewFile(QWidget* parent, const QString& originName, const QString& path); void loginSuccessfulUpdate(bool necessary); - void loginFailedUpdate(const QString &message); + void loginFailedUpdate(const QString& message); - static bool createAndMakeWritable(const QString &path); + static bool createAndMakeWritable(const QString& path); bool checkPathSymlinks(); bool bootstrap(); void createDefaultProfile(); - MOBase::DelayedFileWriter &pluginsWriter() { return m_PluginListsWriter; } + MOBase::DelayedFileWriter& pluginsWriter() { return m_PluginListsWriter; } void prepareVFS(); - void updateVFSParams( - MOBase::log::Levels logLevel, env::CoreDumpTypes coreDumpType, - const QString& coreDumpsPath, std::chrono::seconds spawnDelay, - QString executableBlacklist); + void updateVFSParams(MOBase::log::Levels logLevel, env::CoreDumpTypes coreDumpType, + const QString& coreDumpsPath, std::chrono::seconds spawnDelay, + QString executableBlacklist); void setLogLevel(MOBase::log::Levels level); @@ -304,7 +320,7 @@ public: static std::wstring getGlobalCoreDumpPath(); public: - MOBase::IModRepositoryBridge *createNexusBridge() const; + MOBase::IModRepositoryBridge* createNexusBridge() const; QString profileName() const; QString profilePath() const; QString downloadsPath() const; @@ -312,38 +328,58 @@ public: QString basePath() const; QString modsPath() const; MOBase::VersionInfo appVersion() const; - MOBase::IPluginGame *getGame(const QString &gameName) const; - MOBase::IModInterface *createMod(MOBase::GuessedValue<QString> &name); - void modDataChanged(MOBase::IModInterface *mod); - QVariant pluginSetting(const QString &pluginName, const QString &key) const; - void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value); - QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def) const; - void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync); + MOBase::IPluginGame* getGame(const QString& gameName) const; + MOBase::IModInterface* createMod(MOBase::GuessedValue<QString>& name); + void modDataChanged(MOBase::IModInterface* mod); + QVariant pluginSetting(const QString& pluginName, const QString& key) const; + void setPluginSetting(const QString& pluginName, const QString& key, + const QVariant& value); + QVariant persistent(const QString& pluginName, const QString& key, + const QVariant& def) const; + void setPersistent(const QString& pluginName, const QString& key, + const QVariant& value, bool sync); static QString pluginDataPath(); - virtual MOBase::IModInterface *installMod(const QString &fileName, int priority, bool reinstallation, ModInfo::Ptr currentMod, const QString &initModName); - QString resolvePath(const QString &fileName) const; - QStringList listDirectories(const QString &directoryName) const; - QStringList findFiles(const QString &path, const std::function<bool (const QString &)> &filter) const; - QStringList getFileOrigins(const QString &fileName) const; - QList<MOBase::IOrganizer::FileInfo> findFileInfos(const QString &path, const std::function<bool (const MOBase::IOrganizer::FileInfo &)> &filter) const; - DownloadManager *downloadManager(); - PluginList *pluginList(); - ModList *modList(); + virtual MOBase::IModInterface* installMod(const QString& fileName, int priority, + bool reinstallation, + ModInfo::Ptr currentMod, + const QString& initModName); + QString resolvePath(const QString& fileName) const; + QStringList listDirectories(const QString& directoryName) const; + QStringList findFiles(const QString& path, + const std::function<bool(const QString&)>& filter) const; + QStringList getFileOrigins(const QString& fileName) const; + QList<MOBase::IOrganizer::FileInfo> findFileInfos( + const QString& path, + const std::function<bool(const MOBase::IOrganizer::FileInfo&)>& filter) const; + DownloadManager* downloadManager(); + PluginList* pluginList(); + ModList* modList(); void refresh(bool saveChanges = true); - boost::signals2::connection onAboutToRun(const std::function<bool(const QString&)>& func); - boost::signals2::connection onFinishedRun(const std::function<void(const QString&, unsigned int)>& func); - boost::signals2::connection onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func); - boost::signals2::connection onProfileCreated(std::function<void(MOBase::IProfile*)> const& func); - boost::signals2::connection onProfileRenamed(std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& func); - boost::signals2::connection onProfileRemoved(std::function<void(QString const&)> const& func); - boost::signals2::connection onProfileChanged(std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func); - boost::signals2::connection onPluginSettingChanged(std::function<void(QString const&, const QString& key, const QVariant&, const QVariant&)> const& func); - boost::signals2::connection onPluginEnabled(std::function<void(const MOBase::IPlugin*)> const& func); - boost::signals2::connection onPluginDisabled(std::function<void(const MOBase::IPlugin*)> const& func); - -public: // IPluginDiagnose interface + boost::signals2::connection + onAboutToRun(const std::function<bool(const QString&)>& func); + boost::signals2::connection + onFinishedRun(const std::function<void(const QString&, unsigned int)>& func); + boost::signals2::connection + onUserInterfaceInitialized(std::function<void(QMainWindow*)> const& func); + boost::signals2::connection + onProfileCreated(std::function<void(MOBase::IProfile*)> const& func); + boost::signals2::connection onProfileRenamed( + std::function<void(MOBase::IProfile*, QString const&, QString const&)> const& + func); + boost::signals2::connection + onProfileRemoved(std::function<void(QString const&)> const& func); + boost::signals2::connection onProfileChanged( + std::function<void(MOBase::IProfile*, MOBase::IProfile*)> const& func); + boost::signals2::connection onPluginSettingChanged( + std::function<void(QString const&, const QString& key, const QVariant&, + const QVariant&)> const& func); + boost::signals2::connection + onPluginEnabled(std::function<void(const MOBase::IPlugin*)> const& func); + boost::signals2::connection + onPluginDisabled(std::function<void(const MOBase::IPlugin*)> const& func); +public: // IPluginDiagnose interface virtual std::vector<unsigned int> activeProblems() const; virtual QString shortDescription(unsigned int key) const; virtual QString fullDescription(unsigned int key) const; @@ -361,19 +397,22 @@ public slots: void refreshLists(); ModInfo::Ptr installDownload(int downloadIndex, int priority = -1); - ModInfo::Ptr installArchive(const QString& archivePath, int priority = -1, bool reinstallation = false, - ModInfo::Ptr currentMod = nullptr, const QString& modName = QString()); + ModInfo::Ptr installArchive(const QString& archivePath, int priority = -1, + bool reinstallation = false, + ModInfo::Ptr currentMod = nullptr, + const QString& modName = QString()); void modPrioritiesChanged(QModelIndexList const& indexes); void modStatusChanged(unsigned int index); void modStatusChanged(QList<unsigned int> index); - void requestDownload(const QUrl &url, QNetworkReply *reply); - void downloadRequestedNXM(const QString &url); + void requestDownload(const QUrl& url, QNetworkReply* reply); + void downloadRequestedNXM(const QString& url); void userInterfaceInitialized(); void profileCreated(MOBase::IProfile* profile); - void profileRenamed(MOBase::IProfile* profile, QString const& oldName, QString const& newName); + void profileRenamed(MOBase::IProfile* profile, QString const& oldName, + QString const& newName); void profileRemoved(QString const& profileName); bool nexusApi(bool retry = false); @@ -382,11 +421,11 @@ signals: // emitted after a mod has been installed // - void modInstalled(const QString &modName); + void modInstalled(const QString& modName); // emitted when the managed game changes // - void managedGameChanged(MOBase::IPluginGame const *gamePlugin); + void managedGameChanged(MOBase::IPluginGame const* gamePlugin); // emitted when the profile is changed, before notifying plugins // @@ -400,54 +439,55 @@ signals: void directoryStructureReady(); private: - std::pair<unsigned int, ModInfo::Ptr> doInstall(const QString& archivePath, - MOBase::GuessedValue<QString> modName, ModInfo::Ptr currentMod, int priority, bool reinstallation); + MOBase::GuessedValue<QString> modName, + ModInfo::Ptr currentMod, int priority, + bool reinstallation); void saveCurrentProfile(); void storeSettings(); void updateModActiveState(int index, bool active); - void updateModsActiveState(const QList<unsigned int> &modIndices, bool active); + void updateModsActiveState(const QList<unsigned int>& modIndices, bool active); // clear the conflict caches of all the given mods, and the mods in conflict // with the given mods // void clearCaches(std::vector<unsigned int> const& indices) const; - bool createDirectory(const QString &path); + bool createDirectory(const QString& path); QString oldMO1HookDll() const; /** * @brief return a descriptor of the mappings real file->virtual file */ - std::vector<Mapping> fileMapping(const QString &profile, - const QString &customOverwrite); + std::vector<Mapping> fileMapping(const QString& profile, + const QString& customOverwrite); - std::vector<Mapping> - fileMapping(const QString &dataPath, const QString &relPath, - const MOShared::DirectoryEntry *base, - const MOShared::DirectoryEntry *directoryEntry, - int createDestination); + std::vector<Mapping> fileMapping(const QString& dataPath, const QString& relPath, + const MOShared::DirectoryEntry* base, + const MOShared::DirectoryEntry* directoryEntry, + int createDestination); private slots: void directory_refreshed(); - void downloadRequested(QNetworkReply *reply, QString gameName, int modID, const QString &fileName); - void removeOrigin(const QString &name); - void downloadSpeed(const QString &serverName, int bytesPerSecond); + void downloadRequested(QNetworkReply* reply, QString gameName, int modID, + const QString& fileName); + void removeOrigin(const QString& name); + void downloadSpeed(const QString& serverName, int bytesPerSecond); void loginSuccessful(bool necessary); - void loginFailed(const QString &message); + void loginFailed(const QString& message); private: static const unsigned int PROBLEM_MO1SCRIPTEXTENDERWORKAROUND = 1; private: IUserInterface* m_UserInterface; - PluginContainer *m_PluginContainer; + PluginContainer* m_PluginContainer; QString m_GameName; - MOBase::IPluginGame *m_GamePlugin; + MOBase::IPluginGame* m_GamePlugin; ModDataContentHolder m_Contents; std::unique_ptr<Profile> m_CurrentProfile; @@ -470,7 +510,6 @@ private: ModList m_ModList; PluginList m_PluginList; - QList<std::function<void()>> m_PostLoginTasks; QList<std::function<void()>> m_PostRefreshTasks; @@ -480,7 +519,7 @@ private: QStringList m_ActiveArchives; std::unique_ptr<DirectoryRefresher> m_DirectoryRefresher; - MOShared::DirectoryEntry *m_DirectoryStructure; + MOShared::DirectoryEntry* m_DirectoryStructure; MOBase::MemoizedLocked<std::shared_ptr<const MOBase::IFileTree>> m_VirtualFileTree; DownloadManager m_DownloadManager; @@ -499,4 +538,4 @@ private: UILocker m_UILocker; }; -#endif // ORGANIZERCORE_H +#endif // ORGANIZERCORE_H |
