diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-27 22:45:42 +0200 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2020-05-27 22:45:42 +0200 |
| commit | 700c5fb16c1c4e39fd757998e95ead4a25ecc6da (patch) | |
| tree | 723e3c3b9d6b72d3fc69b27632adf6e750169eb7 /src | |
| parent | 6f22a77cdac588abcb60ac4c45d795b74872c626 (diff) | |
Store contents as a set instead of a vector.
Diffstat (limited to 'src')
| -rw-r--r-- | src/modinfo.h | 2 | ||||
| -rw-r--r-- | src/modinforegular.cpp | 5 | ||||
| -rw-r--r-- | src/modinforegular.h | 2 | ||||
| -rw-r--r-- | src/modinfowithconflictinfo.cpp | 2 | ||||
| -rw-r--r-- | src/modinfowithconflictinfo.h | 7 | ||||
| -rw-r--r-- | src/modlist.cpp | 11 | ||||
| -rw-r--r-- | src/modlist.h | 6 |
7 files changed, 17 insertions, 18 deletions
diff --git a/src/modinfo.h b/src/modinfo.h index 5f2d7ba7..a6c8ea65 100644 --- a/src/modinfo.h +++ b/src/modinfo.h @@ -521,7 +521,7 @@ public: /** * @return a list of content types contained in a mod */ - virtual const std::vector<int>& getContents() const = 0; + virtual const std::set<int>& getContents() const = 0; /** * @brief test if the specified flag is set for this mod diff --git a/src/modinforegular.cpp b/src/modinforegular.cpp index 8ad7ffe5..8ef8e007 100644 --- a/src/modinforegular.cpp +++ b/src/modinforegular.cpp @@ -653,12 +653,13 @@ std::vector<ModInfo::EFlag> ModInfoRegular::getFlags() const } -std::vector<int> ModInfoRegular::doGetContents() const +std::set<int> ModInfoRegular::doGetContents() const { ModDataContent* contentFeature = m_GamePlugin->feature<ModDataContent>(); if (contentFeature) { - return contentFeature->getContentsFor(contentFileTree()); + auto result = contentFeature->getContentsFor(contentFileTree()); + return std::set<int>(std::begin(result), std::end(result)); } return {}; diff --git a/src/modinforegular.h b/src/modinforegular.h index b09dcd98..7e70631e 100644 --- a/src/modinforegular.h +++ b/src/modinforegular.h @@ -416,7 +416,7 @@ private slots: protected: - virtual std::vector<int> doGetContents() const override; + virtual std::set<int> doGetContents() const override; ModInfoRegular(PluginContainer *pluginContainer, const MOBase::IPluginGame *game, const QDir &path, MOShared::DirectoryEntry **directoryStructure); diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp index 14b341d2..227ee12e 100644 --- a/src/modinfowithconflictinfo.cpp +++ b/src/modinfowithconflictinfo.cpp @@ -331,7 +331,7 @@ bool ModInfoWithConflictInfo::isValid() const { return m_Valid.value(); } -const std::vector<int>& ModInfoWithConflictInfo::getContents() const { +const std::set<int>& ModInfoWithConflictInfo::getContents() const { return m_Contents.value(); } diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h index b66a7444..7109b83d 100644 --- a/src/modinfowithconflictinfo.h +++ b/src/modinfowithconflictinfo.h @@ -6,6 +6,7 @@ #include "thread_utils.h" #include "modinfo.h" +#include <set> #include <QTime> class ModInfoWithConflictInfo : public ModInfo @@ -24,7 +25,7 @@ public: /** * @return a list of content types contained in a mod */ - virtual const std::vector<int>& getContents() const override; + virtual const std::set<int>& getContents() const override; /** * @brief Test if the mod contains the specified content. @@ -75,7 +76,7 @@ protected: * * @return the contents for this mod. **/ - virtual std::vector<int> doGetContents() const { return {}; } + virtual std::set<int> doGetContents() const { return {}; } /** * @brief Retrieve a file tree corresponding to the underlying disk content @@ -146,7 +147,7 @@ private: MOShared::MemoizedLocked<std::shared_ptr<const MOBase::IFileTree>> m_FileTree; MOShared::MemoizedLocked<bool> m_Valid; - MOShared::MemoizedLocked<std::vector<int>> m_Contents; + MOShared::MemoizedLocked<std::set<int>> m_Contents; MOShared::DirectoryEntry **m_DirectoryStructure; diff --git a/src/modlist.cpp b/src/modlist.cpp index 7fa63b54..614588db 100644 --- a/src/modlist.cpp +++ b/src/modlist.cpp @@ -178,13 +178,12 @@ QString ModList::getConflictFlagText(ModInfo::EConflictFlag flag, ModInfo::Ptr m } -QVariantList ModList::contentsToIcons(const std::vector<int> &contents) const +QVariantList ModList::contentsToIcons(const std::set<int> &contents) const { QVariantList result; - std::set<int> contentsSet(contents.begin(), contents.end()); for (auto &content: m_Organizer->modDataContents()) { if (!content.isOnlyForFilter()) { - if (contentsSet.find(content.id()) != contentsSet.end()) { + if (contents.find(content.id()) != contents.end()) { result.append(content.icon()); } else { @@ -195,13 +194,11 @@ QVariantList ModList::contentsToIcons(const std::vector<int> &contents) const return result; } -QString ModList::contentsToToolTip(const std::vector<int> &contents) const +QString ModList::contentsToToolTip(const std::set<int> &contents) const { QString result("<table cellspacing=7>"); - - std::set<int> contentsSet(contents.begin(), contents.end()); for (auto& content : m_Organizer->modDataContents()) { - if (!content.isOnlyForFilter() && contentsSet.find(content.id()) != contentsSet.end()) { + if (!content.isOnlyForFilter() && contents.find(content.id()) != contents.end()) { result.append(QString("<tr><td><img src=\"%1\" width=32/></td>" "<td valign=\"middle\">%2</td></tr>") .arg(content.icon()).arg(content.name())); diff --git a/src/modlist.h b/src/modlist.h index 4e2e86d2..8c29300d 100644 --- a/src/modlist.h +++ b/src/modlist.h @@ -79,7 +79,7 @@ public: * @brief constructor
* @todo ensure this view works without a profile set, otherwise there are intransparent dependencies on the initialisation order
**/
- ModList(PluginContainer *pluginContainer, OrganizerCore *parent = nullptr);
+ ModList(PluginContainer *pluginContainer, OrganizerCore *parent);
~ModList();
@@ -285,9 +285,9 @@ private: QString getColumnToolTip(int column) const;
- QVariantList contentsToIcons(const std::vector<int> &contentIds) const;
+ QVariantList contentsToIcons(const std::set<int> &contentIds) const;
- QString contentsToToolTip(const std::vector<int> &contentsIds) const;
+ QString contentsToToolTip(const std::set<int> &contentsIds) const;
ModList::EColumn getEnabledColumn(int index) const;
|
