diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-02 15:08:29 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-01-02 15:08:29 +0100 |
| commit | 3a92ff96ba5068aff0417219eed8cf759b55b9f7 (patch) | |
| tree | 156453698a6e772f051478ff117a3924493f3cc1 /src | |
| parent | 386cfc511a0d843851d78eeb2bce8d1da725d0d0 (diff) | |
Remove setName and remove from mod interface.
Diffstat (limited to 'src')
| -rw-r--r-- | src/modlist.cpp | 29 | ||||
| -rw-r--r-- | src/modlist.h | 3 | ||||
| -rw-r--r-- | src/modlistproxy.cpp | 5 | ||||
| -rw-r--r-- | src/modlistproxy.h | 1 |
4 files changed, 37 insertions, 1 deletions
diff --git a/src/modlist.cpp b/src/modlist.cpp index 237f65fa..c8056140 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -940,7 +940,12 @@ bool ModList::removeMod(MOBase::IModInterface* mod) { unsigned int index = ModInfo::getIndex(mod->name()); if (index == UINT_MAX) { - return mod->remove(); + if (auto* p = dynamic_cast<ModInfo*>(mod)) { + return p->remove(); + } + else { + return false; + } } else { return ModInfo::removeMod(index); @@ -948,6 +953,28 @@ bool ModList::removeMod(MOBase::IModInterface* mod) notifyModRemoved(mod->name()); } +MOBase::IModInterface* ModList::renameMod(MOBase::IModInterface* mod, const QString& name) +{ + unsigned int index = ModInfo::getIndex(mod->name()); + if (index == UINT_MAX) { + if (auto* p = dynamic_cast<ModInfo*>(mod)) { + p->setName(name); + return p; + } + else { + return nullptr; + } + } + else { + if (renameMod(index, name)) { + return ModInfo::getByName(name).get(); + } + else { + return nullptr; + } + } +} + 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 fd26bb91..21a19fab 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -167,6 +167,9 @@ public: // \copydoc MOBase::IModList::remove
bool removeMod(MOBase::IModInterface* mod);
+ // \copydoc MOBase::IModList::renameMod
+ MOBase::IModInterface* renameMod(MOBase::IModInterface* mod, const QString& name);
+
/// \copydoc MOBase::IModList::state
MOBase::IModList::ModStates state(const QString &name) const;
diff --git a/src/modlistproxy.cpp b/src/modlistproxy.cpp index 6165fc3f..cae5b1f7 100644 --- a/src/modlistproxy.cpp +++ b/src/modlistproxy.cpp @@ -55,6 +55,11 @@ bool ModListProxy::removeMod(MOBase::IModInterface* mod) return m_Proxied->removeMod(mod); } +MOBase::IModInterface* ModListProxy::renameMod(MOBase::IModInterface* mod, const QString& name) +{ + return m_Proxied->renameMod(mod, name); +} + IModList::ModStates ModListProxy::state(const QString& name) const { return m_Proxied->state(name); diff --git a/src/modlistproxy.h b/src/modlistproxy.h index 162b0b43..d886d8b5 100644 --- a/src/modlistproxy.h +++ b/src/modlistproxy.h @@ -19,6 +19,7 @@ public: QStringList allModsByProfilePriority(MOBase::IProfile* profile = nullptr) const override; MOBase::IModInterface* getMod(const QString& name) const override; bool removeMod(MOBase::IModInterface* mod) override; + MOBase::IModInterface* renameMod(MOBase::IModInterface* mod, const QString& name) override; ModStates state(const QString& name) const override; bool setActive(const QString& name, bool active) override; int setActive(const QStringList& names, bool active) override; |
