diff options
Diffstat (limited to 'src/bookmarkspanel/bookmarksproxy.cpp')
-rw-r--r-- | src/bookmarkspanel/bookmarksproxy.cpp | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/bookmarkspanel/bookmarksproxy.cpp b/src/bookmarkspanel/bookmarksproxy.cpp new file mode 100644 index 00000000..87d1ce71 --- /dev/null +++ b/src/bookmarkspanel/bookmarksproxy.cpp @@ -0,0 +1,29 @@ +#include "bookmarksproxy.h" + +BookmarksProxy::BookmarksProxy( QObject *parent ): + QSortFilterProxyModel( parent ) +{ +} + +bool BookmarksProxy::filterAcceptsRow( int source_row, const QModelIndex &source_parent ) const +{ + QModelIndex idx = sourceModel()->index( source_row, 0, source_parent ); + +// return idx.data().toString().contains( filterRegExp() ); + return recursiveMatch( idx ); +} + +bool BookmarksProxy::recursiveMatch( const QModelIndex &index ) const +{ + if( index.data().toString().contains( filterRegExp() ) ) { + return true; + } + + for( int childRow = 0; childRow < sourceModel()->rowCount( index ); ++childRow ) { + if( recursiveMatch( sourceModel()->index( childRow, 0, index ) ) ) { + return true; + } + } + + return false; +} |