X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fjukebox.cpp;h=95ca6a05e9e2656dab7d85708c98d07e0606cafd;hb=2a685e572e2ab8d9f50129de3f0869628edb3d8e;hp=391edd14a305a6485f9a0741cd672bde0fef3c2e;hpb=c9eccd8b7006b3bcfa0a4d70cd26e43323c3c2b5;p=libs%2Fal.git diff --git a/source/jukebox.cpp b/source/jukebox.cpp index 391edd1..95ca6a0 100644 --- a/source/jukebox.cpp +++ b/source/jukebox.cpp @@ -31,25 +31,25 @@ Jukebox::~Jukebox() void Jukebox::add_track(const string &trk) { - bool was_empty=tracks.empty(); + bool was_empty = tracks.empty(); tracks.push_back(trk); if(was_empty) { - current_track=tracks.begin(); + current_track = tracks.begin(); signal_track_changed.emit(*current_track); } } void Jukebox::remove_track(const string &trk) { - list::iterator i=find(tracks.begin(), tracks.end(), trk); + list::iterator i = find(tracks.begin(), tracks.end(), trk); if(i!=tracks.end()) { if(i==current_track) next(); tracks.erase(i); if(tracks.empty()) - current_track=tracks.end(); + current_track = tracks.end(); } } @@ -57,7 +57,7 @@ void Jukebox::clear_tracks() { stop(); tracks.clear(); - current_track=tracks.end(); + current_track = tracks.end(); } const string &Jukebox::get_current_track() const @@ -69,7 +69,7 @@ const string &Jukebox::get_current_track() const void Jukebox::set_shuffle(bool s) { - shuffle=s; + shuffle = s; } void Jukebox::play() @@ -77,7 +77,7 @@ void Jukebox::play() if(tracks.empty() || sound) return; - sound=new AL::Sound; + sound = new AL::Sound; sound->open_file(*current_track); streamer.play(*sound); } @@ -91,7 +91,7 @@ void Jukebox::next() { while(1) { - list::iterator i=tracks.begin(); + list::iterator i = tracks.begin(); advance(i, rand()%tracks.size()); if(i!=current_track) { @@ -104,18 +104,34 @@ void Jukebox::next() { ++current_track; if(current_track==tracks.end()) - current_track=tracks.begin(); + current_track = tracks.begin(); } signal_track_changed.emit(*current_track); } play(); } +void Jukebox::previous() +{ + if(shuffle) + return next(); + + stop(); + if(tracks.size()>1) + { + if(current_track==tracks.begin()) + current_track = tracks.end(); + --current_track; + signal_track_changed.emit(*current_track); + } + play(); +} + void Jukebox::stop() { streamer.stop(); delete sound; - sound=0; + sound = 0; } void Jukebox::tick()