anyoffilter.cpp
1 #include "anyoffilter.h" 2 3 namespace qqsfpm { 4 5 /*! 6 \qmltype AnyOf 7 \inherits Filter 8 \inqmlmodule SortFilterProxyModel 9 \ingroup Filters 10 \ingroup FilterContainer 11 \brief Filter container accepting rows accepted by at least one of its child filters. 12 13 The AnyOf type is a \l Filter container that accepts rows if any of its contained (and enabled) filters accept them. 14 15 In the following example, only the rows where the \c firstName role or the \c lastName role match the text entered in the \c nameTextField will be accepted : 16 \code 17 TextField { 18 id: nameTextField 19 } 20 21 SortFilterProxyModel { 22 sourceModel: contactModel 23 filters: AnyOf { 24 RegExpFilter { 25 roleName: "lastName" 26 pattern: nameTextField.text 27 caseSensitivity: Qt.CaseInsensitive 28 } 29 RegExpFilter { 30 roleName: "firstName" 31 pattern: nameTextField.text 32 caseSensitivity: Qt.CaseInsensitive 33 } 34 } 35 } 36 \endcode 37 \sa FilterContainer 38 */ 39 bool AnyOfFilter::filterRow(const QModelIndex& sourceIndex, const QQmlSortFilterProxyModel& proxyModel) const 40 { 41 //return true if any of the enabled filters return true 42 return std::any_of(m_filters.begin(), m_filters.end(), 43 [&sourceIndex, &proxyModel] (Filter* filter) { 44 return filter->enabled() && filter->filterAcceptsRow(sourceIndex, proxyModel); 45 } 46 ); 47 } 48 49 }