From 36855f96f31dc92ebb70c9ad49c9be7f771fb320 Mon Sep 17 00:00:00 2001 From: Mikaƫl Capelle Date: Sun, 31 Jan 2021 16:08:48 +0100 Subject: Use case-insensitive data structure in plugin list. --- src/pluginlist.cpp | 76 ++++++++++++++++++++++++++---------------------------- 1 file changed, 37 insertions(+), 39 deletions(-) (limited to 'src/pluginlist.cpp') diff --git a/src/pluginlist.cpp b/src/pluginlist.cpp index 9733d4f3..b6cb25d0 100644 --- a/src/pluginlist.cpp +++ b/src/pluginlist.cpp @@ -159,7 +159,7 @@ void PluginList::highlightPlugins( if (std::find_if(alternatives.begin(), alternatives.end(), [&](const FileAlternative& element) { return element.originID() == origin.getID(); }) == alternatives.end()) continue; } - std::map::iterator iter = m_ESPsByName.find(plugin.toLower()); + std::map::iterator iter = m_ESPsByName.find(plugin); if (iter != m_ESPsByName.end()) { m_ESPs[iter->second].modSelected = true; } @@ -205,15 +205,14 @@ void PluginList::refresh(const QString &profileName if ((extension == "esp") || (extension == "esm") || (extension == "esl")) { - availablePlugins.append(filename.toLower()); + availablePlugins.append(filename); - if (m_ESPsByName.find(filename.toLower()) != m_ESPsByName.end()) { + if (m_ESPsByName.find(filename) != m_ESPsByName.end()) { continue; } bool forceEnabled = Settings::instance().game().forceEnableCoreFiles() && primaryPlugins.contains(filename, Qt::CaseInsensitive); - //(std::find(primaryPlugins.begin(), primaryPlugins.end(), filename.toLower()) != primaryPlugins.end()); bool archive = false; try { @@ -251,7 +250,7 @@ void PluginList::refresh(const QString &profileName } for (const auto &espName : m_ESPsByName) { - if (!availablePlugins.contains(espName.first)) { + if (!availablePlugins.contains(espName.first, Qt::CaseInsensitive)) { m_ESPs[espName.second].name = ""; } } @@ -311,12 +310,12 @@ void PluginList::fixPriorities() void PluginList::enableESP(const QString &name, bool enable) { - std::map::iterator iter = m_ESPsByName.find(name.toLower()); + std::map::iterator iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { auto enabled = m_ESPs[iter->second].enabled; m_ESPs[iter->second].enabled = - enable | m_ESPs[iter->second].forceEnabled; + enable || m_ESPs[iter->second].forceEnabled; emit writePluginsList(); if (enabled != m_ESPs[iter->second].enabled) { @@ -425,7 +424,7 @@ void PluginList::toggleState(const QModelIndexList& indices) bool PluginList::isEnabled(const QString &name) { - std::map::iterator iter = m_ESPsByName.find(name.toLower()); + std::map::iterator iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { return m_ESPs[iter->second].enabled; @@ -436,10 +435,10 @@ bool PluginList::isEnabled(const QString &name) void PluginList::clearInformation(const QString &name) { - std::map::iterator iter = m_ESPsByName.find(name.toLower()); + std::map::iterator iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { - m_AdditionalInfo[name.toLower()].messages.clear(); + m_AdditionalInfo[name].messages.clear(); } } @@ -450,10 +449,10 @@ void PluginList::clearAdditionalInformation() void PluginList::addInformation(const QString &name, const QString &message) { - std::map::iterator iter = m_ESPsByName.find(name.toLower()); + std::map::iterator iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { - m_AdditionalInfo[name.toLower()].messages.append(message); + m_AdditionalInfo[name].messages.append(message); } else { log::warn("failed to associate message for \"{}\"", name); } @@ -461,10 +460,10 @@ void PluginList::addInformation(const QString &name, const QString &message) void PluginList::addLootReport(const QString& name, Loot::Plugin plugin) { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { - m_AdditionalInfo[name.toLower()].loot = std::move(plugin); + m_AdditionalInfo[name].loot = std::move(plugin); } else { log::warn("failed to associate loot report for \"{}\"", name); } @@ -663,18 +662,18 @@ QString PluginList::getIndexPriority(int index) const bool PluginList::isESPLocked(int index) const { - return m_LockedOrder.find(m_ESPs.at(index).name.toLower()) != m_LockedOrder.end(); + return m_LockedOrder.find(m_ESPs.at(index).name) != m_LockedOrder.end(); } void PluginList::lockESPIndex(int index, bool lock) { if (lock) { if (!m_ESPs.at(index).forceEnabled) - m_LockedOrder[getName(index).toLower()] = m_ESPs.at(index).loadOrder; + m_LockedOrder[getName(index)] = m_ESPs.at(index).loadOrder; else return; } else { - auto iter = m_LockedOrder.find(getName(index).toLower()); + auto iter = m_LockedOrder.find(getName(index)); if (iter != m_LockedOrder.end()) { m_LockedOrder.erase(iter); } @@ -710,7 +709,7 @@ void PluginList::refreshLoadOrder() bool savePluginsList = false; // this is guaranteed to iterate from lowest key (load order) to highest for (auto iter = lockedLoadOrder.begin(); iter != lockedLoadOrder.end(); ++iter) { - auto nameIter = m_ESPsByName.find(iter->second.toLower()); + auto nameIter = m_ESPsByName.find(iter->second); if (nameIter != m_ESPsByName.end()) { // locked esp exists @@ -763,7 +762,7 @@ QStringList PluginList::pluginNames() const IPluginList::PluginStates PluginList::state(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return IPluginList::STATE_MISSING; } else { @@ -772,7 +771,7 @@ IPluginList::PluginStates PluginList::state(const QString &name) const } void PluginList::setState(const QString &name, PluginStates state) { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter != m_ESPsByName.end()) { m_ESPs[iter->second].enabled = (state == IPluginList::STATE_ACTIVE) || m_ESPs[iter->second].forceEnabled; @@ -788,7 +787,7 @@ void PluginList::setLoadOrder(const QStringList &pluginList) } int maxPriority = 0; for (const QString &plugin : pluginList) { - auto iter = m_ESPsByName.find(plugin.toLower()); + auto iter = m_ESPsByName.find(plugin); if (iter !=m_ESPsByName.end()) { m_ESPs[iter->second].priority = maxPriority++; } @@ -805,7 +804,7 @@ void PluginList::setLoadOrder(const QStringList &pluginList) int PluginList::priority(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return -1; } else { @@ -838,7 +837,7 @@ bool PluginList::setPriority(const QString& name, int newPriority) { int PluginList::loadOrder(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return -1; } else { @@ -848,7 +847,7 @@ int PluginList::loadOrder(const QString &name) const bool PluginList::isMaster(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return false; } else { @@ -858,7 +857,7 @@ bool PluginList::isMaster(const QString &name) const bool PluginList::isLight(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return false; } else { @@ -868,7 +867,7 @@ bool PluginList::isLight(const QString &name) const bool PluginList::isLightFlagged(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return false; } else { @@ -878,7 +877,7 @@ bool PluginList::isLightFlagged(const QString &name) const QStringList PluginList::masters(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return QStringList(); } else { @@ -892,7 +891,7 @@ QStringList PluginList::masters(const QString &name) const QString PluginList::origin(const QString &name) const { - auto iter = m_ESPsByName.find(name.toLower()); + auto iter = m_ESPsByName.find(name); if (iter == m_ESPsByName.end()) { return QString(); } else { @@ -939,7 +938,7 @@ void PluginList::updateIndices() log::error("invalid plugin priority: {}", m_ESPs[i].priority); continue; } - m_ESPsByName[m_ESPs[i].name.toLower()] = i; + m_ESPsByName[m_ESPs[i].name] = i; m_ESPsByPriority.at(static_cast(m_ESPs[i].priority)) = i; } @@ -988,10 +987,10 @@ int PluginList::columnCount(const QModelIndex &) const void PluginList::testMasters() { - std::set enabledMasters; + std::set enabledMasters; for (const auto& iter: m_ESPs) { if (iter.enabled) { - enabledMasters.insert(iter.name.toLower()); + enabledMasters.insert(iter.name); } } @@ -999,7 +998,7 @@ void PluginList::testMasters() iter.masterUnset.clear(); if (iter.enabled) { for (const auto& master: iter.masters) { - if (enabledMasters.find(master.toLower()) == enabledMasters.end()) { + if (enabledMasters.find(master) == enabledMasters.end()) { iter.masterUnset.insert(master); } } @@ -1141,7 +1140,7 @@ QVariant PluginList::tooltipData(const QModelIndex &modelIndex) const if (esp.masterUnset.size() > 0) { toolTip += "
" + tr("Missing Masters") + ": " + - "" + TruncateString(SetJoin(esp.masterUnset, ", ")) + ""; + "" + TruncateString(QStringList(esp.masterUnset.begin(), esp.masterUnset.end()).join(", ")) + ""; } std::set enabledMasters; @@ -1158,7 +1157,7 @@ QVariant PluginList::tooltipData(const QModelIndex &modelIndex) const if (!esp.archives.empty()) { toolTip += "
" + tr("Loads Archives") + ": " + - TruncateString(SetJoin(esp.archives, ", ")) + + TruncateString(QStringList(esp.archives.begin(), esp.archives.end()).join(", ")) + "
" + tr( "There are Archives connected to this plugin. Their assets will be " "added to your game, overwriting in case of conflicts following the " @@ -1185,7 +1184,7 @@ QVariant PluginList::tooltipData(const QModelIndex &modelIndex) const // additional info - auto itor = m_AdditionalInfo.find(esp.name.toLower()); + auto itor = m_AdditionalInfo.find(esp.name); if (itor != m_AdditionalInfo.end()) { if (!itor->second.messages.isEmpty()) { @@ -1269,9 +1268,8 @@ QVariant PluginList::iconData(const QModelIndex &modelIndex) const QVariantList result; const auto& esp = m_ESPs[index]; - const QString nameLower = esp.name.toLower(); - auto infoItor = m_AdditionalInfo.find(nameLower); + auto infoItor = m_AdditionalInfo.find(esp.name); const AdditionalInfo* info = nullptr; if (infoItor != m_AdditionalInfo.end()) { @@ -1282,7 +1280,7 @@ QVariant PluginList::iconData(const QModelIndex &modelIndex) const result.append(":/MO/gui/warning"); } - if (m_LockedOrder.find(nameLower) != m_LockedOrder.end()) { + if (m_LockedOrder.find(esp.name) != m_LockedOrder.end()) { result.append(":/MO/gui/locked"); } @@ -1583,7 +1581,7 @@ PluginList::ESPInfo::ESPInfo(const QString &name, bool enabled, bool hasIni, std::set archives, bool lightPluginsAreSupported) : name(name), fullPath(fullPath), enabled(enabled), forceEnabled(enabled), priority(0), loadOrder(-1), originName(originName), hasIni(hasIni), - archives(archives), modSelected(false) + archives(archives.begin(), archives.end()), modSelected(false) { try { ESP::File file(ToWString(fullPath)); -- cgit v1.3.1