Skip to content

Commit d0bcd78

Browse files
authored
Add clear queue button (#795)
1 parent 5e30d44 commit d0bcd78

File tree

3 files changed

+32
-0
lines changed

3 files changed

+32
-0
lines changed

src/Application.vala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ public class Music.Application : Gtk.Application {
1010
public const string ACTION_PREVIOUS = "action-previous";
1111
public const string ACTION_SHUFFLE = "action-shuffle";
1212
public const string ACTION_FIND = "action-find";
13+
public const string ACTION_CLEAR_QUEUE = "action-clear-queue";
1314
public const string ACTION_QUIT = "action-quit";
1415

1516
private const ActionEntry[] ACTION_ENTRIES = {
@@ -18,6 +19,7 @@ public class Music.Application : Gtk.Application {
1819
{ ACTION_PREVIOUS, action_previous },
1920
{ ACTION_SHUFFLE, action_shuffle },
2021
{ ACTION_FIND, action_find },
22+
{ ACTION_CLEAR_QUEUE, action_clear_queue },
2123
{ ACTION_QUIT, quit }
2224
};
2325

@@ -190,6 +192,10 @@ public class Music.Application : Gtk.Application {
190192
((MainWindow)active_window).start_search ();
191193
}
192194

195+
private void action_clear_queue () {
196+
playback_manager.clear_queue ();
197+
}
198+
193199
private void on_bus_acquired (DBusConnection connection, string name) {
194200
try {
195201
connection.register_object ("/org/mpris/MediaPlayer2", new MprisRoot ());

src/MainWindow.vala

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,28 @@ public class Music.MainWindow : Gtk.ApplicationWindow {
7373

7474
add_button_label.mnemonic_widget = add_button;
7575

76+
var clear_button_label = new Gtk.Label (_("Clear Queue"));
77+
78+
var clear_button_box = new Gtk.Box (HORIZONTAL, 0);
79+
clear_button_box.append (new Gtk.Image.from_icon_name ("edit-clear-all-symbolic"));
80+
clear_button_box.append (clear_button_label);
81+
82+
var clear_button = new Gtk.Button () {
83+
child = clear_button_box,
84+
action_name = Application.ACTION_PREFIX + Application.ACTION_CLEAR_QUEUE
85+
};
86+
clear_button.add_css_class (Granite.STYLE_CLASS_FLAT);
87+
88+
clear_button_label.mnemonic_widget = clear_button;
89+
90+
var clear_queue_action = GLib.Application.get_default ().lookup_action (Application.ACTION_CLEAR_QUEUE);
91+
playback_manager.bind_property (
92+
"has-items", clear_queue_action, "enabled", DEFAULT | SYNC_CREATE
93+
);
94+
7695
var queue_action_bar = new Gtk.ActionBar ();
7796
queue_action_bar.pack_start (add_button);
97+
queue_action_bar.pack_end (clear_button);
7898

7999
var queue = new Adw.ToolbarView () {
80100
bottom_bar_style = RAISED,

src/PlaybackManager.vala

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,12 @@ public class Music.PlaybackManager : Object {
145145
}
146146
}
147147

148+
public void clear_queue () {
149+
playbin.set_state (Gst.State.NULL);
150+
current_audio = null;
151+
queue_liststore.remove_all ();
152+
}
153+
148154
private void update_metadata (Gst.PbUtils.DiscovererInfo info, Error? err) {
149155
string uri = info.get_uri ();
150156
switch (info.get_result ()) {

0 commit comments

Comments
 (0)