summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
authorJeremy Rimpo <jeremy.rimpo@servermonkey.com>2017-10-20 23:16:04 -0500
committerJeremy Rimpo <jeremy.rimpo@servermonkey.com>2017-10-20 23:16:04 -0500
commitb16a0ab3d94fad599347098e79e4a8131de08efa (patch)
tree589d868c80b84dd7ac46cf3691d767d3b4ee01be /src/pluginlist.cpp
parenta611c355ce732961c2a9ba1a8909f0c144afa860 (diff)
Add ESL flag type detection
* ESL files can be sorted like ESMs * ESL files are displayed italicized but not bold
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp24
1 files changed, 20 insertions, 4 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index f2c52d5b..2a252d27 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -593,6 +593,16 @@ bool PluginList::isMaster(const QString &name) const
}
}
+bool PluginList::isLight(const QString &name) const
+{
+ auto iter = m_ESPsByName.find(name.toLower());
+ if (iter == m_ESPsByName.end()) {
+ return false;
+ } else {
+ return m_ESPs[iter->second].m_IsLight;
+ }
+}
+
QStringList PluginList::masters(const QString &name) const
{
auto iter = m_ESPsByName.find(name.toLower());
@@ -736,6 +746,8 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const
if (m_ESPs[index].m_IsMaster) {
result.setItalic(true);
result.setWeight(QFont::Bold);
+ } else if (m_ESPs[index].m_IsLight) {
+ result.setItalic(true);
}
return result;
} else if (role == Qt::TextAlignmentRole) {
@@ -895,16 +907,18 @@ void PluginList::setPluginPriority(int row, int &newPriority)
{
int newPriorityTemp = newPriority;
- if (!m_ESPs[row].m_IsMaster) {
+ if (!m_ESPs[row].m_IsMaster && !m_ESPs[row].m_IsLight) {
// 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)).m_IsMaster) {
+ (m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).m_IsMaster ||
+ m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).m_IsLight)) {
++newPriorityTemp;
}
} else {
// don't allow esms to be moved below esps
while ((newPriorityTemp > 0) &&
- !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).m_IsMaster) {
+ !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).m_IsMaster &&
+ !m_ESPs.at(m_ESPsByPriority.at(newPriorityTemp)).m_IsLight) {
--newPriorityTemp;
}
// also don't allow "regular" esms to be moved above primary plugins
@@ -1110,7 +1124,8 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
{
try {
ESP::File file(ToWString(fullPath));
- m_IsMaster = file.isMaster();
+ m_IsMaster = file.isMaster() && !file.isLight();
+ m_IsLight = file.isMaster() && file.isLight();
m_Author = QString::fromLatin1(file.author().c_str());
m_Description = QString::fromLatin1(file.description().c_str());
std::set<std::string> masters = file.masters();
@@ -1120,6 +1135,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled,
} catch (const std::exception &e) {
qCritical("failed to parse esp file %s: %s", qPrintable(fullPath), e.what());
m_IsMaster = false;
+ m_IsLight = false;
}
}