@@ -38,6 +38,7 @@ public class Music.PlaybackManager : Object {
3838 private PlaybackManager () {}
3939
4040 construct {
41+ settings = new Settings (" io.elementary.music" );
4142 queue_liststore = new ListStore (typeof (AudioObject ));
4243
4344 playbin = Gst . ElementFactory . make (" playbin" , " playbin" );
@@ -433,6 +434,7 @@ public class Music.PlaybackManager : Object {
433434 has_items = queue_liststore. get_n_items () > 0 ;
434435 shuffle_action_action. set_enabled (queue_liststore. get_n_items () > 1 );
435436 update_next_previous_sensitivity ();
437+ save_queue ();
436438 }
437439
438440 private void on_audio_changed () {
@@ -455,4 +457,29 @@ public class Music.PlaybackManager : Object {
455457 var play_pause_action = (SimpleAction ) GLib . Application . get_default (). lookup_action (Application . ACTION_PLAY_PAUSE );
456458 play_pause_action. set_enabled (current_audio != null );
457459 }
460+
461+ private void save_queue () {
462+ string [] list_uri = new string [queue_liststore. n_items];
463+
464+ for (var i = 0 ; i < queue_liststore. n_items; i++ ) {
465+ var item = (Music . AudioObject )queue_liststore. get_item (i);
466+ list_uri[i] = item. uri;
467+ }
468+
469+ settings. set_strv (" previous-queue" , list_uri);
470+ }
471+
472+ public void restore_queue () {
473+ var last_session_uri = settings. get_strv (" previous-queue" );
474+ var last_session_files = new File [last_session_uri. length];
475+
476+ for (var i = 0 ; i < last_session_uri. length; i++ ) {
477+ var uri = last_session_uri[i];
478+ var file = File . new_for_uri (uri);
479+ last_session_files[i] = file;
480+ }
481+
482+ var files_to_play = Application . loop_through_files (last_session_files);
483+ queue_files (files_to_play);
484+ }
458485}
0 commit comments