From 5b855f2e19071c542339090d8635ef9efff848ba Mon Sep 17 00:00:00 2001 From: Qudix <17361645+Qudix@users.noreply.github.com> Date: Thu, 24 Feb 2022 18:34:10 -0600 Subject: Add `isMasterFlagged` `isLight` `isLightFlagged` Note: The behavior of isMaster has been changed to match isLightFlagged --- src/pluginlist.cpp | 15 ++++++++++++++- src/pluginlist.h | 2 ++ src/pluginlistproxy.cpp | 15 +++++++++++++++ src/pluginlistproxy.h | 3 +++ 4 files changed, 34 insertions(+), 1 deletion(-) diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 52434e89..80653595 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -933,6 +933,17 @@ bool PluginList::isMaster(const QString &name) const } } +bool PluginList::isMasterFlagged(const QString& name) const +{ + auto iter = m_ESPsByName.find(name); + if (iter == m_ESPsByName.end()) { + return false; + } + else { + return m_ESPs[iter->second].isMasterFlagged; + } +} + bool PluginList::isLight(const QString &name) const { auto iter = m_ESPsByName.find(name); @@ -1693,8 +1704,9 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, { try { ESP::File file(ToWString(fullPath)); - isMaster = file.isMaster(); auto extension = name.right(3).toLower(); + isMaster = (extension == "esm"); + isMasterFlagged = file.isMaster(); isLight = lightPluginsAreSupported && (extension == "esl"); isLightFlagged = lightPluginsAreSupported && file.isLight(); @@ -1707,6 +1719,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, } catch (const std::exception &e) { log::error("failed to parse plugin file {}: {}", fullPath, e.what()); isMaster = false; + isMasterFlagged = false; isLight = false; isLightFlagged = false; } diff --git a/src/pluginlist.h b/src/pluginlist.h index af70396e..451db257 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -233,6 +233,7 @@ public: int loadOrder(const QString &name) const; bool setPriority(const QString& name, int newPriority); bool isMaster(const QString &name) const; + bool isMasterFlagged(const QString& name) const; bool isLight(const QString &name) const; bool isLightFlagged(const QString &name) const; QStringList masters(const QString &name) const; @@ -320,6 +321,7 @@ private: FILETIME time; QString originName; bool isMaster; + bool isMasterFlagged; bool isLight; bool isLightFlagged; bool modSelected; diff --git a/src/pluginlistproxy.cpp b/src/pluginlistproxy.cpp index b9ea9e36..ec1dc0bd 100644 --- a/src/pluginlistproxy.cpp +++ b/src/pluginlistproxy.cpp @@ -68,6 +68,21 @@ bool PluginListProxy::isMaster(const QString& name) const return m_Proxied->isMaster(name); } +bool PluginListProxy::isMasterFlagged(const QString& name) const +{ + return m_Proxied->isMasterFlagged(name); +} + +bool PluginListProxy::isLight(const QString& name) const +{ + return m_Proxied->isLight(name); +} + +bool PluginListProxy::isLightFlagged(const QString& name) const +{ + return m_Proxied->isLightFlagged(name); +} + QStringList PluginListProxy::masters(const QString& name) const { return m_Proxied->masters(name); diff --git a/src/pluginlistproxy.h b/src/pluginlistproxy.h index e421b6ee..fc883882 100644 --- a/src/pluginlistproxy.h +++ b/src/pluginlistproxy.h @@ -22,6 +22,9 @@ public: int loadOrder(const QString& name) const override; void setLoadOrder(const QStringList& pluginList) override; bool isMaster(const QString& name) const override; + bool isMasterFlagged(const QString& name) const override; + bool isLight(const QString& name) const override; + bool isLightFlagged(const QString& name) const override; QStringList masters(const QString& name) const override; QString origin(const QString& name) const override; bool onRefreshed(const std::function& callback) override; -- cgit v1.3.1