diff --git a/src/libtomahawk/playlist/collectionview.cpp b/src/libtomahawk/playlist/collectionview.cpp index 61ed017ef..0847849e8 100644 --- a/src/libtomahawk/playlist/collectionview.cpp +++ b/src/libtomahawk/playlist/collectionview.cpp @@ -13,6 +13,7 @@ using namespace Tomahawk; CollectionView::CollectionView( QWidget* parent ) : TrackView( parent ) { + setGuid( "collectionview" ); setProxyModel( new CollectionProxyModel( this ) ); setSortingEnabled( true ); diff --git a/src/libtomahawk/playlist/playlistmodel.h b/src/libtomahawk/playlist/playlistmodel.h index b07be5bb0..3c6a90162 100644 --- a/src/libtomahawk/playlist/playlistmodel.h +++ b/src/libtomahawk/playlist/playlistmodel.h @@ -31,6 +31,8 @@ public: virtual bool dropMimeData( const QMimeData* data, Qt::DropAction action, int row, int column, const QModelIndex& parent ); + Tomahawk::playlist_ptr playlist() const { return m_playlist; } + void loadPlaylist( const Tomahawk::playlist_ptr& playlist ); void loadHistory( const Tomahawk::source_ptr& source, unsigned int amount = 100 ); diff --git a/src/libtomahawk/playlist/playlistview.cpp b/src/libtomahawk/playlist/playlistview.cpp index 443db1653..b11255f2e 100644 --- a/src/libtomahawk/playlist/playlistview.cpp +++ b/src/libtomahawk/playlist/playlistview.cpp @@ -4,6 +4,7 @@ #include #include +#include "playlist/playlistmodel.h" #include "playlist/playlistproxymodel.h" #include "widgets/overlaywidget.h" @@ -13,6 +14,7 @@ using namespace Tomahawk; PlaylistView::PlaylistView( QWidget* parent ) : TrackView( parent ) { + setGuid( "playlistview" ); setProxyModel( new PlaylistProxyModel( this ) ); setContextMenuPolicy( Qt::CustomContextMenu ); @@ -27,8 +29,13 @@ PlaylistView::~PlaylistView() void -PlaylistView::setModel( TrackModel* model ) +PlaylistView::setModel( PlaylistModel* model ) { + if ( !model->playlist().isNull() ) + setGuid( QString( "playlistview/%1" ).arg( model->playlist()->guid() ) ); + + m_model = model; + TrackView::setModel( model ); setColumnHidden( 5, true ); // Hide age column per default diff --git a/src/libtomahawk/playlist/playlistview.h b/src/libtomahawk/playlist/playlistview.h index 3aafe8002..1e7c80c70 100644 --- a/src/libtomahawk/playlist/playlistview.h +++ b/src/libtomahawk/playlist/playlistview.h @@ -7,6 +7,8 @@ #include "dllmacro.h" +class PlaylistModel; + class DLLEXPORT PlaylistView : public TrackView { Q_OBJECT @@ -15,7 +17,8 @@ public: explicit PlaylistView( QWidget* parent = 0 ); ~PlaylistView(); - virtual void setModel( TrackModel* model ); + PlaylistModel* playlistModel() const { return m_model; } + virtual void setModel( PlaylistModel* model ); protected: void keyPressEvent( QKeyEvent* event ); @@ -30,6 +33,8 @@ private slots: private: void setupMenus(); + PlaylistModel* m_model; + QMenu m_itemMenu; QAction* m_playItemAction; diff --git a/src/libtomahawk/playlist/trackheader.cpp b/src/libtomahawk/playlist/trackheader.cpp index bd088424c..7df6fb8ea 100644 --- a/src/libtomahawk/playlist/trackheader.cpp +++ b/src/libtomahawk/playlist/trackheader.cpp @@ -18,15 +18,15 @@ TrackHeader::TrackHeader( TrackView* parent ) , m_hiddenPct( 0.0 ) , m_init( false ) { - setStretchLastSection( false ); + setStretchLastSection( true ); setResizeMode( QHeaderView::Interactive ); setMinimumSectionSize( 60 ); setDefaultAlignment( Qt::AlignLeft ); setMovable( true ); // setCascadingSectionResizes( true ); - m_menu->addAction( tr( "Resize columns to fit window" ), this, SLOT( onToggleResizeColumns() ) ); - m_menu->addSeparator(); +// m_menu->addAction( tr( "Resize columns to fit window" ), this, SLOT( onToggleResizeColumns() ) ); +// m_menu->addSeparator(); connect( this, SIGNAL( sectionResized( int, int, int ) ), SLOT( onSectionResized( int, int, int ) ) ); connect( m_sigmap, SIGNAL( mapped( int ) ), SLOT( toggleVisibility( int ) ) ); @@ -90,7 +90,7 @@ TrackHeader::onResized() void TrackHeader::restoreColumnsState() { - QList list = TomahawkSettings::instance()->playlistColumnSizes(); + QList list = TomahawkSettings::instance()->playlistColumnSizes( m_parent->guid() ); if ( list.count() != count() ) // FIXME: const { @@ -112,7 +112,7 @@ TrackHeader::saveColumnsState() foreach( double w, m_columnWeights ) wlist << QVariant( w ); - TomahawkSettings::instance()->setPlaylistColumnSizes( wlist ); + TomahawkSettings::instance()->setPlaylistColumnSizes( m_parent->guid(), wlist ); } diff --git a/src/libtomahawk/playlist/trackview.cpp b/src/libtomahawk/playlist/trackview.cpp index 8e9a3d522..3317bd21b 100644 --- a/src/libtomahawk/playlist/trackview.cpp +++ b/src/libtomahawk/playlist/trackview.cpp @@ -57,7 +57,7 @@ TrackView::~TrackView() { qDebug() << Q_FUNC_INFO; - delete m_overlay; + delete m_header; } diff --git a/src/libtomahawk/playlist/trackview.h b/src/libtomahawk/playlist/trackview.h index 8965aad1b..51207506a 100644 --- a/src/libtomahawk/playlist/trackview.h +++ b/src/libtomahawk/playlist/trackview.h @@ -22,16 +22,18 @@ public: explicit TrackView( QWidget* parent = 0 ); ~TrackView(); + virtual QString guid() const { return m_guid; } + virtual void setGuid( const QString& guid ) { m_guid = guid; } + + virtual void setModel( TrackModel* model ); void setProxyModel( TrackProxyModel* model ); - TrackModel* model() const { return m_model; } + virtual TrackModel* model() const { return m_model; } TrackProxyModel* proxyModel() const { return m_proxyModel; } PlaylistItemDelegate* delegate() const { return m_delegate; } TrackHeader* header() const { return m_header; } OverlayWidget* overlay() const { return m_overlay; } - virtual void setModel( TrackModel* model ); - QModelIndex contextMenuIndex() const { return m_contextMenuIndex; } void setContextMenuIndex( const QModelIndex& idx ) { m_contextMenuIndex = idx; } @@ -59,6 +61,7 @@ private slots: void onFilterChanged( const QString& filter ); private: + QString m_guid; TrackModel* m_model; TrackProxyModel* m_proxyModel; PlaylistItemDelegate* m_delegate; diff --git a/src/libtomahawk/tomahawksettings.cpp b/src/libtomahawk/tomahawksettings.cpp index 09b0181f3..8a8f81bb8 100644 --- a/src/libtomahawk/tomahawksettings.cpp +++ b/src/libtomahawk/tomahawksettings.cpp @@ -185,16 +185,16 @@ TomahawkSettings::setMainWindowState( const QByteArray& state ) QList -TomahawkSettings::playlistColumnSizes() const +TomahawkSettings::playlistColumnSizes( const QString& playlistid ) const { - return value( "ui/playlist/columnSize" ).toList(); + return value( QString( "ui/playlist/%1/columnSizes" ).arg( playlistid ) ).toList(); } void -TomahawkSettings::setPlaylistColumnSizes( const QList& cols ) +TomahawkSettings::setPlaylistColumnSizes( const QString& playlistid, const QList& cols ) { - setValue( "ui/playlist/columnSize", cols ); + setValue( QString( "ui/playlist/%1/columnSizes" ).arg( playlistid ), cols ); } diff --git a/src/libtomahawk/tomahawksettings.h b/src/libtomahawk/tomahawksettings.h index db3aabb60..b54298288 100644 --- a/src/libtomahawk/tomahawksettings.h +++ b/src/libtomahawk/tomahawksettings.h @@ -32,8 +32,8 @@ public: void setMainWindowState( const QByteArray& state ); /// Playlist stuff - QList playlistColumnSizes() const; - void setPlaylistColumnSizes( const QList& cols ); + QList playlistColumnSizes( const QString& playlistid ) const; + void setPlaylistColumnSizes( const QString& playlistid, const QList& cols ); QList recentlyPlayedPlaylists() const; void appendRecentlyPlayedPlaylist( const Tomahawk::playlist_ptr& playlist );