summaryrefslogtreecommitdiff
path: root/src/pluginlist.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/pluginlist.cpp')
-rw-r--r--src/pluginlist.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp
index bd863f52..7642c87f 100644
--- a/src/pluginlist.cpp
+++ b/src/pluginlist.cpp
@@ -485,6 +485,25 @@ int PluginList::enabledCount() const
return enabled;
}
+int PluginList::getIndexPriority(int index) const
+{
+ int numESLs = 0;
+ std::vector<ESPInfo> sortESPs(m_ESPs);
+ std::sort(sortESPs.begin(), sortESPs.end());
+ for (auto sortedESP : sortESPs) {
+ if (sortedESP.m_LoadOrder == m_ESPs[index].m_LoadOrder)
+ break;
+ if ((sortedESP.m_IsLight || sortedESP.m_IsLightFlagged) && sortedESP.m_LoadOrder != -1)
+ ++numESLs;
+ }
+ if (m_ESPs[index].m_IsLight || m_ESPs[index].m_IsLightFlagged) {
+ int ESLpos = 254 + ((numESLs + 1) / 2048);
+ return ESLpos + (numESLs % 2048);
+ } else {
+ return m_ESPs[index].m_LoadOrder - numESLs;
+ }
+}
+
bool PluginList::isESPLocked(int index) const
{
return m_LockedOrder.find(m_ESPs.at(index).m_Name.toLower()) != m_LockedOrder.end();
@@ -802,8 +821,8 @@ QVariant PluginList::data(const QModelIndex &modelIndex, int role) const
++numESLs;
}
if (m_ESPs[index].m_IsLight || m_ESPs[index].m_IsLightFlagged) {
- int ESLpos = 254 + ((numESLs+1) / 4096);
- return QString("%1:%2").arg(ESLpos, 2, 16, QChar('0')).arg((numESLs)%4096).toUpper();
+ int ESLpos = 254 + ((numESLs+1) / 2048);
+ return QString("%1:%2").arg(ESLpos, 2, 16, QChar('0')).arg((numESLs)%2048, 3, 16, QChar('0')).toUpper();
} else {
return QString("%1").arg(m_ESPs[index].m_LoadOrder - numESLs, 2, 16, QChar('0')).toUpper();
}