1
0
mirror of https://github.com/tomahawk-player/tomahawk.git synced 2025-08-21 05:11:44 +02:00

* Split up PlItem into Track- and TreeModelItem.

This commit is contained in:
Christian Muehlhaeuser
2011-04-06 12:51:16 +02:00
parent 1c409e40f2
commit f2308beb18
7 changed files with 28 additions and 60 deletions

View File

@@ -90,6 +90,7 @@ set( libSources
playlist/trackproxymodel.cpp playlist/trackproxymodel.cpp
playlist/trackview.cpp playlist/trackview.cpp
playlist/trackheader.cpp playlist/trackheader.cpp
playlist/treemodelitem.cpp
playlist/albumitem.cpp playlist/albumitem.cpp
playlist/albummodel.cpp playlist/albummodel.cpp
playlist/albumproxymodel.cpp playlist/albumproxymodel.cpp
@@ -245,6 +246,7 @@ set( libHeaders
playlist/trackproxymodel.h playlist/trackproxymodel.h
playlist/trackview.h playlist/trackview.h
playlist/trackheader.h playlist/trackheader.h
playlist/treemodelitem.h
playlist/albumitem.h playlist/albumitem.h
playlist/albummodel.h playlist/albummodel.h
playlist/albumproxymodel.h playlist/albumproxymodel.h

View File

@@ -49,8 +49,8 @@ CollectionModel::index( int row, int column, const QModelIndex& parent ) const
if ( !m_rootItem || row < 0 || column < 0 ) if ( !m_rootItem || row < 0 || column < 0 )
return QModelIndex(); return QModelIndex();
TrackModelItem* parentItem = itemFromIndex( parent ); TreeModelItem* parentItem = itemFromIndex( parent );
TrackModelItem* childItem = parentItem->children.value( row ); TreeModelItem* childItem = parentItem->children.value( row );
if ( !childItem ) if ( !childItem )
return QModelIndex(); return QModelIndex();
@@ -64,7 +64,7 @@ CollectionModel::rowCount( const QModelIndex& parent ) const
if ( parent.column() > 0 ) if ( parent.column() > 0 )
return 0; return 0;
TrackModelItem* parentItem = itemFromIndex( parent ); TreeModelItem* parentItem = itemFromIndex( parent );
if ( !parentItem ) if ( !parentItem )
return 0; return 0;
@@ -83,15 +83,15 @@ CollectionModel::columnCount( const QModelIndex& parent ) const
QModelIndex QModelIndex
CollectionModel::parent( const QModelIndex& child ) const CollectionModel::parent( const QModelIndex& child ) const
{ {
TrackModelItem* entry = itemFromIndex( child ); TreeModelItem* entry = itemFromIndex( child );
if ( !entry ) if ( !entry )
return QModelIndex(); return QModelIndex();
TrackModelItem* parentEntry = entry->parent; TreeModelItem* parentEntry = entry->parent;
if ( !parentEntry ) if ( !parentEntry )
return QModelIndex(); return QModelIndex();
TrackModelItem* grandparentEntry = parentEntry->parent; TreeModelItem* grandparentEntry = parentEntry->parent;
if ( !grandparentEntry ) if ( !grandparentEntry )
return QModelIndex(); return QModelIndex();
@@ -106,7 +106,7 @@ CollectionModel::data( const QModelIndex& index, int role ) const
if ( role != Qt::DisplayRole ) if ( role != Qt::DisplayRole )
return QVariant(); return QVariant();
TrackModelItem* entry = itemFromIndex( index ); TreeModelItem* entry = itemFromIndex( index );
if ( !entry ) if ( !entry )
return QVariant(); return QVariant();
@@ -199,7 +199,7 @@ CollectionModel::removeCollection( const collection_ptr& collection )
disconnect( collection.data(), SIGNAL( tracksFinished( Tomahawk::collection_ptr ) ), disconnect( collection.data(), SIGNAL( tracksFinished( Tomahawk::collection_ptr ) ),
this, SLOT( onTracksAddingFinished( Tomahawk::collection_ptr ) ) ); this, SLOT( onTracksAddingFinished( Tomahawk::collection_ptr ) ) );
QList<TrackModelItem*> plitems = m_collectionIndex.values( collection ); QList<TreeModelItem*> plitems = m_collectionIndex.values( collection );
m_collectionIndex.remove( collection ); m_collectionIndex.remove( collection );
} }
@@ -210,17 +210,17 @@ CollectionModel::onTracksAdded( const QList<Tomahawk::query_ptr>& tracks, const
{ {
// int c = rowCount( QModelIndex() ); // int c = rowCount( QModelIndex() );
TrackModelItem* plitem; TreeModelItem* plitem;
foreach( const Tomahawk::query_ptr& query, tracks ) foreach( const Tomahawk::query_ptr& query, tracks )
{ {
TrackModelItem* parent = m_rootItem; TreeModelItem* parent = m_rootItem;
if ( parent->hash.contains( query->artist() ) ) if ( parent->hash.contains( query->artist() ) )
{ {
parent = parent->hash.value( query->artist() ); parent = parent->hash.value( query->artist() );
} }
else else
{ {
parent = new TrackModelItem( query->artist(), m_rootItem ); parent = new TreeModelItem( query->artist(), m_rootItem );
m_rootItem->hash.insert( query->artist(), parent ); m_rootItem->hash.insert( query->artist(), parent );
} }
@@ -232,14 +232,14 @@ CollectionModel::onTracksAdded( const QList<Tomahawk::query_ptr>& tracks, const
} }
else else
{ {
TrackModelItem* subitem = new TrackModelItem( query->album(), parent ); TreeModelItem* subitem = new TreeModelItem( query->album(), parent );
parent->hash.insert( query->album(), subitem ); parent->hash.insert( query->album(), subitem );
parent->childCount++; parent->childCount++;
subitem->childCount++; subitem->childCount++;
parent = subitem; parent = subitem;
} }
plitem = new TrackModelItem( query, parent ); plitem = new TreeModelItem( query, parent );
m_collectionIndex.insertMulti( collection, plitem ); m_collectionIndex.insertMulti( collection, plitem );
} }
@@ -275,11 +275,11 @@ CollectionModel::onSourceOffline( Tomahawk::source_ptr src )
} }
TrackModelItem* TreeModelItem*
CollectionModel::itemFromIndex( const QModelIndex& index ) const CollectionModel::itemFromIndex( const QModelIndex& index ) const
{ {
if ( index.isValid() ) if ( index.isValid() )
return static_cast<TrackModelItem*>( index.internalPointer() ); return static_cast<TreeModelItem*>( index.internalPointer() );
else else
{ {
return m_rootItem; return m_rootItem;

View File

@@ -23,7 +23,7 @@
#include <QList> #include <QList>
#include <QHash> #include <QHash>
#include "trackmodelitem.h" #include "treemodelitem.h"
#include "collection.h" #include "collection.h"
#include "query.h" #include "query.h"
#include "typedefs.h" #include "typedefs.h"
@@ -62,7 +62,7 @@ public:
virtual void setRepeatMode( PlaylistInterface::RepeatMode /*mode*/ ) {} virtual void setRepeatMode( PlaylistInterface::RepeatMode /*mode*/ ) {}
virtual void setShuffled( bool /*shuffled*/ ) {} virtual void setShuffled( bool /*shuffled*/ ) {}
TrackModelItem* itemFromIndex( const QModelIndex& index ) const; TreeModelItem* itemFromIndex( const QModelIndex& index ) const;
signals: signals:
void repeatModeChanged( PlaylistInterface::RepeatMode mode ); void repeatModeChanged( PlaylistInterface::RepeatMode mode );
@@ -79,8 +79,8 @@ private slots:
void onSourceOffline( Tomahawk::source_ptr src ); void onSourceOffline( Tomahawk::source_ptr src );
private: private:
TrackModelItem* m_rootItem; TreeModelItem* m_rootItem;
QMap< Tomahawk::collection_ptr, TrackModelItem* > m_collectionIndex; QMap< Tomahawk::collection_ptr, TreeModelItem* > m_collectionIndex;
}; };
#endif // COLLECTIONMODEL_H #endif // COLLECTIONMODEL_H

View File

@@ -46,11 +46,6 @@ CollectionProxyModel::lessThan( const QModelIndex& left, const QModelIndex& righ
const Tomahawk::query_ptr& q1 = p1->query(); const Tomahawk::query_ptr& q1 = p1->query();
const Tomahawk::query_ptr& q2 = p2->query(); const Tomahawk::query_ptr& q2 = p2->query();
if ( q1.isNull() || q2.isNull() )
{
return QString::localeAwareCompare( p1->caption, p2->caption ) < 0;
}
QString artist1 = q1->artist(); QString artist1 = q1->artist();
QString artist2 = q2->artist(); QString artist2 = q2->artist();
QString album1 = q1->album(); QString album1 = q1->album();

View File

@@ -127,21 +127,6 @@ TrackModel::data( const QModelIndex& index, int role ) const
return QVariant(); return QVariant();
const query_ptr& query = entry->query(); const query_ptr& query = entry->query();
if ( query.isNull() )
{
if ( !index.column() )
{
return entry->caption.isEmpty() ? "Unknown" : entry->caption;
}
if ( index.column() == 1 )
{
return entry->childCount;
}
return QVariant( "" );
}
if ( !query->numResults() ) if ( !query->numResults() )
{ {
switch( index.column() ) switch( index.column() )

View File

@@ -56,22 +56,6 @@ TrackModelItem::TrackModelItem( TrackModelItem* parent, QAbstractItemModel* mode
} }
TrackModelItem::TrackModelItem( const QString& caption, TrackModelItem* parent )
{
this->parent = parent;
this->caption = caption;
this->model = parent->model;
childCount = 0;
m_isPlaying = false;
toberemoved = false;
if ( parent )
{
parent->children.append( this );
}
}
TrackModelItem::TrackModelItem( const Tomahawk::query_ptr& query, TrackModelItem* parent, int row ) TrackModelItem::TrackModelItem( const Tomahawk::query_ptr& query, TrackModelItem* parent, int row )
: QObject( parent ) : QObject( parent )
{ {
@@ -86,16 +70,21 @@ TrackModelItem::TrackModelItem( const Tomahawk::plentry_ptr& entry, TrackModelIt
setupItem( entry->query(), parent, row ); setupItem( entry->query(), parent, row );
} }
const Tomahawk::plentry_ptr& const Tomahawk::plentry_ptr&
TrackModelItem::entry() const TrackModelItem::entry() const
{ {
return m_entry; return m_entry;
} }
const Tomahawk::query_ptr& const Tomahawk::query_ptr&
TrackModelItem::query() const TrackModelItem::query() const
{ {
if ( !m_entry.isNull() ) return m_entry->query(); else return m_query; if ( !m_entry.isNull() )
return m_entry->query();
else
return m_query;
} }
@@ -123,7 +112,7 @@ TrackModelItem::setupItem( const Tomahawk::query_ptr& query, TrackModelItem* par
m_query = query; m_query = query;
if ( query->numResults() ) if ( query->numResults() )
{ {
emit dataChanged(); // emit dataChanged();
} }
else else
{ {

View File

@@ -37,7 +37,6 @@ public:
virtual ~TrackModelItem(); virtual ~TrackModelItem();
explicit TrackModelItem( TrackModelItem* parent = 0, QAbstractItemModel* model = 0 ); explicit TrackModelItem( TrackModelItem* parent = 0, QAbstractItemModel* model = 0 );
explicit TrackModelItem( const QString& caption, TrackModelItem* parent = 0 );
explicit TrackModelItem( const Tomahawk::query_ptr& query, TrackModelItem* parent = 0, int row = -1 ); explicit TrackModelItem( const Tomahawk::query_ptr& query, TrackModelItem* parent = 0, int row = -1 );
explicit TrackModelItem( const Tomahawk::plentry_ptr& entry, TrackModelItem* parent = 0, int row = -1 ); explicit TrackModelItem( const Tomahawk::plentry_ptr& entry, TrackModelItem* parent = 0, int row = -1 );
@@ -49,8 +48,6 @@ public:
TrackModelItem* parent; TrackModelItem* parent;
QVector<TrackModelItem*> children; QVector<TrackModelItem*> children;
QHash<QString, TrackModelItem*> hash;
QString caption;
int childCount; int childCount;
QPersistentModelIndex index; QPersistentModelIndex index;
QAbstractItemModel* model; QAbstractItemModel* model;