summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:08:29 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-01-02 15:08:29 +0100
commit3a92ff96ba5068aff0417219eed8cf759b55b9f7 (patch)
tree156453698a6e772f051478ff117a3924493f3cc1
parent386cfc511a0d843851d78eeb2bce8d1da725d0d0 (diff)
Remove setName and remove from mod interface.
-rw-r--r--src/modlist.cpp29
-rw-r--r--src/modlist.h3
-rw-r--r--src/modlistproxy.cpp5
-rw-r--r--src/modlistproxy.h1
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;