From 1181e18feb22581d783772f359c15f647b670930 Mon Sep 17 00:00:00 2001 From: Christian Muehlhaeuser Date: Wed, 13 Aug 2014 01:14:36 +0200 Subject: [PATCH] * PlayableModel can now handle items as tree-structures. --- src/libtomahawk/playlist/PlayableModel.cpp | 21 ++++++++++++--------- src/libtomahawk/playlist/PlayableModel.h | 8 ++++---- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/libtomahawk/playlist/PlayableModel.cpp b/src/libtomahawk/playlist/PlayableModel.cpp index bb669f138..98ac85129 100644 --- a/src/libtomahawk/playlist/PlayableModel.cpp +++ b/src/libtomahawk/playlist/PlayableModel.cpp @@ -656,7 +656,7 @@ PlayableModel::queries() const template void -PlayableModel::insertInternal( const QList< T >& items, int row, const QList< Tomahawk::PlaybackLog >& logs ) +PlayableModel::insertInternal( const QList< T >& items, int row, const QList< Tomahawk::PlaybackLog >& logs, const QModelIndex& parent ) { Q_D( PlayableModel ); if ( !items.count() ) @@ -672,14 +672,16 @@ PlayableModel::insertInternal( const QList< T >& items, int row, const QList< To crows.first = c; crows.second = c + items.count() - 1; - emit beginInsertRows( QModelIndex(), crows.first, crows.second ); + emit beginInsertRows( parent, crows.first, crows.second ); int i = 0; PlayableItem* plitem; foreach ( const T& item, items ) { - plitem = new PlayableItem( item, d->rootItem, row + i ); + PlayableItem* pItem = itemFromIndex( parent ); + plitem = new PlayableItem( item, pItem, row + i ); plitem->index = createIndex( row + i, 0, plitem ); + if ( plitem->query() ) { if ( !plitem->query()->playable() ) @@ -709,6 +711,7 @@ PlayableModel::insertInternal( const QList< T >& items, int row, const QList< To emit endInsertRows(); emit itemCountChanged( rowCount( QModelIndex() ) ); + finishLoading(); } @@ -729,9 +732,9 @@ PlayableModel::removeRows( int row, int count, const QModelIndex& parent ) void -PlayableModel::remove( int row, bool moreToCome ) +PlayableModel::remove( int row, bool moreToCome, const QModelIndex& parent ) { - removeIndex( index( row, 0, QModelIndex() ), moreToCome ); + removeIndex( index( row, 0, parent ), moreToCome ); } @@ -1046,14 +1049,14 @@ PlayableModel::insertAlbum( const Tomahawk::album_ptr& album, int row ) void -PlayableModel::insertQuery( const Tomahawk::query_ptr& query, int row, const Tomahawk::PlaybackLog& log ) +PlayableModel::insertQuery( const Tomahawk::query_ptr& query, int row, const Tomahawk::PlaybackLog& log, const QModelIndex& parent ) { QList< query_ptr > queries; queries << query; QList< Tomahawk::PlaybackLog > logs; logs << log; - insertQueries( queries, row, logs ); + insertQueries( queries, row, logs, parent ); } @@ -1072,9 +1075,9 @@ PlayableModel::insertAlbums( const QList< Tomahawk::album_ptr >& albums, int row void -PlayableModel::insertQueries( const QList< Tomahawk::query_ptr >& queries, int row, const QList< Tomahawk::PlaybackLog >& logs ) +PlayableModel::insertQueries( const QList< Tomahawk::query_ptr >& queries, int row, const QList< Tomahawk::PlaybackLog >& logs, const QModelIndex& parent ) { - insertInternal( queries, row, logs ); + insertInternal( queries, row, logs, parent ); } diff --git a/src/libtomahawk/playlist/PlayableModel.h b/src/libtomahawk/playlist/PlayableModel.h index bea3d20e4..194ff0313 100644 --- a/src/libtomahawk/playlist/PlayableModel.h +++ b/src/libtomahawk/playlist/PlayableModel.h @@ -161,16 +161,16 @@ public slots: virtual void appendAlbum( const Tomahawk::album_ptr& album ); virtual void appendTracks( const Tomahawk::collection_ptr& collection ); - virtual void insertQueries( const QList< Tomahawk::query_ptr >& queries, int row = 0, const QList< Tomahawk::PlaybackLog >& logs = QList< Tomahawk::PlaybackLog >() ); + virtual void insertQueries( const QList< Tomahawk::query_ptr >& queries, int row = 0, const QList< Tomahawk::PlaybackLog >& logs = QList< Tomahawk::PlaybackLog >(), const QModelIndex& parent = QModelIndex() ); virtual void insertArtists( const QList< Tomahawk::artist_ptr >& artists, int row = 0 ); virtual void insertAlbums( const QList< Tomahawk::album_ptr >& albums, int row = 0 ); - virtual void insertQuery( const Tomahawk::query_ptr& query, int row = 0, const Tomahawk::PlaybackLog& log = Tomahawk::PlaybackLog() ); + virtual void insertQuery( const Tomahawk::query_ptr& query, int row = 0, const Tomahawk::PlaybackLog& log = Tomahawk::PlaybackLog(), const QModelIndex& parent = QModelIndex() ); virtual void insertArtist( const Tomahawk::artist_ptr& artist, int row = 0 ); virtual void insertAlbum( const Tomahawk::album_ptr& album, int row = 0 ); virtual void insertTracks( const Tomahawk::collection_ptr& collection, int row = 0 ); virtual bool removeRows( int row, int count, const QModelIndex& parent = QModelIndex() ); - virtual void remove( int row, bool moreToCome = false ); + virtual void remove( int row, bool moreToCome = false, const QModelIndex& parent = QModelIndex() ); virtual void removeIndex( const QModelIndex& index, bool moreToCome = false ); virtual void removeIndexes( const QList& indexes ); virtual void removeIndexes( const QList& indexes ); @@ -199,7 +199,7 @@ private slots: private: void init(); template - void insertInternal( const QList< T >& items, int row, const QList< Tomahawk::PlaybackLog >& logs = QList< Tomahawk::PlaybackLog >() ); + void insertInternal( const QList< T >& items, int row, const QList< Tomahawk::PlaybackLog >& logs = QList< Tomahawk::PlaybackLog >(), const QModelIndex& parent = QModelIndex() ); QString scoreText( float score ) const; Qt::Alignment columnAlignment( int column ) const;