From a9b792f603c81d926da4e63d1c8836941bc43926 Mon Sep 17 00:00:00 2001 From: Leo Franchi Date: Sat, 28 May 2011 19:46:27 -0400 Subject: [PATCH] allow deleting playlists with the delete key. fixes TWK-113 --- src/sourcetree/sourcetreeview.cpp | 29 ++++++++++++++++++++++++----- src/sourcetree/sourcetreeview.h | 3 ++- thirdparty/jreen | 2 +- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/src/sourcetree/sourcetreeview.cpp b/src/sourcetree/sourcetreeview.cpp index 0529caac7..bb22c5d98 100644 --- a/src/sourcetree/sourcetreeview.cpp +++ b/src/sourcetree/sourcetreeview.cpp @@ -212,23 +212,23 @@ SourceTreeView::loadPlaylist() void -SourceTreeView::deletePlaylist() +SourceTreeView::deletePlaylist( const QModelIndex& idxIn ) { qDebug() << Q_FUNC_INFO; - QModelIndex idx = m_contextMenuIndex; + QModelIndex idx = idxIn.isValid() ? idxIn : m_contextMenuIndex; if ( !idx.isValid() ) return; - SourcesModel::RowType type = ( SourcesModel::RowType )model()->data( m_contextMenuIndex, SourcesModel::SourceTreeItemTypeRole ).toInt(); + SourcesModel::RowType type = ( SourcesModel::RowType )model()->data( idx, SourcesModel::SourceTreeItemTypeRole ).toInt(); if ( type == SourcesModel::StaticPlaylist ) { - PlaylistItem* item = itemFromIndex< PlaylistItem >( m_contextMenuIndex ); + PlaylistItem* item = itemFromIndex< PlaylistItem >( idx ); playlist_ptr playlist = item->playlist(); Playlist::remove( playlist ); } else if( type == SourcesModel::AutomaticPlaylist || type == SourcesModel::Station ) { - DynamicPlaylistItem* item = itemFromIndex< DynamicPlaylistItem >( m_contextMenuIndex ); + DynamicPlaylistItem* item = itemFromIndex< DynamicPlaylistItem >( idx ); dynplaylist_ptr playlist = item->dynPlaylist(); DynamicPlaylist::remove( playlist ); } @@ -358,6 +358,25 @@ SourceTreeView::dropEvent( QDropEvent* event ) m_dragging = false; } +void +SourceTreeView::keyPressEvent( QKeyEvent *event ) +{ + if( !selectionModel()->selectedIndexes().isEmpty() ) + { + QModelIndex idx = selectionModel()->selectedIndexes().first(); + if ( model()->data( idx, SourcesModel::SourceTreeItemTypeRole ) == SourcesModel::StaticPlaylist || + model()->data( idx, SourcesModel::SourceTreeItemTypeRole ) == SourcesModel::AutomaticPlaylist || + model()->data( idx, SourcesModel::SourceTreeItemTypeRole ) == SourcesModel::Station ) + { + PlaylistItem* item = itemFromIndex< PlaylistItem >( idx ); + Q_ASSERT( item ); + + if( item->playlist()->author()->isLocal() ) { + deletePlaylist( idx ); + } + } + } +} void SourceTreeView::paintEvent( QPaintEvent* event ) diff --git a/src/sourcetree/sourcetreeview.h b/src/sourcetree/sourcetreeview.h index 8058195a0..d3d6eb97e 100644 --- a/src/sourcetree/sourcetreeview.h +++ b/src/sourcetree/sourcetreeview.h @@ -52,7 +52,7 @@ private slots: void selectRequest( const QModelIndex& idx ); void loadPlaylist(); - void deletePlaylist(); + void deletePlaylist( const QModelIndex& = QModelIndex() ); void copyPlaylistLink(); void onCustomContextMenu( const QPoint& pos ); @@ -66,6 +66,7 @@ protected: virtual void dragLeaveEvent( QDragLeaveEvent* event ) { Q_UNUSED( event ); m_dragging = false; setDirtyRegion( m_dropRect ); } virtual void dragMoveEvent( QDragMoveEvent* event ); virtual void dropEvent( QDropEvent* event ); + virtual void keyPressEvent( QKeyEvent* event ); private: void setupMenus(); diff --git a/thirdparty/jreen b/thirdparty/jreen index a231a2b38..8f995f246 160000 --- a/thirdparty/jreen +++ b/thirdparty/jreen @@ -1 +1 @@ -Subproject commit a231a2b3868baf32312d65cb7e371828212d7745 +Subproject commit 8f995f246637f533feb7124744e113034a32b505