summaryrefslogtreecommitdiff
path: root/src/modinfodialog.cpp
diff options
context:
space:
mode:
authorAl <26797547+Al12rs@users.noreply.github.com>2020-01-22 23:09:45 +0100
committerGitHub <noreply@github.com>2020-01-22 23:09:45 +0100
commiteacbe101f180b48bb48bf36d84125ed8cfd4901a (patch)
tree217440ae03e9a9e9cf53b15cd9309f972a7d34a2 /src/modinfodialog.cpp
parent84678a3a2866ebb9d32337948b3f634efa08b7e6 (diff)
parent7c55ae3a2233c1031504cefeab059b7a83fc5bf9 (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.cpp44
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)
{