diff --git a/src/libtomahawk/playlist/PlayableProxyModel.cpp b/src/libtomahawk/playlist/PlayableProxyModel.cpp index 783250f6c..55fa4ba60 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.cpp +++ b/src/libtomahawk/playlist/PlayableProxyModel.cpp @@ -34,6 +34,7 @@ PlayableProxyModel::PlayableProxyModel( QObject* parent ) : QSortFilterProxyModel( parent ) , m_model( 0 ) , m_showOfflineResults( true ) + , m_maxVisibleItems( -1 ) { setFilterCaseSensitivity( Qt::CaseInsensitive ); setSortCaseSensitivity( Qt::CaseInsensitive ); @@ -97,6 +98,9 @@ PlayableProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourcePa PlayableItem* pi = itemFromIndex( sourceModel()->index( sourceRow, 0, sourceParent ) ); if ( !pi ) return false; + + if ( m_maxVisibleItems >= 0 && sourceRow > m_maxVisibleItems - 1 ) + return false; if ( pi->query() ) { @@ -211,6 +215,17 @@ PlayableProxyModel::remove( const QList< QPersistentModelIndex >& indexes ) } +void +PlayableProxyModel::setMaxVisibleItems( int items ) +{ + if ( m_maxVisibleItems == items ) + return; + + m_maxVisibleItems = items; + invalidateFilter(); +} + + bool PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const Tomahawk::query_ptr& q2 ) const { diff --git a/src/libtomahawk/playlist/PlayableProxyModel.h b/src/libtomahawk/playlist/PlayableProxyModel.h index 2e2f2b662..aad74f3e5 100644 --- a/src/libtomahawk/playlist/PlayableProxyModel.h +++ b/src/libtomahawk/playlist/PlayableProxyModel.h @@ -50,6 +50,9 @@ public: virtual bool showOfflineResults() const { return m_showOfflineResults; } virtual void setShowOfflineResults( bool b ) { m_showOfflineResults = b; } + + virtual int maxVisibleItems() const { return m_maxVisibleItems; } + virtual void setMaxVisibleItems( int items ); virtual void emitFilterChanged( const QString &pattern ) { emit filterChanged( pattern ); } @@ -76,7 +79,9 @@ private: virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const; PlayableModel* m_model; + bool m_showOfflineResults; + int m_maxVisibleItems; }; #endif // TRACKPROXYMODEL_H