diff options
| author | Al <26797547+Al12rs@users.noreply.github.com> | 2020-05-23 14:19:54 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-23 14:19:54 -0700 |
| commit | 08ae9db2fd2a07acb2433275fc84c2ca47267a92 (patch) | |
| tree | 5e1232028486d097352aca55ac994cd4e238064f /src/modinfowithconflictinfo.cpp | |
| parent | e618afa5d1ef53e62d022f3d233c86e13fd4a215 (diff) | |
| parent | 6374845a28c8f1f65a05fb954b4df1ebd541344b (diff) | |
Merge pull request #1076 from Holt59/moddatachecker
Use the ModDataChecker feature to check mod validity
Diffstat (limited to 'src/modinfowithconflictinfo.cpp')
| -rw-r--r-- | src/modinfowithconflictinfo.cpp | 37 |
1 files changed, 11 insertions, 26 deletions
diff --git a/src/modinfowithconflictinfo.cpp b/src/modinfowithconflictinfo.cpp index d0516d06..0c67b4f7 100644 --- a/src/modinfowithconflictinfo.cpp +++ b/src/modinfowithconflictinfo.cpp @@ -1,17 +1,20 @@ #include "modinfowithconflictinfo.h" -#include "installationtester.h" #include "utility.h" #include "shared/directoryentry.h" #include "shared/filesorigin.h" #include "shared/fileentry.h" #include <filesystem> +#include "moddatachecker.h" +#include "qdirfiletree.h" + using namespace MOBase; using namespace MOShared; namespace fs = std::filesystem; -ModInfoWithConflictInfo::ModInfoWithConflictInfo(PluginContainer *pluginContainer, DirectoryEntry **directoryStructure) - : ModInfo(pluginContainer), m_DirectoryStructure(directoryStructure), m_HasLooseOverwrite(false), m_HasHiddenFiles(false) {} +ModInfoWithConflictInfo::ModInfoWithConflictInfo( + PluginContainer *pluginContainer, const MOBase::IPluginGame* gamePlugin, DirectoryEntry **directoryStructure) + : ModInfo(pluginContainer), m_GamePlugin(gamePlugin), m_DirectoryStructure(directoryStructure), m_HasLooseOverwrite(false), m_HasHiddenFiles(false) {} void ModInfoWithConflictInfo::clearCaches() { @@ -295,30 +298,12 @@ bool ModInfoWithConflictInfo::hasHiddenFiles() const bool ModInfoWithConflictInfo::doTestValid() const { + auto mdc = m_GamePlugin->feature<ModDataChecker>(); - bool valid = false; - QDirIterator dirIter(absolutePath()); - while (dirIter.hasNext()) { - dirIter.next(); - if (dirIter.fileInfo().isDir()) { - if (InstallationTester::isTopLevelDirectory(dirIter.fileName())) { - valid = true; - break; - } - } - else { - if (InstallationTester::isTopLevelSuffix(dirIter.fileName())) { - valid = true; - break; - } - } - } - - // NOTE: in Qt 4.7 it seems that QDirIterator leaves a file handle open if it is not iterated to the - // end - while (dirIter.hasNext()) { - dirIter.next(); + if (mdc) { + auto qdirfiletree = QDirFileTree::makeTree(absolutePath()); + return mdc->dataLooksValid(qdirfiletree); } - return valid; + return true; } |
