diff options
author | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-03-15 14:12:03 +0300 |
---|---|---|
committer | Hannah von Reth <hannah.vonreth@owncloud.com> | 2022-03-15 14:12:03 +0300 |
commit | fd95b7a4de7fd3e0d091d1a72bbfe1eee255205a (patch) | |
tree | f47d3616cfec439db5ee19d7ad8336a24c19f713 /src/gui/models | |
parent | 0dd2065bd8fff67f30521f67c37af1fc2f1fb861 (diff) | |
parent | b35eec30325eb9933339e02e66640ca2082ade35 (diff) |
Merge remote-tracking branch 'origin/2.10'
Diffstat (limited to 'src/gui/models')
-rw-r--r-- | src/gui/models/models.cpp | 19 | ||||
-rw-r--r-- | src/gui/models/models.h | 20 |
2 files changed, 32 insertions, 7 deletions
diff --git a/src/gui/models/models.cpp b/src/gui/models/models.cpp index dc0b41987..0199d5e9b 100644 --- a/src/gui/models/models.cpp +++ b/src/gui/models/models.cpp @@ -22,6 +22,17 @@ #include <functional> +OCC::SignalledQSortFilterProxyModel::SignalledQSortFilterProxyModel(QObject *parent) + : QSortFilterProxyModel(parent) +{ +} + +void OCC::SignalledQSortFilterProxyModel::setFilterFixedStringSignalled(const QString &pattern) +{ + setFilterFixedString(pattern); + emit filterChanged(); +} + QString OCC::Models::formatSelection(const QModelIndexList &items, int dataRole) { if (items.isEmpty()) { @@ -77,9 +88,9 @@ QString OCC::Models::formatSelection(const QModelIndexList &items, int dataRole) return out; } -std::function<void()> OCC::Models::addFilterMenuItems(QMenu *menu, const QStringList &candidates, QSortFilterProxyModel *model, int column, const QString &columnName, int role) +std::function<void()> OCC::Models::addFilterMenuItems(QMenu *menu, const QStringList &candidates, SignalledQSortFilterProxyModel *model, int column, const QString &columnName, int role) { - menu->addAction(qApp->translate("OCC::Models", "%1 Filter:").arg(columnName))->setEnabled(false); + menu->addAction(QApplication::translate("OCC::Models", "%1 Filter:").arg(columnName))->setEnabled(false); auto filterGroup = new QActionGroup(menu); filterGroup->setExclusive(true); @@ -89,7 +100,7 @@ std::function<void()> OCC::Models::addFilterMenuItems(QMenu *menu, const QString auto action = menu->addAction(s, menu, [=]() { model->setFilterRole(role); model->setFilterKeyColumn(column); - model->setFilterFixedString(filter); + model->setFilterFixedStringSignalled(filter); }); action->setCheckable(true); if (currentFilter == filter) { @@ -100,7 +111,7 @@ std::function<void()> OCC::Models::addFilterMenuItems(QMenu *menu, const QString }; - auto noFilter = addAction(QApplication::translate("OCC::Models", "No filter"), QString()); + auto noFilter = addAction(QApplication::translate("OCC::Models", "All"), QString()); for (const auto &c : candidates) { addAction(c, c); diff --git a/src/gui/models/models.h b/src/gui/models/models.h index 9b302171f..eb0e7d487 100644 --- a/src/gui/models/models.h +++ b/src/gui/models/models.h @@ -14,6 +14,7 @@ #pragma once #include <QModelIndexList> +#include <QSortFilterProxyModel> #include <QString> #include <QtGlobal> @@ -22,6 +23,19 @@ class QMenu; namespace OCC { +class SignalledQSortFilterProxyModel : public QSortFilterProxyModel +{ + Q_OBJECT + +public: + SignalledQSortFilterProxyModel(QObject *parent = nullptr); + + void setFilterFixedStringSignalled(const QString &pattern); + +signals: + void filterChanged(); +}; + namespace Models { enum DataRoles { UnderlyingDataRole = Qt::UserRole + 100, @@ -33,7 +47,7 @@ namespace Models { */ QString formatSelection(const QModelIndexList &items, int dataRole = Qt::DisplayRole); - std::function<void()> addFilterMenuItems(QMenu *menu, const QStringList &candidates, QSortFilterProxyModel *model, int column, const QString &columnName, int role); + std::function<void()> addFilterMenuItems(QMenu *menu, const QStringList &candidates, SignalledQSortFilterProxyModel *model, int column, const QString &columnName, int role); /** * Returns a vector with indices @@ -55,5 +69,5 @@ namespace Models { { return range<T>(0, end); } -}; -} +} // OCC::Models namespace +} // OCC namespace |