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