diff options
| author | Mikaƫl Capelle <capelle.mikael@gmail.com> | 2020-12-07 08:40:23 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-12-07 08:40:23 +0100 |
| commit | 904264e231a9aef485025cb45f1eb006b017aa1a (patch) | |
| tree | c3ff682de4ac4761b8d36f0e96a96dce6a034706 /src/pluginlist.h | |
| parent | 0a6a5eb7868dde908e07ea12c7eb674b2063b950 (diff) | |
| parent | 3264d7899e2560bce4591ab2142ee9d51bc7890c (diff) | |
Merge pull request #1313 from Holt59/load-plugin-without-restart
Implement loading/unloading of plugins without restarting
Diffstat (limited to 'src/pluginlist.h')
| -rw-r--r-- | src/pluginlist.h | 51 |
1 files changed, 30 insertions, 21 deletions
diff --git a/src/pluginlist.h b/src/pluginlist.h index 0b49b86f..5f0cef3d 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -43,6 +43,8 @@ namespace MOBase { class IPluginGame; } #include <vector>
#include <map>
+class OrganizerCore;
+
template <class C>
class ChangeBracket {
@@ -79,7 +81,7 @@ private: /**
* @brief model representing the plugins (.esp/.esm) in the current virtual data folder
**/
-class PluginList : public QAbstractItemModel, public MOBase::IPluginList
+class PluginList : public QAbstractItemModel
{
Q_OBJECT
friend class ChangeBracket<PluginList>;
@@ -94,9 +96,13 @@ public: COL_LASTCOLUMN = COL_MODINDEX
};
- typedef boost::signals2::signal<void ()> SignalRefreshed;
- typedef boost::signals2::signal<void (const QString &, int, int)> SignalPluginMoved;
- typedef boost::signals2::signal<void (const std::map<QString, PluginStates>&)> SignalPluginStateChanged;
+ using PluginStates = MOBase::IPluginList::PluginStates;
+
+ friend class PluginListProxy;
+
+ using SignalRefreshed = boost::signals2::signal<void ()>;
+ using SignalPluginMoved = boost::signals2::signal<void (const QString &, int, int)>;
+ using SignalPluginStateChanged = boost::signals2::signal<void (const std::map<QString, PluginStates>&)>;
public:
@@ -105,7 +111,7 @@ public: *
* @param parent parent object
**/
- PluginList(QObject *parent = nullptr);
+ PluginList(OrganizerCore &organizer);
~PluginList();
@@ -221,21 +227,22 @@ public: public:
- virtual QStringList pluginNames() const override;
- virtual PluginStates state(const QString &name) const override;
- virtual void setState(const QString &name, PluginStates state) override;
- virtual int priority(const QString &name) const override;
- virtual int loadOrder(const QString &name) const override;
- virtual bool setPriority(const QString& name, int newPriority) override;
- virtual bool onRefreshed(const std::function<void()> &callback);
- virtual bool isMaster(const QString &name) const override;
- virtual bool isLight(const QString &name) const;
- virtual bool isLightFlagged(const QString &name) const;
- virtual QStringList masters(const QString &name) const override;
- virtual QString origin(const QString &name) const override;
- virtual void setLoadOrder(const QStringList &pluginList) override;
- virtual bool onPluginMoved(const std::function<void (const QString &, int, int)> &func) override;
- virtual bool onPluginStateChanged(const std::function<void (const std::map<QString, PluginStates>&)> &func) override;
+ QStringList pluginNames() const;
+ PluginStates state(const QString &name) const;
+ void setState(const QString &name, PluginStates state);
+ int priority(const QString &name) const;
+ int loadOrder(const QString &name) const;
+ bool setPriority(const QString& name, int newPriority);
+ bool isMaster(const QString &name) const;
+ bool isLight(const QString &name) const;
+ bool isLightFlagged(const QString &name) const;
+ QStringList masters(const QString &name) const;
+ QString origin(const QString &name) const;
+ void setLoadOrder(const QStringList& pluginList);
+
+ boost::signals2::connection onRefreshed(const std::function<void()>& callback);
+ boost::signals2::connection onPluginMoved(const std::function<void(const QString&, int, int)>& func);
+ boost::signals2::connection onPluginStateChanged(const std::function<void (const std::map<QString, PluginStates>&)> &func);
public: // implementation of the QAbstractTableModel interface
@@ -368,10 +375,12 @@ private: * @param state New state of the plugin.
*
*/
- void pluginStatesChanged(QStringList const& pluginNames, IPluginList::PluginStates state) const;
+ void pluginStatesChanged(QStringList const& pluginNames, PluginStates state) const;
private:
+ OrganizerCore& m_Organizer;
+
std::vector<ESPInfo> m_ESPs;
mutable std::map<QString, QByteArray> m_LastSaveHash;
|
