5 #include "sounddecoder.h"
15 current_track(tracks.end()),
25 void Jukebox::add_track(const string &trk)
27 bool was_empty = tracks.empty();
28 tracks.push_back(trk);
31 current_track = tracks.begin();
32 signal_track_changed.emit(*current_track);
36 void Jukebox::remove_track(const string &trk)
38 list<string>::iterator i = find(tracks.begin(), tracks.end(), trk);
45 current_track = tracks.end();
49 void Jukebox::clear_tracks()
53 current_track = tracks.end();
56 const string &Jukebox::get_current_track() const
59 throw logic_error("No current track");
60 return *current_track;
63 void Jukebox::set_shuffle(bool s)
70 if(tracks.empty() || decoder)
73 decoder = SoundDecoder::open_file(*current_track);
74 streamer.play(*decoder);
86 list<string>::iterator i = tracks.begin();
87 advance(i, rand()%tracks.size());
98 if(current_track==tracks.end())
99 current_track = tracks.begin();
101 signal_track_changed.emit(*current_track);
106 void Jukebox::previous()
114 if(current_track==tracks.begin())
115 current_track = tracks.end();
117 signal_track_changed.emit(*current_track);
132 if(decoder && decoder->eof())