1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-06 14:16:32 +02:00

* PlayableProxyModel now supports setting a maximum amount of visible items.

This commit is contained in:
Christian Muehlhaeuser
2012-06-16 06:40:19 +02:00
parent 264095d351
commit 5ff36d670f
2 changed files with 20 additions and 0 deletions

View File

@@ -34,6 +34,7 @@ PlayableProxyModel::PlayableProxyModel( QObject* parent )
: QSortFilterProxyModel( parent ) : QSortFilterProxyModel( parent )
, m_model( 0 ) , m_model( 0 )
, m_showOfflineResults( true ) , m_showOfflineResults( true )
, m_maxVisibleItems( -1 )
{ {
setFilterCaseSensitivity( Qt::CaseInsensitive ); setFilterCaseSensitivity( Qt::CaseInsensitive );
setSortCaseSensitivity( Qt::CaseInsensitive ); setSortCaseSensitivity( Qt::CaseInsensitive );
@@ -97,6 +98,9 @@ PlayableProxyModel::filterAcceptsRow( int sourceRow, const QModelIndex& sourcePa
PlayableItem* pi = itemFromIndex( sourceModel()->index( sourceRow, 0, sourceParent ) ); PlayableItem* pi = itemFromIndex( sourceModel()->index( sourceRow, 0, sourceParent ) );
if ( !pi ) if ( !pi )
return false; return false;
if ( m_maxVisibleItems >= 0 && sourceRow > m_maxVisibleItems - 1 )
return false;
if ( pi->query() ) 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 bool
PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const Tomahawk::query_ptr& q2 ) const PlayableProxyModel::lessThan( int column, const Tomahawk::query_ptr& q1, const Tomahawk::query_ptr& q2 ) const
{ {

View File

@@ -50,6 +50,9 @@ public:
virtual bool showOfflineResults() const { return m_showOfflineResults; } virtual bool showOfflineResults() const { return m_showOfflineResults; }
virtual void setShowOfflineResults( bool b ) { m_showOfflineResults = b; } 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 ); } 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; virtual bool lessThan( int column, const Tomahawk::query_ptr& left, const Tomahawk::query_ptr& right ) const;
PlayableModel* m_model; PlayableModel* m_model;
bool m_showOfflineResults; bool m_showOfflineResults;
int m_maxVisibleItems;
}; };
#endif // TRACKPROXYMODEL_H #endif // TRACKPROXYMODEL_H