filter.h
1 #ifndef FILTER_H 2 #define FILTER_H 3 4 #include <QObject> 5 6 namespace qqsfpm { 7 8 class QQmlSortFilterProxyModel; 9 10 class Filter : public QObject 11 { 12 Q_OBJECT 13 Q_PROPERTY(bool enabled READ enabled WRITE setEnabled NOTIFY enabledChanged) 14 Q_PROPERTY(bool inverted READ inverted WRITE setInverted NOTIFY invertedChanged) 15 16 public: 17 explicit Filter(QObject *parent = nullptr); 18 virtual ~Filter() = default; 19 20 bool enabled() const; 21 void setEnabled(bool enabled); 22 23 bool inverted() const; 24 void setInverted(bool inverted); 25 26 bool filterAcceptsRow(const QModelIndex &sourceIndex, const QQmlSortFilterProxyModel& proxyModel) const; 27 28 virtual void proxyModelCompleted(const QQmlSortFilterProxyModel& proxyModel); 29 30 Q_SIGNALS: 31 void enabledChanged(); 32 void invertedChanged(); 33 void invalidated(); 34 35 protected: 36 virtual bool filterRow(const QModelIndex &sourceIndex, const QQmlSortFilterProxyModel& proxyModel) const = 0; 37 void invalidate(); 38 39 private: 40 bool m_enabled = true; 41 bool m_inverted = false; 42 }; 43 44 } 45 46 #endif // FILTER_H