diff options
| author | Jeremy Rimpo <jeremy.rimpo@servermonkey.com> | 2017-10-20 23:16:04 -0500 |
|---|---|---|
| committer | Jeremy Rimpo <jeremy.rimpo@servermonkey.com> | 2017-10-20 23:16:04 -0500 |
| commit | b16a0ab3d94fad599347098e79e4a8131de08efa (patch) | |
| tree | 589d868c80b84dd7ac46cf3691d767d3b4ee01be /src | |
| parent | a611c355ce732961c2a9ba1a8909f0c144afa860 (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')
| -rw-r--r-- | src/pluginlist.cpp | 24 | ||||
| -rw-r--r-- | src/pluginlist.h | 2 |
2 files changed, 22 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;
}
}
diff --git a/src/pluginlist.h b/src/pluginlist.h index 78623cae..aaa45bc1 100644 --- a/src/pluginlist.h +++ b/src/pluginlist.h @@ -213,6 +213,7 @@ public: virtual int loadOrder(const QString &name) const;
virtual bool onRefreshed(const std::function<void()> &callback);
virtual bool isMaster(const QString &name) const;
+ virtual bool isLight(const QString &name) const;
virtual QStringList masters(const QString &name) const;
virtual QString origin(const QString &name) const;
virtual void setLoadOrder(const QStringList &pluginList) override;
@@ -275,6 +276,7 @@ private: FILETIME m_Time;
QString m_OriginName;
bool m_IsMaster;
+ bool m_IsLight;
QString m_Author;
QString m_Description;
bool m_HasIni;
|
