diff options
| author | Al <26797547+Al12rs@users.noreply.github.com> | 2020-01-22 23:09:45 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-01-22 23:09:45 +0100 |
| commit | eacbe101f180b48bb48bf36d84125ed8cfd4901a (patch) | |
| tree | 217440ae03e9a9e9cf53b15cd9309f972a7d34a2 /src/modinfodialog.cpp | |
| parent | 84678a3a2866ebb9d32337948b3f634efa08b7e6 (diff) | |
| parent | 7c55ae3a2233c1031504cefeab059b7a83fc5bf9 (diff) | |
Merge pull request #979 from Al12rs/hidden-files-flag
Add Restore hidden files option and clean up hidden files code
Diffstat (limited to 'src/modinfodialog.cpp')
| -rw-r--r-- | src/modinfodialog.cpp | 44 |
1 files changed, 42 insertions, 2 deletions
diff --git a/src/modinfodialog.cpp b/src/modinfodialog.cpp index f5ca1de7..302175aa 100644 --- a/src/modinfodialog.cpp +++ b/src/modinfodialog.cpp @@ -97,7 +97,7 @@ bool canHideFile(bool isArchive, const QString& filename) return false; } - if (filename.endsWith(ModInfo::s_HiddenExt)) { + if (filename.endsWith(ModInfo::s_HiddenExt, Qt::CaseInsensitive)) { // already hidden return false; } @@ -112,7 +112,7 @@ bool canUnhideFile(bool isArchive, const QString& filename) return false; } - if (!filename.endsWith(ModInfo::s_HiddenExt)) { + if (!filename.endsWith(ModInfo::s_HiddenExt, Qt::CaseInsensitive)) { // already visible return false; } @@ -133,6 +133,46 @@ FileRenamer::RenameResults unhideFile(FileRenamer& renamer, const QString &oldNa } +FileRenamer::RenameResults restoreHiddenFilesRecursive(FileRenamer& renamer, const QString& targetDir) +{ + FileRenamer::RenameResults results = FileRenamer::RESULT_OK; + QDir currentDir = targetDir; + for (QString hiddenFile : currentDir.entryList( + (QStringList() << "*" + ModInfo::s_HiddenExt), + QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot)) { + + QString oldName = currentDir.absoluteFilePath(hiddenFile); + QString newName = oldName.left(oldName.length() - ModInfo::s_HiddenExt.length()); + + auto partialResult = renamer.rename(oldName, newName); + + if (partialResult == FileRenamer::RESULT_CANCEL) { + return FileRenamer::RESULT_CANCEL; + } + + if (partialResult == FileRenamer::RESULT_SKIP) { + results = FileRenamer::RESULT_SKIP; + } + } + + for (QString dirName : currentDir.entryList(QDir::AllDirs | QDir::NoDotAndDotDot)) { + + const QString dirPath = currentDir.absoluteFilePath(dirName); + // recurse on childrend directories + auto partialResult = restoreHiddenFilesRecursive(renamer, dirPath); + + if (partialResult == FileRenamer::RESULT_CANCEL) { + return FileRenamer::RESULT_CANCEL; + } + + if (partialResult == FileRenamer::RESULT_SKIP) { + results = FileRenamer::RESULT_SKIP; + } + } + return results; +} + + ModInfoDialog::TabInfo::TabInfo(std::unique_ptr<ModInfoDialogTab> tab) : tab(std::move(tab)), realPos(-1), widget(nullptr) { |
