diff options
| author | Al <26797547+Al12rs@users.noreply.github.com> | 2020-09-01 04:00:04 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-01 04:00:04 -0700 |
| commit | 460a068b38ff9c03ec63578fd5a7968f07bd3465 (patch) | |
| tree | 53a7c8bc16dc82ead5fe7245d7668bd167941d65 /src | |
| parent | fa6136c6711a0b651e2d8b652b78b055f0343c9b (diff) | |
| parent | 6c86a0321ba11c30de2d50c73b785c9bd3818da8 (diff) | |
Merge pull request #1222 from Holt59/ipluginlist-setpriority
Add IPluginList::setPriority implementation.
Diffstat (limited to 'src')
| -rw-r--r-- | src/pluginlist.cpp | 23 | ||||
| -rw-r--r-- | src/pluginlist.h | 15 |
2 files changed, 31 insertions, 7 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index c2667557..67ca0133 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -766,6 +766,29 @@ int PluginList::priority(const QString &name) const }
}
+bool PluginList::setPriority(const QString& name, int newPriority) {
+
+ if (newPriority < 0 || newPriority >= static_cast<int>(m_ESPsByPriority.size())) {
+ return false;
+ }
+
+ auto oldPriority = priority(name);
+ if (oldPriority == -1) {
+ return false;
+ }
+
+ int rowIndex = findPluginByPriority(oldPriority);
+
+ // We need to increment newPriority if its above the old one, otherwise the
+ // plugin is place right below the new priority.
+ if (oldPriority < newPriority) {
+ newPriority += 1;
+ }
+ changePluginPriority({ rowIndex }, newPriority);
+
+ return true;
+}
+
int PluginList::loadOrder(const QString &name) const
{
auto iter = m_ESPsByName.find(name.toLower());
diff --git a/src/pluginlist.h b/src/pluginlist.h index cdab18b5..00679a35 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -222,18 +222,19 @@ public: public:
virtual QStringList pluginNames() const override;
- virtual PluginStates state(const QString &name) const;
+ virtual PluginStates state(const QString &name) const override;
virtual void setState(const QString &name, PluginStates state) override;
- virtual int priority(const QString &name) const;
- virtual int loadOrder(const QString &name) const;
+ 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;
+ 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;
- virtual QString origin(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);
+ virtual bool onPluginMoved(const std::function<void (const QString &, int, int)> &func) override;
virtual bool onPluginStateChanged(const std::function<void (const QString &, PluginStates)> &func) override;
public: // implementation of the QAbstractTableModel interface
|
