diff options
| author | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-09 02:29:06 -0500 |
|---|---|---|
| committer | isanae <14251494+isanae@users.noreply.github.com> | 2020-02-18 17:23:47 -0500 |
| commit | f9f31c57dcea9e3173d25e0c85e028891ad57fca (patch) | |
| tree | de73f6c099de7b8de3d90756ee77668b71ea1781 | |
| parent | b5c0b2b0a220275827cb67e56fc5cb0fc1ece6fa (diff) | |
added support for FilterWidget regexes
| -rw-r--r-- | src/mainwindow.cpp | 4 | ||||
| -rw-r--r-- | src/modinfodialogimages.cpp | 8 | ||||
| -rw-r--r-- | src/settings.cpp | 18 | ||||
| -rw-r--r-- | src/settings.h | 6 |
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; }; |
