summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp94
1 files changed, 55 insertions, 39 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index 52434e89..9a19fb2c 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -69,9 +69,9 @@ static bool ByName(const PluginList::ESPInfo& LHS, const PluginList::ESPInfo& RH
static bool ByPriority(const PluginList::ESPInfo& LHS, const PluginList::ESPInfo& RHS)
{
- if (LHS.isMaster && !RHS.isMaster) {
+ if (LHS.isMasterFlagged && !RHS.isMasterFlagged) {
return true;
- } else if (!LHS.isMaster && RHS.isMaster) {
+ } else if (!LHS.isMasterFlagged && RHS.isMasterFlagged) {
return false;
} else {
return LHS.priority < RHS.priority;
@@ -326,7 +326,7 @@ void PluginList::fixPluginRelationships()
// Count the types of plugins
int masterCount = 0;
for (auto plugin : m_ESPs) {
- if (plugin.isLight || plugin.isMaster) {
+ if (plugin.hasLightExtension || plugin.isMasterFlagged) {
masterCount++;
}
}
@@ -334,7 +334,7 @@ void PluginList::fixPluginRelationships()
// Ensure masters are up top and normal plugins are down below
for (int i = 0; i < m_ESPs.size(); i++) {
ESPInfo& plugin = m_ESPs[i];
- if (plugin.isLight || plugin.isMaster) {
+ if (plugin.hasLightExtension || plugin.isMasterFlagged) {
if (plugin.priority > masterCount) {
int newPriority = masterCount + 1;
setPluginPriority(i, newPriority);
@@ -923,57 +923,71 @@ int PluginList::loadOrder(const QString &name) const
}
}
-bool PluginList::isMaster(const QString &name) const
+QStringList PluginList::masters(const QString &name) const
{
auto iter = m_ESPsByName.find(name);
if (iter == m_ESPsByName.end()) {
- return false;
+ return QStringList();
} else {
- return m_ESPs[iter->second].isMaster;
+ QStringList result;
+ for (const QString &master : m_ESPs[iter->second].masters) {
+ result.append(master);
+ }
+ return result;
}
}
-bool PluginList::isLight(const QString &name) const
+QString PluginList::origin(const QString &name) const
{
auto iter = m_ESPsByName.find(name);
if (iter == m_ESPsByName.end()) {
- return false;
+ return QString();
} else {
- return m_ESPs[iter->second].isLight;
+ return m_ESPs[iter->second].originName;
}
}
-bool PluginList::isLightFlagged(const QString &name) const
+bool PluginList::hasMasterExtension(const QString& name) const
{
auto iter = m_ESPsByName.find(name);
if (iter == m_ESPsByName.end()) {
return false;
- } else {
- return m_ESPs[iter->second].isLightFlagged;
+ }
+ else {
+ return m_ESPs[iter->second].hasMasterExtension;
}
}
-QStringList PluginList::masters(const QString &name) const
+bool PluginList::hasLightExtension(const QString& name) const
{
auto iter = m_ESPsByName.find(name);
if (iter == m_ESPsByName.end()) {
- return QStringList();
- } else {
- QStringList result;
- for (const QString &master : m_ESPs[iter->second].masters) {
- result.append(master);
- }
- return result;
+ return false;
+ }
+ else {
+ return m_ESPs[iter->second].hasLightExtension;
}
}
-QString PluginList::origin(const QString &name) const
+bool PluginList::isMasterFlagged(const QString& name) const
{
auto iter = m_ESPsByName.find(name);
if (iter == m_ESPsByName.end()) {
- return QString();
- } else {
- return m_ESPs[iter->second].originName;
+ return false;
+ }
+ else {
+ return m_ESPs[iter->second].isMasterFlagged;
+ }
+}
+
+bool PluginList::isLightFlagged(const QString& name) const
+{
+ auto iter = m_ESPsByName.find(name);
+ if (iter == m_ESPsByName.end()) {
+ return false;
+ }
+ else {
+ return m_ESPs[iter->second].isLightFlagged;
}
}
@@ -1038,7 +1052,7 @@ void PluginList::generatePluginIndexes()
++numSkipped;
continue;
}
- if (lightPluginsSupported && (m_ESPs[i].isLight || m_ESPs[i].isLightFlagged)) {
+ if (lightPluginsSupported && (m_ESPs[i].hasLightExtension || m_ESPs[i].isLightFlagged)) {
int ESLpos = 254 + ((numESLs + 1) / 4096);
m_ESPs[i].index = QString("%1:%2").arg(ESLpos, 2, 16, QChar('0')).arg((numESLs) % 4096, 3, 16, QChar('0')).toUpper();
++numESLs;
@@ -1167,10 +1181,10 @@ QVariant PluginList::fontData(const QModelIndex &modelIndex) const
QFont result;
- if (m_ESPs[index].isMaster) {
+ if (m_ESPs[index].hasMasterExtension || m_ESPs[index].isMasterFlagged) {
result.setItalic(true);
result.setWeight(QFont::Bold);
- } else if (m_ESPs[index].isLight || m_ESPs[index].isLightFlagged) {
+ } else if (m_ESPs[index].hasLightExtension || m_ESPs[index].isLightFlagged) {
result.setItalic(true);
}
@@ -1252,7 +1266,7 @@ QVariant PluginList::tooltipData(const QModelIndex &modelIndex) const
"be added to your game settings, overwriting in case of conflicts.");
}
- if (esp.isLightFlagged && !esp.isLight) {
+ if (esp.isLightFlagged && !esp.hasLightExtension) {
toolTip +=
"<br><br>" + tr(
"This ESP is flagged as an ESL. It will adhere to the ESP load "
@@ -1374,7 +1388,7 @@ QVariant PluginList::iconData(const QModelIndex &modelIndex) const
result.append(":/MO/gui/archive_conflict_neutral");
}
- if (esp.isLightFlagged && !esp.isLight) {
+ if (esp.isLightFlagged && !esp.hasLightExtension) {
result.append(":/MO/gui/awaiting");
}
@@ -1510,18 +1524,18 @@ void PluginList::setPluginPriority(int row, int &newPriority, bool isForced)
else if (newPriorityTemp >= static_cast<int>(m_ESPsByPriority.size()))
newPriorityTemp = static_cast<int>(m_ESPsByPriority.size()) - 1;
- if (!m_ESPs[row].isMaster && !m_ESPs[row].isLight) {
+ if (!m_ESPs[row].isMasterFlagged && !m_ESPs[row].hasLightExtension) {
// don't allow esps to be moved above esms
while ((newPriorityTemp < static_cast<int>(m_ESPsByPriority.size() - 1)) &&
- (m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isMaster ||
- m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isLight)) {
+ (m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isMasterFlagged ||
+ m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).hasLightExtension)) {
++newPriorityTemp;
}
} else {
// don't allow esms to be moved below esps
while ((newPriorityTemp > 0) &&
- !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isMaster &&
- !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isLight) {
+ !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).isMasterFlagged &&
+ !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).hasLightExtension) {
--newPriorityTemp;
}
// also don't allow "regular" esms to be moved above primary plugins
@@ -1693,9 +1707,10 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
{
try {
ESP::File file(ToWString(fullPath));
- isMaster = file.isMaster();
auto extension = name.right(3).toLower();
- isLight = lightPluginsAreSupported && (extension == "esl");
+ hasMasterExtension = (extension == "esm");
+ hasLightExtension = lightPluginsAreSupported && (extension == "esl");
+ isMasterFlagged = file.isMaster();
isLightFlagged = lightPluginsAreSupported && file.isLight();
author = QString::fromLatin1(file.author().c_str());
@@ -1706,8 +1721,9 @@ 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;
- isLight = false;
+ hasMasterExtension = false;
+ hasLightExtension = false;
+ isMasterFlagged = false;
isLightFlagged = false;
}
}