From 4e11faf1c8b19013da6d5686f79b67c1c746653b Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Sun, 25 Oct 2020 15:52:53 +0100 Subject: Move IOrganizer::onModInstalled() to IModList. Add IModList::onModRemoved(). --- src/modlistproxy.cpp | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'src/modlistproxy.cpp') diff --git a/src/modlistproxy.cpp b/src/modlistproxy.cpp index 7ec00c49..321f1873 100644 --- a/src/modlistproxy.cpp +++ b/src/modlistproxy.cpp @@ -42,6 +42,16 @@ bool ModListProxy::setPriority(const QString& name, int newPriority) return m_Proxied->setPriority(name, newPriority); } +bool ModListProxy::onModInstalled(const std::function& func) +{ + return m_Proxied->onModInstalled(MOShared::callIfPluginActive(m_OrganizerProxy, func)); +} + +bool ModListProxy::onModRemoved(const std::function& func) +{ + return m_Proxied->onModRemoved(MOShared::callIfPluginActive(m_OrganizerProxy, func)); +} + bool ModListProxy::onModStateChanged(const std::function&)>& func) { return m_Proxied->onModStateChanged(MOShared::callIfPluginActive(m_OrganizerProxy, func)); -- cgit v1.3.1 From d804a5e186b421c75e01338ce9d22601c78bbb38 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Sun, 25 Oct 2020 16:53:31 +0100 Subject: Move IOrganizer::modsSortedByProfilePriority() to IModList::allModsByProfilePriority(). --- src/mainwindow.cpp | 4 ++-- src/modlist.cpp | 8 ++++++++ src/modlist.h | 1 + src/modlistproxy.cpp | 5 +++++ src/modlistproxy.h | 1 + src/organizercore.cpp | 8 ++++---- src/organizercore.h | 10 +++++++++- src/organizerproxy.cpp | 5 ----- src/organizerproxy.h | 2 -- 9 files changed, 30 insertions(+), 14 deletions(-) (limited to 'src/modlistproxy.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 851900a0..a2afb8a0 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3775,7 +3775,7 @@ void MainWindow::moveOverwriteContentToExistingMod() QString modAbsolutePath; - for (const auto& mod : m_OrganizerCore.modsSortedByProfilePriority()) { + for (const auto& mod : m_OrganizerCore.modsSortedByProfilePriority(m_OrganizerCore.currentProfile())) { if (result.compare(mod) == 0) { ModInfo::Ptr modInfo = ModInfo::getByIndex(ModInfo::getIndex(mod)); modAbsolutePath = modInfo->absolutePath(); @@ -6549,7 +6549,7 @@ void MainWindow::sendSelectedModsToSeparator_clicked() int newPriority = INT_MAX; bool foundSection = false; - for (auto mod : m_OrganizerCore.modsSortedByProfilePriority()) { + for (auto mod : m_OrganizerCore.modsSortedByProfilePriority(m_OrganizerCore.currentProfile())) { unsigned int modIndex = ModInfo::getIndex(mod); ModInfo::Ptr modInfo = ModInfo::getByIndex(modIndex); if (!foundSection && result.compare(mod) == 0) { diff --git a/src/modlist.cpp b/src/modlist.cpp index 90433963..d72cede9 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -931,6 +931,14 @@ QStringList ModList::allMods() const return result; } +QStringList ModList::allModsByProfilePriority(MOBase::IProfile* profile) const +{ + Profile* mo2Profile = profile == nullptr ? + m_Organizer->currentProfile() + : dynamic_cast(profile); + return m_Organizer->modsSortedByProfilePriority(mo2Profile); +} + IModList::ModStates ModList::state(const QString &name) const { unsigned int modIndex = ModInfo::getIndex(name); diff --git a/src/modlist.h b/src/modlist.h index baaeede3..8748cb30 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -157,6 +157,7 @@ public: /// \copydoc MOBase::IModList::allMods virtual QStringList allMods() const override; + virtual QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; /// \copydoc MOBase::IModList::state virtual ModStates state(const QString &name) const override; diff --git a/src/modlistproxy.cpp b/src/modlistproxy.cpp index 321f1873..51cea1ee 100644 --- a/src/modlistproxy.cpp +++ b/src/modlistproxy.cpp @@ -17,6 +17,11 @@ QStringList ModListProxy::allMods() const return m_Proxied->allMods(); } +QStringList ModListProxy::allModsByProfilePriority(MOBase::IProfile* profile) const +{ + return m_Proxied->allModsByProfilePriority(profile); +} + IModList::ModStates ModListProxy::state(const QString& name) const { return m_Proxied->state(name); diff --git a/src/modlistproxy.h b/src/modlistproxy.h index 5b0a7114..2e653850 100644 --- a/src/modlistproxy.h +++ b/src/modlistproxy.h @@ -15,6 +15,7 @@ public: QString displayName(const QString& internalName) const override; QStringList allMods() const override; + QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; ModStates state(const QString& name) const override; bool setActive(const QString& name, bool active) override; int setActive(const QStringList& names, bool active) override; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index ac485c91..a66a6450 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -974,13 +974,13 @@ ModList *OrganizerCore::modList() return &m_ModList; } -QStringList OrganizerCore::modsSortedByProfilePriority() const +QStringList OrganizerCore::modsSortedByProfilePriority(Profile *profile) const { QStringList res; - for (int i = currentProfile()->getPriorityMinimum(); - i < currentProfile()->getPriorityMinimum() + (int)currentProfile()->numRegularMods(); + for (int i = profile->getPriorityMinimum(); + i < profile->getPriorityMinimum() + (int)profile->numRegularMods(); ++i) { - int modIndex = currentProfile()->modIndexByPriority(i); + int modIndex = profile->modIndexByPriority(i); auto modInfo = ModInfo::getByIndex(modIndex); if (!modInfo->hasFlag(ModInfo::FLAG_OVERWRITE) && !modInfo->hasFlag(ModInfo::FLAG_BACKUP)) { diff --git a/src/organizercore.h b/src/organizercore.h index 226c5c0a..95c7ef51 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -289,6 +289,15 @@ public: static void setGlobalCrashDumpsType(CrashDumpsType crashDumpsType); static std::wstring crashDumpsPath(); + /** + * @brief Returns the name of all the mods in the priority order of the given profile. + * + * @param profile Profile to use for the mod order. + * + * @return the name of all the mods in the priority order of the given profile. + */ + QStringList modsSortedByProfilePriority(Profile* profile) const; + public: MOBase::IModRepositoryBridge *createNexusBridge() const; QString profileName() const; @@ -318,7 +327,6 @@ public: PluginList *pluginList(); ModList *modList(); void refresh(bool saveChanges = true); - QStringList modsSortedByProfilePriority() const; bool onAboutToRun(const std::function& func); bool onFinishedRun(const std::function& func); diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index 5e720ea8..e369c1a3 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -254,11 +254,6 @@ MOBase::IPluginGame const *OrganizerProxy::managedGame() const return m_Proxied->managedGame(); } -QStringList OrganizerProxy::modsSortedByProfilePriority() const -{ - return m_Proxied->modsSortedByProfilePriority(); -} - // CALLBACKS bool OrganizerProxy::onAboutToRun(const std::function& func) diff --git a/src/organizerproxy.h b/src/organizerproxy.h index 29210ff2..a72d01b3 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -67,8 +67,6 @@ public: virtual MOBase::IPluginGame const *managedGame() const; - virtual QStringList modsSortedByProfilePriority() const; - private: OrganizerCore *m_Proxied; -- cgit v1.3.1 From a216177b879bea6db659c65b0c37bbfe70ce08fd Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Sun, 25 Oct 2020 17:16:17 +0100 Subject: Move IOrganizer::removeMod() to IModList::removeMod(). --- src/modlist.cpp | 12 ++++++++++++ src/modlist.h | 3 +++ src/modlistproxy.cpp | 5 +++++ src/modlistproxy.h | 1 + src/organizercore.cpp | 11 ----------- src/organizercore.h | 1 - src/organizerproxy.cpp | 5 ----- src/organizerproxy.h | 1 - 8 files changed, 21 insertions(+), 18 deletions(-) (limited to 'src/modlistproxy.cpp') diff --git a/src/modlist.cpp b/src/modlist.cpp index 94c8883d..40a9af5e 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -939,6 +939,18 @@ QStringList ModList::allModsByProfilePriority(MOBase::IProfile* profile) const return m_Organizer->modsSortedByProfilePriority(mo2Profile); } +bool ModList::removeMod(MOBase::IModInterface* mod) +{ + unsigned int index = ModInfo::getIndex(mod->name()); + if (index == UINT_MAX) { + return mod->remove(); + } + else { + return ModInfo::removeMod(index); + } + notifyModRemoved(mod->name()); +} + IModList::ModStates ModList::state(const QString &name) const { unsigned int modIndex = ModInfo::getIndex(name); diff --git a/src/modlist.h b/src/modlist.h index 8748cb30..810b0efd 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -159,6 +159,9 @@ public: virtual QStringList allMods() const override; virtual QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; + // \copydoc MOBase::IModList::remove + bool removeMod(MOBase::IModInterface* mod) override; + /// \copydoc MOBase::IModList::state virtual ModStates state(const QString &name) const override; diff --git a/src/modlistproxy.cpp b/src/modlistproxy.cpp index 51cea1ee..660e4b9d 100644 --- a/src/modlistproxy.cpp +++ b/src/modlistproxy.cpp @@ -22,6 +22,11 @@ QStringList ModListProxy::allModsByProfilePriority(MOBase::IProfile* profile) co return m_Proxied->allModsByProfilePriority(profile); } +bool ModListProxy::removeMod(MOBase::IModInterface* mod) +{ + return m_Proxied->removeMod(mod); +} + IModList::ModStates ModListProxy::state(const QString& name) const { return m_Proxied->state(name); diff --git a/src/modlistproxy.h b/src/modlistproxy.h index 2e653850..486564a4 100644 --- a/src/modlistproxy.h +++ b/src/modlistproxy.h @@ -16,6 +16,7 @@ public: QString displayName(const QString& internalName) const override; QStringList allMods() const override; QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; + bool removeMod(MOBase::IModInterface* mod) override; ModStates state(const QString& name) const override; bool setActive(const QString& name, bool active) override; int setActive(const QStringList& names, bool active) override; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index a66a6450..76d53791 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -665,17 +665,6 @@ MOBase::IModInterface *OrganizerCore::createMod(GuessedValue &name) .data(); } -bool OrganizerCore::removeMod(MOBase::IModInterface *mod) -{ - unsigned int index = ModInfo::getIndex(mod->name()); - if (index == UINT_MAX) { - return mod->remove(); - } else { - return ModInfo::removeMod(index); - } - m_ModList.notifyModRemoved(mod->name()); -} - void OrganizerCore::modDataChanged(MOBase::IModInterface *) { refresh(false); diff --git a/src/organizercore.h b/src/organizercore.h index 95c7ef51..50d44c49 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -310,7 +310,6 @@ public: MOBase::IModInterface *getMod(const QString &name) const; MOBase::IPluginGame *getGame(const QString &gameName) const; MOBase::IModInterface *createMod(MOBase::GuessedValue &name); - bool removeMod(MOBase::IModInterface *mod); 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); diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index e369c1a3..cb9e0e1d 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -82,11 +82,6 @@ IModInterface *OrganizerProxy::createMod(MOBase::GuessedValue &name) return m_Proxied->createMod(name); } -bool OrganizerProxy::removeMod(IModInterface *mod) -{ - return m_Proxied->removeMod(mod); -} - void OrganizerProxy::modDataChanged(IModInterface *mod) { m_Proxied->modDataChanged(mod); diff --git a/src/organizerproxy.h b/src/organizerproxy.h index a72d01b3..16ae21eb 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -35,7 +35,6 @@ public: virtual MOBase::IModInterface *getMod(const QString &name) const; virtual MOBase::IPluginGame *getGame(const QString &gameName) const; virtual MOBase::IModInterface *createMod(MOBase::GuessedValue &name); - virtual bool removeMod(MOBase::IModInterface *mod); virtual void modDataChanged(MOBase::IModInterface *mod); virtual QVariant pluginSetting(const QString &pluginName, const QString &key) const; virtual void setPluginSetting(const QString &pluginName, const QString &key, const QVariant &value); -- cgit v1.3.1 From 551e8353e090040ee337e718cf0f1b9fe31a0423 Mon Sep 17 00:00:00 2001 From: Mikaël Capelle Date: Sun, 25 Oct 2020 17:46:29 +0100 Subject: Move IOrganizer::getMod() to IModList::getMod(). --- src/mainwindow.cpp | 8 ++++---- src/modlist.cpp | 6 ++++++ src/modlist.h | 3 +++ src/modlistproxy.cpp | 5 +++++ src/modlistproxy.h | 1 + src/organizercore.cpp | 6 ------ src/organizercore.h | 1 - src/organizerproxy.cpp | 5 ----- src/organizerproxy.h | 1 - 9 files changed, 19 insertions(+), 17 deletions(-) (limited to 'src/modlistproxy.cpp') diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index a2afb8a0..85aa0df1 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -3603,7 +3603,7 @@ void MainWindow::createEmptyMod_clicked() } } - if (m_OrganizerCore.getMod(name) != nullptr) { + if (m_OrganizerCore.modList()->getMod(name) != nullptr) { reportError(tr("A mod with this name already exists")); return; } @@ -3638,13 +3638,13 @@ void MainWindow::createSeparator_clicked() GUESS_USER); if (!ok) { return; } } - if (m_OrganizerCore.getMod(name) != nullptr) + if (m_OrganizerCore.modList()->getMod(name) != nullptr) { reportError(tr("A separator with this name already exists")); return; } name->append("_separator"); - if (m_OrganizerCore.getMod(name) != nullptr) + if (m_OrganizerCore.modList()->getMod(name) != nullptr) { return; } @@ -3739,7 +3739,7 @@ void MainWindow::createModFromOverwrite() } } - if (m_OrganizerCore.getMod(name) != nullptr) { + if (m_OrganizerCore.modList()->getMod(name) != nullptr) { reportError(tr("A mod with this name already exists")); return; } diff --git a/src/modlist.cpp b/src/modlist.cpp index 40a9af5e..98ee3f3a 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -939,6 +939,12 @@ QStringList ModList::allModsByProfilePriority(MOBase::IProfile* profile) const return m_Organizer->modsSortedByProfilePriority(mo2Profile); } +MOBase::IModInterface* ModList::getMod(const QString& name) const +{ + unsigned int index = ModInfo::getIndex(name); + return index == UINT_MAX ? nullptr : ModInfo::getByIndex(index).data(); +} + bool ModList::removeMod(MOBase::IModInterface* mod) { unsigned int index = ModInfo::getIndex(mod->name()); diff --git a/src/modlist.h b/src/modlist.h index 810b0efd..385ca04c 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -159,6 +159,9 @@ public: virtual QStringList allMods() const override; virtual QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; + // \copydoc MOBase::IModList::getMod + MOBase::IModInterface* getMod(const QString& name) const override; + // \copydoc MOBase::IModList::remove bool removeMod(MOBase::IModInterface* mod) override; diff --git a/src/modlistproxy.cpp b/src/modlistproxy.cpp index 660e4b9d..8fcbdbdf 100644 --- a/src/modlistproxy.cpp +++ b/src/modlistproxy.cpp @@ -22,6 +22,11 @@ QStringList ModListProxy::allModsByProfilePriority(MOBase::IProfile* profile) co return m_Proxied->allModsByProfilePriority(profile); } +IModInterface* ModListProxy::getMod(const QString& name) const +{ + return m_Proxied->getMod(name); +} + bool ModListProxy::removeMod(MOBase::IModInterface* mod) { return m_Proxied->removeMod(mod); diff --git a/src/modlistproxy.h b/src/modlistproxy.h index 486564a4..c805cf4e 100644 --- a/src/modlistproxy.h +++ b/src/modlistproxy.h @@ -16,6 +16,7 @@ public: QString displayName(const QString& internalName) const override; QStringList allMods() const override; QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; + MOBase::IModInterface* getMod(const QString& name) const override; bool removeMod(MOBase::IModInterface* mod) override; ModStates state(const QString& name) const override; bool setActive(const QString& name, bool active) override; diff --git a/src/organizercore.cpp b/src/organizercore.cpp index 76d53791..82305c1a 100644 --- a/src/organizercore.cpp +++ b/src/organizercore.cpp @@ -618,12 +618,6 @@ MOBase::VersionInfo OrganizerCore::appVersion() const return m_Updater.getVersion(); } -MOBase::IModInterface *OrganizerCore::getMod(const QString &name) const -{ - unsigned int index = ModInfo::getIndex(name); - return index == UINT_MAX ? nullptr : ModInfo::getByIndex(index).data(); -} - MOBase::IPluginGame *OrganizerCore::getGame(const QString &name) const { for (IPluginGame *game : m_PluginContainer->plugins()) { diff --git a/src/organizercore.h b/src/organizercore.h index 50d44c49..61caeed0 100644 --- a/src/organizercore.h +++ b/src/organizercore.h @@ -307,7 +307,6 @@ public: QString basePath() const; QString modsPath() const; MOBase::VersionInfo appVersion() const; - MOBase::IModInterface *getMod(const QString &name) const; MOBase::IPluginGame *getGame(const QString &gameName) const; MOBase::IModInterface *createMod(MOBase::GuessedValue &name); void modDataChanged(MOBase::IModInterface *mod); diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index cb9e0e1d..56e40ae5 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -67,11 +67,6 @@ VersionInfo OrganizerProxy::appVersion() const return m_Proxied->appVersion(); } -IModInterface *OrganizerProxy::getMod(const QString &name) const -{ - return m_Proxied->getMod(name); -} - IPluginGame *OrganizerProxy::getGame(const QString &gameName) const { return m_Proxied->getGame(gameName); diff --git a/src/organizerproxy.h b/src/organizerproxy.h index 16ae21eb..6cf9de77 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -32,7 +32,6 @@ public: virtual QString basePath() const; virtual QString modsPath() const; virtual MOBase::VersionInfo appVersion() const; - virtual MOBase::IModInterface *getMod(const QString &name) const; virtual MOBase::IPluginGame *getGame(const QString &gameName) const; virtual MOBase::IModInterface *createMod(MOBase::GuessedValue &name); virtual void modDataChanged(MOBase::IModInterface *mod); -- cgit v1.3.1