Lomiri
expressionfiltermodel.cpp
1 /*
2  * Copyright (C) 2017 Canonical Ltd.
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; version 3.
7  *
8  * This program is distributed in the hope that it will be useful,
9  * but WITHOUT ANY WARRANTY; without even the implied warranty of
10  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11  * GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program. If not, see <http://www.gnu.org/licenses/>.
15  */
16 
17 #include "expressionfiltermodel.h"
18 
19 ExpressionFilterModel::ExpressionFilterModel(QObject *parent)
20  : LomiriSortFilterProxyModelQML(parent)
21 {
22 }
23 
24 QJSValue ExpressionFilterModel::matchExpression() const
25 {
26  return m_matchExpression;
27 }
28 
29 void ExpressionFilterModel::setMatchExpression(const QJSValue &value)
30 {
31  m_matchExpression = value;
32  invalidateFilter();
33 }
34 
35 bool
36 ExpressionFilterModel::filterAcceptsRow(int sourceRow,
37  const QModelIndex &sourceParent) const
38 {
39  if (m_matchExpression.isCallable()) {
40  QJSValueList args;
41  args << sourceRow;
42  QJSValue ret = m_matchExpression.call(args);
43  if (ret.isBool()) {
44  return ret.toBool();
45  }
46  }
47 
48  return LomiriSortFilterProxyModelQML::filterAcceptsRow(sourceRow, sourceParent);
49 }