From 27315ac6319f8982214d3133a8be64cbe92bab63 Mon Sep 17 00:00:00 2001 From: David Sansome <davidsansome@gmail.com> Date: Thu, 14 Jan 2010 14:38:27 +0000 Subject: [PATCH] Delete on playlist selects next item --- TODO | 1 - src/playlistview.cpp | 22 ++++++++++++++++++++-- src/playlistview.h | 3 +++ 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/TODO b/TODO index b359af468..2e38e8384 100644 --- a/TODO +++ b/TODO @@ -7,7 +7,6 @@ - Global shortcut keys - Make QSortFilterProxyModel on the library obey hasChildren() - Database versioning -- Delete on playlist focuses next item - Enter on playlist plays - Clicking play plays selected item - More actions in playlist context menu diff --git a/src/playlistview.cpp b/src/playlistview.cpp index 820339333..73bb1f8c3 100644 --- a/src/playlistview.cpp +++ b/src/playlistview.cpp @@ -298,8 +298,13 @@ bool CompareSelectionRanges(const QItemSelectionRange& a, const QItemSelectionRa } void PlaylistView::keyPressEvent(QKeyEvent* event) { - if (model() && (event->matches(QKeySequence::Delete) || - event->key() == Qt::Key_Backspace)) { + if (!model()) { + QTreeView::keyPressEvent(event); + return; + } + + if (event->matches(QKeySequence::Delete) || + event->key() == Qt::Key_Backspace) { QItemSelection selection(selectionModel()->selection()); // Sort the selection so we remove the items at the *bottom* first, ensuring @@ -310,6 +315,19 @@ void PlaylistView::keyPressEvent(QKeyEvent* event) { model()->removeRows(range.top(), range.height(), range.parent()); } + // Select the new current item + if (currentIndex().isValid()) + selectionModel()->select( + QItemSelection(currentIndex().sibling(currentIndex().row(), 0), + currentIndex().sibling(currentIndex().row(), model()->columnCount()-1)), + QItemSelectionModel::Select); + + event->accept(); + } else if (event->key() == Qt::Key_Enter || + event->key() == Qt::Key_Return || + event->key() == Qt::Key_Space) { + if (currentIndex().isValid()) + emit PlayPauseItem(currentIndex()); event->accept(); } else { QTreeView::keyPressEvent(event); diff --git a/src/playlistview.h b/src/playlistview.h index 107166975..18bebf14e 100644 --- a/src/playlistview.h +++ b/src/playlistview.h @@ -55,6 +55,9 @@ class PlaylistView : public QTreeView { void StartRadioLoading(); void StopRadioLoading(); + signals: + void PlayPauseItem(const QModelIndex& index); + protected: void hideEvent(QHideEvent* event); void showEvent(QShowEvent* event);