diff --git a/TODO b/TODO index 25856adf1..b359af468 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,10 @@ - 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 Long-term: - iPod diff --git a/data/clear-list.png b/data/clear-list.png new file mode 100644 index 000000000..3588e9bf3 Binary files /dev/null and b/data/clear-list.png differ diff --git a/data/data.qrc b/data/data.qrc index 38ff67edb..c0fe574a2 100644 --- a/data/data.qrc +++ b/data/data.qrc @@ -48,5 +48,6 @@ last.fm/my_neighbours.png last.fm/user_purple.png list-remove.png + clear-list.png diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 816b1e183..a8df1fd8f 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -80,6 +80,7 @@ MainWindow::MainWindow(QWidget *parent) connect(ui_.library_filter, SIGNAL(textChanged(QString)), library_, SLOT(SetFilterText(QString))); connect(ui_.action_ban, SIGNAL(triggered()), radio_model_->GetLastFMService(), SLOT(Ban())); connect(ui_.action_love, SIGNAL(triggered()), SLOT(Love())); + connect(ui_.action_clear_playlist, SIGNAL(triggered()), playlist_, SLOT(Clear())); // Give actions to buttons ui_.forward_button->setDefaultAction(ui_.action_next_track); @@ -88,6 +89,7 @@ MainWindow::MainWindow(QWidget *parent) ui_.stop_button->setDefaultAction(ui_.action_stop); ui_.love_button->setDefaultAction(ui_.action_love); ui_.ban_button->setDefaultAction(ui_.action_ban); + ui_.clear_playlist_button->setDefaultAction(ui_.action_clear_playlist); // Stop actions QMenu* stop_menu = new QMenu(this); @@ -193,7 +195,6 @@ MainWindow::MainWindow(QWidget *parent) connect(stop, SIGNAL(activated()), ui_.action_stop, SLOT(trigger())); connect(next, SIGNAL(activated()), ui_.action_next_track, SLOT(trigger())); connect(prev, SIGNAL(activated()), ui_.action_previous_track, SLOT(trigger())); - connect(play_pause, SIGNAL(activated()), this, SLOT(close())); // Analyzer ui_.analyzer->set_engine(player_->GetEngine()); diff --git a/src/mainwindow.ui b/src/mainwindow.ui index cf502590d..40c137098 100644 --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -14,7 +14,7 @@ Clementine - + :/icon.png:/icon.png @@ -78,6 +78,26 @@ 0 + + + + + 22 + 22 + + + + true + + + + + + + Qt::Vertical + + + @@ -274,7 +294,7 @@ - + :/clear.png:/clear.png @@ -294,7 +314,7 @@ - + :/configure.png:/configure.png @@ -410,7 +430,7 @@ - + :/media-skip-backward.png:/media-skip-backward.png @@ -419,7 +439,7 @@ - + :/media-playback-start.png:/media-playback-start.png @@ -431,7 +451,7 @@ false - + :/media-playback-stop.png:/media-playback-stop.png @@ -440,7 +460,7 @@ - + :/media-skip-forward.png:/media-skip-forward.png @@ -449,7 +469,7 @@ - + :/exit.png:/exit.png @@ -461,7 +481,7 @@ - + :/media-playback-stop.png:/media-playback-stop.png @@ -527,7 +547,7 @@ false - + :/last.fm/love.png:/last.fm/love.png @@ -539,13 +559,25 @@ false - + :/last.fm/ban.png:/last.fm/ban.png Ban + + + + :/clear-list.png:/clear-list.png + + + Clear playlist + + + Clear playlist + + @@ -582,6 +614,8 @@
radioview.h
- + + + diff --git a/src/playlist.cpp b/src/playlist.cpp index caa7bafbe..937cdd10f 100644 --- a/src/playlist.cpp +++ b/src/playlist.cpp @@ -496,3 +496,9 @@ void Playlist::UpdateScrobblePoint() { scrobble_point_ = point; has_scrobbled_ = false; } + +void Playlist::Clear() { + qDeleteAll(items_); + items_.clear(); + reset(); +} diff --git a/src/playlist.h b/src/playlist.h index 3fd45a783..7271b4982 100644 --- a/src/playlist.h +++ b/src/playlist.h @@ -99,6 +99,8 @@ class Playlist : public QAbstractListModel { void ClearStreamMetadata(); void SetStreamMetadata(const QUrl& url, const Song& song); + void Clear(); + signals: void CurrentSongChanged(const Song& metadata);