summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorisanae <14251494+isanae@users.noreply.github.com>2020-02-09 02:29:06 -0500
committerisanae <14251494+isanae@users.noreply.github.com>2020-02-18 17:23:47 -0500
commitf9f31c57dcea9e3173d25e0c85e028891ad57fca (patch)
treede73f6c099de7b8de3d90756ee77668b71ea1781
parentb5c0b2b0a220275827cb67e56fc5cb0fc1ece6fa (diff)
added support for FilterWidget regexes
-rw-r--r--src/mainwindow.cpp4
-rw-r--r--src/modinfodialogimages.cpp8
-rw-r--r--src/settings.cpp18
-rw-r--r--src/settings.h6
4 files changed, 32 insertions, 4 deletions
diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp
index 8f2dd250..0efb043b 100644
--- a/src/mainwindow.cpp
+++ b/src/mainwindow.cpp
@@ -2075,6 +2075,8 @@ void MainWindow::readSettings()
s.geometry().restoreVisibility(ui->menuBar);
s.geometry().restoreVisibility(ui->statusBar);
+ FilterWidget::setOptions(s.interface().filterOptions());
+
{
// special case in case someone puts 0 in the INI
auto v = s.widgets().index(ui->executablesListBox);
@@ -2159,6 +2161,8 @@ void MainWindow::storeSettings()
m_Filters->saveState(s);
m_DataTab->saveState(s);
+
+ s.interface().setFilterOptions(FilterWidget::options());
}
QWidget* MainWindow::qtWidget()
diff --git a/src/modinfodialogimages.cpp b/src/modinfodialogimages.cpp
index 48b3bb3b..8a22045e 100644
--- a/src/modinfodialogimages.cpp
+++ b/src/modinfodialogimages.cpp
@@ -186,11 +186,11 @@ void ImagesTab::switchToFiltered()
const bool hasTextFilter = !m_filter.empty();
- for (auto& f : m_files.allFiles()) {
+ for (File& f : m_files.allFiles()) {
if (hasTextFilter) {
// check filter widget
- const auto m = m_filter.matches([&](auto&& what) {
- return f.path().contains(what, Qt::CaseInsensitive);
+ const auto m = m_filter.matches([&](const QRegularExpression& regex) {
+ return regex.match(f.filename()).hasMatch();
});
if (!m) {
@@ -201,7 +201,7 @@ void ImagesTab::switchToFiltered()
if (!m_ddsEnabled) {
// skip .dds files
- if (f.path().endsWith(".dds", Qt::CaseInsensitive)) {
+ if (f.filename().endsWith(".dds", Qt::CaseInsensitive)) {
continue;
}
}
diff --git a/src/settings.cpp b/src/settings.cpp
index 4431e7d9..761cd669 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1992,6 +1992,24 @@ void InterfaceSettings::setDoubleClicksOpenPreviews(bool b)
set(m_Settings, "Settings", "double_click_previews", b);
}
+FilterWidget::Options InterfaceSettings::filterOptions() const
+{
+ FilterWidget::Options o;
+
+ o.useRegex = get<bool>(m_Settings, "Settings", "filter_regex", false);
+ o.regexCaseSensitive = get<bool>(m_Settings, "Settings", "regex_case_sensitive", false);
+ o.regexExtended = get<bool>(m_Settings, "Settings", "regex_extended", false);
+
+ return o;
+}
+
+void InterfaceSettings::setFilterOptions(const FilterWidget::Options& o)
+{
+ set(m_Settings, "Settings", "filter_regex", o.useRegex);
+ set(m_Settings, "Settings", "regex_case_sensitive", o.regexCaseSensitive);
+ set(m_Settings, "Settings", "regex_extended", o.regexExtended);
+}
+
DiagnosticsSettings::DiagnosticsSettings(QSettings& settings)
: m_Settings(settings)
diff --git a/src/settings.h b/src/settings.h
index 678226c1..3d37bdd8 100644
--- a/src/settings.h
+++ b/src/settings.h
@@ -21,6 +21,7 @@ along with Mod Organizer. If not, see <http://www.gnu.org/licenses/>.
#define SETTINGS_H
#include "loadmechanism.h"
+#include <filterwidget.h>
#include <lootcli/lootcli.h>
#include <questionboxmemory.h>
#include <log.h>
@@ -615,6 +616,11 @@ public:
bool doubleClicksOpenPreviews() const;
void setDoubleClicksOpenPreviews(bool b);
+ // filter widget options
+ //
+ MOBase::FilterWidget::Options filterOptions() const;
+ void setFilterOptions(const MOBase::FilterWidget::Options& o);
+
private:
QSettings& m_Settings;
};