diff options
| author | Tannin <devnull@localhost> | 2015-05-17 14:30:14 +0200 |
|---|---|---|
| committer | Tannin <devnull@localhost> | 2015-05-17 14:30:14 +0200 |
| commit | e38592da977858149013d0c500c66975720b3e1f (patch) | |
| tree | a2976269475f43c9bff2049d7075987c27f51e15 | |
| parent | 268d2ffe8b533890b408740db1a6a3730dfd8597 (diff) | |
extended plugin interface. Plugins can now activate/deactivate mods, install mods
suggesting a name and retrieve a list of all installed mods
| -rw-r--r-- | src/modlist.cpp | 23 | ||||
| -rw-r--r-- | src/modlist.h | 18 | ||||
| -rw-r--r-- | src/organizerproxy.cpp | 4 | ||||
| -rw-r--r-- | src/organizerproxy.h | 2 |
4 files changed, 38 insertions, 9 deletions
diff --git a/src/modlist.cpp b/src/modlist.cpp index e05935ef..fc09097a 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -708,6 +708,15 @@ QString ModList::displayName(const QString &internalName) const }
}
+QStringList ModList::allMods() const
+{
+ QStringList result;
+ for (unsigned int i = 0; i < ModInfo::getNumMods(); ++i) {
+ result.append(ModInfo::getByIndex(i)->internalName());
+ }
+ return result;
+}
+
IModList::ModStates ModList::state(const QString &name) const
{
unsigned int modIndex = ModInfo::getIndex(name);
@@ -715,6 +724,20 @@ IModList::ModStates ModList::state(const QString &name) const return state(modIndex);
}
+bool ModList::setActive(const QString &name, bool active)
+{
+ unsigned int modIndex = ModInfo::getIndex(name);
+ if (modIndex == UINT_MAX) {
+ return false;
+ } else {
+ m_Profile->setModEnabled(modIndex, active);
+
+ IModList::ModStates newState = state(modIndex);
+ m_ModStateChanged(name, newState);
+ return true;
+ }
+}
+
int ModList::priority(const QString &name) const
{
unsigned int modIndex = ModInfo::getIndex(name);
diff --git a/src/modlist.h b/src/modlist.h index d2cd00ce..fed91f71 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -116,22 +116,28 @@ public: public:
/// \copydoc MOBase::IModList::displayName
- virtual QString displayName(const QString &internalName) const;
+ virtual QString displayName(const QString &internalName) const override;
+
+ /// \copydoc MOBase::IModList::allMods
+ virtual QStringList allMods() const override;
/// \copydoc MOBase::IModList::state
- virtual ModStates state(const QString &name) const;
+ virtual ModStates state(const QString &name) const override;
+
+ /// \copydoc MOBase::IModList::setActive
+ virtual bool setActive(const QString &name, bool active) override;
/// \copydoc MOBase::IModList::priority
- virtual int priority(const QString &name) const;
+ virtual int priority(const QString &name) const override;
/// \copydoc MOBase::IModList::setPriority
- virtual bool setPriority(const QString &name, int newPriority);
+ virtual bool setPriority(const QString &name, int newPriority) override;
/// \copydoc MOBase::IModList::onModStateChanged
- virtual bool onModStateChanged(const std::function<void (const QString &, ModStates)> &func);
+ virtual bool onModStateChanged(const std::function<void (const QString &, ModStates)> &func) override;
/// \copydoc MOBase::IModList::onModMoved
- virtual bool onModMoved(const std::function<void (const QString &, int, int)> &func);
+ virtual bool onModMoved(const std::function<void (const QString &, int, int)> &func) override;
public: // implementation of virtual functions of QAbstractItemModel
diff --git a/src/organizerproxy.cpp b/src/organizerproxy.cpp index 2ce5b3ee..095cb0bb 100644 --- a/src/organizerproxy.cpp +++ b/src/organizerproxy.cpp @@ -125,9 +125,9 @@ void OrganizerProxy::refreshModList(bool saveChanges) m_Proxied->refreshModList(saveChanges);
}
-IModInterface *OrganizerProxy::installMod(const QString &fileName)
+IModInterface *OrganizerProxy::installMod(const QString &fileName, const QString &nameSuggestion)
{
- return m_Proxied->installMod(fileName, QString());
+ return m_Proxied->installMod(fileName, nameSuggestion);
}
QString OrganizerProxy::resolvePath(const QString &fileName) const
diff --git a/src/organizerproxy.h b/src/organizerproxy.h index 29f8a8d1..fb502a7f 100644 --- a/src/organizerproxy.h +++ b/src/organizerproxy.h @@ -28,7 +28,7 @@ public: virtual QVariant persistent(const QString &pluginName, const QString &key, const QVariant &def = QVariant()) const;
virtual void setPersistent(const QString &pluginName, const QString &key, const QVariant &value, bool sync = true);
virtual QString pluginDataPath() const;
- virtual MOBase::IModInterface *installMod(const QString &fileName);
+ virtual MOBase::IModInterface *installMod(const QString &fileName, const QString &nameSuggestion = QString());
virtual QString resolvePath(const QString &fileName) const;
virtual QStringList listDirectories(const QString &directoryName) const;
virtual QStringList findFiles(const QString &path, const std::function<bool(const QString &)> &filter) const;
|
