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() || sound)
73 sound = new AL::Sound;
74 sound->open_file(*current_track);
75 streamer.play(*sound);
87 list<string>::iterator i = tracks.begin();
88 advance(i, rand()%tracks.size());
99 if(current_track==tracks.end())
100 current_track = tracks.begin();
102 signal_track_changed.emit(*current_track);
107 void Jukebox::previous()
115 if(current_track==tracks.begin())
116 current_track = tracks.end();
118 signal_track_changed.emit(*current_track);
133 if(sound && sound->eof())