diff options
| author | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-02-09 20:14:03 +0100 |
|---|---|---|
| committer | Mikaël Capelle <capelle.mikael@gmail.com> | 2021-02-09 20:23:42 +0100 |
| commit | 595f6eccf615c0cf70c8d32e3edb515578efddc9 (patch) | |
| tree | 2f5ebc24ccfd4a8e59eea6b896559c757375e62a /src/modinfowithconflictinfo.h | |
| parent | 7d36bc20d0a6c327079141149a7f138c0f7726ac (diff) | |
Better refresh of override markers and conflicts.
Diffstat (limited to 'src/modinfowithconflictinfo.h')
| -rw-r--r-- | src/modinfowithconflictinfo.h | 53 |
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; }; |
