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 @@
-
+
+
+
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);