/ filters / expressionfilter.h
expressionfilter.h
 1  #ifndef EXPRESSIONFILTER_H
 2  #define EXPRESSIONFILTER_H
 3  
 4  #include "filter.h"
 5  #include <QQmlScriptString>
 6  
 7  class QQmlExpression;
 8  
 9  namespace qqsfpm {
10  
11  class ExpressionFilter : public Filter
12  {
13      Q_OBJECT
14      Q_PROPERTY(QQmlScriptString expression READ expression WRITE setExpression NOTIFY expressionChanged)
15  
16  public:
17      using Filter::Filter;
18  
19      const QQmlScriptString& expression() const;
20      void setExpression(const QQmlScriptString& scriptString);
21  
22      void proxyModelCompleted(const QQmlSortFilterProxyModel& proxyModel) override;
23  
24  protected:
25      bool filterRow(const QModelIndex& sourceIndex, const QQmlSortFilterProxyModel& proxyModel) const override;
26  
27  Q_SIGNALS:
28      void expressionChanged();
29  
30  private:
31      void updateContext(const QQmlSortFilterProxyModel& proxyModel);
32      void updateExpression();
33  
34      QQmlScriptString m_scriptString;
35      QQmlExpression* m_expression = nullptr;
36      QQmlContext* m_context = nullptr;
37  };
38  
39  }
40  
41  #endif // EXPRESSIONFILTER_H