diff options
Diffstat (limited to 'src/waylandentriesfiltered.h')
-rw-r--r-- | src/waylandentriesfiltered.h | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/src/waylandentriesfiltered.h b/src/waylandentriesfiltered.h new file mode 100644 index 0000000..e562a7d --- /dev/null +++ b/src/waylandentriesfiltered.h @@ -0,0 +1,41 @@ +#ifndef WAYLANDENTIRESFILTERED_H +#define WAYLANDENTIRESFILTERED_H + +#include <QSortFilterProxyModel> +#include <QObject> + +class WaylandEntries; +namespace KaZoe { + class DesktopEntries; +} + +class WaylandEntriesFiltered : public QSortFilterProxyModel +{ + Q_OBJECT + Q_PROPERTY(QObject *model READ model WRITE setModel NOTIFY modelChanged) + Q_PROPERTY(QString roleFilter READ roleFilter WRITE setRoleFilter NOTIFY roleFilterChanged) + Q_PROPERTY(int length READ length NOTIFY lengthChanged) + KaZoe::DesktopEntries *m_entries {nullptr}; + +public: + explicit WaylandEntriesFiltered(QObject *parent = nullptr); + QString roleFilter() const; + void setRoleFilter(const QString &roles); + bool filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const override; + + QObject *model() const; + void setModel(QObject *newModel); + + int length(); + +signals: + void roleFilterChanged(); + void modelChanged(QObject * model); + void lengthChanged(); + +private: + QStringList m_roleFilter; + WaylandEntries *m_model = nullptr; +}; + +#endif // WAYLANDENTIRESFILTERED_H |