summaryrefslogtreecommitdiff
path: root/src/settingsdialogworkarounds.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/settingsdialogworkarounds.cpp')
-rw-r--r--src/settingsdialogworkarounds.cpp89
1 files changed, 89 insertions, 0 deletions
diff --git a/src/settingsdialogworkarounds.cpp b/src/settingsdialogworkarounds.cpp
index 36e5dd44..849e2085 100644
--- a/src/settingsdialogworkarounds.cpp
+++ b/src/settingsdialogworkarounds.cpp
@@ -34,6 +34,8 @@ WorkaroundsSettingsTab::WorkaroundsSettingsTab(Settings& s, SettingsDialog& d)
// buttons
m_ExecutableBlacklist = settings().executablesBlacklist();
+ m_SkipFileSuffixes = settings().skipFileSuffixes();
+ m_SkipDirectories = settings().skipDirectories();
QObject::connect(ui->bsaDateBtn, &QPushButton::clicked, [&] {
on_bsaDateBtn_clicked();
@@ -41,6 +43,12 @@ WorkaroundsSettingsTab::WorkaroundsSettingsTab(Settings& s, SettingsDialog& d)
QObject::connect(ui->execBlacklistBtn, &QPushButton::clicked, [&] {
on_execBlacklistBtn_clicked();
});
+ QObject::connect(ui->skipFileSuffixBtn, &QPushButton::clicked, [&] {
+ on_skipFileSuffixBtn_clicked();
+ });
+ QObject::connect(ui->skipDirectoriesBtn, &QPushButton::clicked, [&] {
+ on_skipDirectoriesBtn_clicked();
+ });
QObject::connect(ui->resetGeometryBtn, &QPushButton::clicked, [&] {
on_resetGeometryBtn_clicked();
});
@@ -69,6 +77,8 @@ void WorkaroundsSettingsTab::update()
// buttons
settings().setExecutablesBlacklist(m_ExecutableBlacklist);
+ settings().setSkipFileSuffixes(m_SkipFileSuffixes);
+ settings().setSkipDirectories(m_SkipDirectories);
}
bool WorkaroundsSettingsTab::changeBlacklistNow(QWidget* parent, Settings& settings)
@@ -114,6 +124,71 @@ WorkaroundsSettingsTab::changeBlacklistLater(QWidget* parent, const QString& cur
return blacklist.join(";");
}
+std::optional<QStringList>
+WorkaroundsSettingsTab::changeSkipFileSuffixes(QWidget* parent,
+ const QStringList& current)
+{
+ bool ok = false;
+
+ QString result = QInputDialog::getMultiLineText(
+ parent, QObject::tr("Skip File Suffixes"),
+ QObject::tr(
+ "Enter one file suffix per line to be skipped / ignored from the virtual "
+ "file system.\n"
+ "Not to be confused with file extensions, file suffixes are simply how the "
+ "filename ends.\n\n"
+ "Example:\n"
+ " .txt - Would skip all files that end with .txt, <any text>.txt\n"
+ " some_file.txt - Would skip all files that end with some_file.txt, <any "
+ "text>some_file.txt"),
+ current.join("\n"), &ok);
+
+ if (!ok) {
+ return {};
+ }
+
+ QStringList fileSuffixes;
+ for (auto& suffix : result.split("\n")) {
+ auto trimmed = suffix.trimmed();
+ if (!trimmed.isEmpty()) {
+ fileSuffixes << trimmed;
+ }
+ }
+
+ return fileSuffixes;
+}
+
+std::optional<QStringList>
+WorkaroundsSettingsTab::changeSkipDirectories(QWidget* parent,
+ const QStringList& current)
+{
+ bool ok = false;
+
+ QString result = QInputDialog::getMultiLineText(
+ parent, QObject::tr("Skip Directories"),
+ QObject::tr(
+ "Enter one directory per line to be skipped / ignored from the virtual "
+ "file system.\n\n"
+ "Example:\n"
+ " .git\n"
+ " instructions"),
+ current.join("\n"), &ok);
+
+ if (!ok) {
+ return {};
+ }
+
+ QStringList directories;
+ for (auto& dir : result.split("\n")) {
+ auto trimmed = dir.trimmed();
+ if (!trimmed.isEmpty()) {
+ directories << trimmed;
+ }
+ }
+
+ return directories;
+}
+
void WorkaroundsSettingsTab::on_execBlacklistBtn_clicked()
{
if (auto s = changeBlacklistLater(parentWidget(), m_ExecutableBlacklist)) {
@@ -121,6 +196,20 @@ void WorkaroundsSettingsTab::on_execBlacklistBtn_clicked()
}
}
+void WorkaroundsSettingsTab::on_skipFileSuffixBtn_clicked()
+{
+ if (auto s = changeSkipFileSuffixes(parentWidget(), m_SkipFileSuffixes)) {
+ m_SkipFileSuffixes = *s;
+ }
+}
+
+void WorkaroundsSettingsTab::on_skipDirectoriesBtn_clicked()
+{
+ if (auto s = changeSkipDirectories(parentWidget(), m_SkipDirectories)) {
+ m_SkipDirectories = *s;
+ }
+}
+
void WorkaroundsSettingsTab::on_bsaDateBtn_clicked()
{
const auto* game = qApp->property("managed_game").value<MOBase::IPluginGame*>();