3 This file is part of libmspal
4 Copyright © 2009 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
10 #include <msp/core/except.h>
22 current_track(tracks.end()),
32 void Jukebox::add_track(const string &trk)
34 bool was_empty=tracks.empty();
35 tracks.push_back(trk);
38 current_track=tracks.begin();
39 signal_track_changed.emit(*current_track);
43 void Jukebox::remove_track(const string &trk)
45 list<string>::iterator i=find(tracks.begin(), tracks.end(), trk);
52 current_track=tracks.end();
56 void Jukebox::clear_tracks()
60 current_track=tracks.end();
63 const string &Jukebox::get_current_track() const
66 throw InvalidState("No current track");
67 return *current_track;
70 void Jukebox::set_shuffle(bool s)
77 if(tracks.empty() || sound)
81 sound->open_file(*current_track);
82 streamer.play(*sound);
94 list<string>::iterator i=tracks.begin();
95 advance(i, rand()%tracks.size());
106 if(current_track==tracks.end())
107 current_track=tracks.begin();
109 signal_track_changed.emit(*current_track);
124 if(sound && sound->eof())