diff --git a/include/audio.h b/include/audio.h index 7358fbf5..77f850a3 100644 --- a/include/audio.h +++ b/include/audio.h @@ -23,6 +23,7 @@ namespace audio void stop(); void next(); void previous(); + void load_trackid(unsigned int); unsigned int current_trackid(); Playqueue *get_recent_pq(); diff --git a/lib/audio.cpp b/lib/audio.cpp index 9997bc21..d47cb887 100644 --- a/lib/audio.cpp +++ b/lib/audio.cpp @@ -183,6 +183,23 @@ void audio :: previous() cur_trackid = id; } +void audio :: load_trackid(unsigned int track_id) +{ + library :: Song song; + + if (track_id == cur_trackid) + return; + + track_loaded = false; + library :: lookup(track_id, &song); + load_song(song); + track_loaded = true; + + cur_trackid = track_id; + o_recently_played.add_front(track_id); + o_recently_played.reset_cur(); +} + unsigned int audio :: current_trackid() { if (track_loaded == false)