/ filters / filter.h
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