diff options
| -rw-r--r-- | src/pluginlist.cpp | 15 | ||||
| -rw-r--r-- | src/pluginlist.h | 2 | ||||
| -rw-r--r-- | src/pluginlistproxy.cpp | 15 | ||||
| -rw-r--r-- | src/pluginlistproxy.h | 3 |
4 files changed, 34 insertions, 1 deletions
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<void()>& callback) override; |
