summaryrefslogtreecommitdiff
path: root/src/modinfowithconflictinfo.h
diff options
context:
space:
mode:
authorMikaël Capelle <capelle.mikael@gmail.com>2021-02-09 20:14:03 +0100
committerMikaël Capelle <capelle.mikael@gmail.com>2021-02-09 20:23:42 +0100
commit595f6eccf615c0cf70c8d32e3edb515578efddc9 (patch)
tree2f5ebc24ccfd4a8e59eea6b896559c757375e62a /src/modinfowithconflictinfo.h
parent7d36bc20d0a6c327079141149a7f138c0f7726ac (diff)
Better refresh of override markers and conflicts.
Diffstat (limited to 'src/modinfowithconflictinfo.h')
-rw-r--r--src/modinfowithconflictinfo.h53
1 files changed, 26 insertions, 27 deletions
diff --git a/src/modinfowithconflictinfo.h b/src/modinfowithconflictinfo.h
index c9cddb60..2136e093 100644
--- a/src/modinfowithconflictinfo.h
+++ b/src/modinfowithconflictinfo.h
@@ -54,14 +54,12 @@ public:
*/
void clearCaches() override;
- const std::set<unsigned int>& getModOverwrite() const override { return m_OverwriteList; }
- const std::set<unsigned int>& getModOverwritten() const override { return m_OverwrittenList; }
- const std::set<unsigned int>& getModArchiveOverwrite() const override { return m_ArchiveOverwriteList; }
- const std::set<unsigned int>& getModArchiveOverwritten() const override { return m_ArchiveOverwrittenList; }
- const std::set<unsigned int>& getModArchiveLooseOverwrite() const override { return m_ArchiveLooseOverwriteList; }
- const std::set<unsigned int>& getModArchiveLooseOverwritten() const override { return m_ArchiveLooseOverwrittenList; }
-
- void doConflictCheck() const override;
+ const std::set<unsigned int>& getModOverwrite() const override { return m_Conflicts.value().m_OverwriteList; }
+ const std::set<unsigned int>& getModOverwritten() const override { return m_Conflicts.value().m_OverwrittenList; }
+ const std::set<unsigned int>& getModArchiveOverwrite() const override { return m_Conflicts.value().m_ArchiveOverwriteList; }
+ const std::set<unsigned int>& getModArchiveOverwritten() const override { return m_Conflicts.value().m_ArchiveOverwrittenList; }
+ const std::set<unsigned int>& getModArchiveLooseOverwrite() const override { return m_Conflicts.value().m_ArchiveLooseOverwriteList; }
+ const std::set<unsigned int>& getModArchiveLooseOverwritten() const override { return m_Conflicts.value().m_ArchiveLooseOverwrittenList; }
public slots:
@@ -72,11 +70,8 @@ public slots:
protected:
- /**
- * @brief Check if the content of this mod is valid.
- *
- * @return true if the content is valid, false otherwise.
- **/
+ // check if the content of this mod is valid
+ //
virtual bool doIsValid() const;
/**
@@ -136,23 +131,27 @@ protected:
private:
+ struct Conflicts {
+ EConflictType m_CurrentConflictState = CONFLICT_NONE;
+ EConflictType m_ArchiveConflictState = CONFLICT_NONE;
+ EConflictType m_ArchiveConflictLooseState = CONFLICT_NONE;
+ bool m_HasLooseOverwrite = false;
+ bool m_HasHiddenFiles = false;
+
+ std::set<unsigned int> m_OverwriteList; // indices of mods overritten by this mod
+ std::set<unsigned int> m_OverwrittenList; // indices of mods overwriting this mod
+ std::set<unsigned int> m_ArchiveOverwriteList; // indices of mods with archive files overritten by this mod
+ std::set<unsigned int> m_ArchiveOverwrittenList; // indices of mods with archive files overwriting this mod
+ std::set<unsigned int> m_ArchiveLooseOverwriteList; // indices of mods with archives being overwritten by this mod's loose files
+ std::set<unsigned int> m_ArchiveLooseOverwrittenList; // indices of mods with loose files overwriting this mod's archive files
+ };
+
+ Conflicts doConflictCheck() const;
+
MOBase::MemoizedLocked<std::shared_ptr<const MOBase::IFileTree>> m_FileTree;
MOBase::MemoizedLocked<bool> m_Valid;
MOBase::MemoizedLocked<std::set<int>> m_Contents;
-
- mutable EConflictType m_CurrentConflictState;
- mutable EConflictType m_ArchiveConflictState;
- mutable EConflictType m_ArchiveConflictLooseState;
- mutable bool m_HasLooseOverwrite;
- mutable bool m_HasHiddenFiles;
- mutable QTime m_LastConflictCheck;
-
- mutable std::set<unsigned int> m_OverwriteList; // indices of mods overritten by this mod
- mutable std::set<unsigned int> m_OverwrittenList; // indices of mods overwriting this mod
- mutable std::set<unsigned int> m_ArchiveOverwriteList; // indices of mods with archive files overritten by this mod
- mutable std::set<unsigned int> m_ArchiveOverwrittenList; // indices of mods with archive files overwriting this mod
- mutable std::set<unsigned int> m_ArchiveLooseOverwriteList; // indices of mods with archives being overwritten by this mod's loose files
- mutable std::set<unsigned int> m_ArchiveLooseOverwrittenList; // indices of mods with loose files overwriting this mod's archive files
+ MOBase::MemoizedLocked<Conflicts> m_Conflicts;
};