]> git.tdb.fi Git - libs/al.git/blobdiff - source/jukebox.h
Externalize playlist management from Jukebox
[libs/al.git] / source / jukebox.h
index fe17f2e4a58f456338eff200046f577e80f61498..ea19723451649aa8ad0374b4ad19515318fba065 100644 (file)
@@ -4,37 +4,37 @@
 #include <list>
 #include <string>
 #include <sigc++/signal.h>
+#include <msp/io/seekable.h>
 #include "source.h"
 #include "streamer.h"
 
 namespace Msp {
 namespace AL {
 
+class Playlist;
 class SoundDecoder;
 
 class Jukebox
 {
 public:
-       sigc::signal<void, const std::string &> signal_track_changed;
+       sigc::signal<void, unsigned> signal_track_changed;
 
 private:
        Source source;
        Streamer streamer;
+       IO::Seekable *in;
        SoundDecoder *decoder;
-       std::list<std::string> tracks;
-       std::list<std::string>::iterator current_track;
-       bool shuffle;
+       const Playlist *playlist;
+       unsigned current;
 
 public:
        Jukebox();
        ~Jukebox();
 
        Source &get_source() { return source; }
-       void add_track(const std::string &);
-       void remove_track(const std::string &);
-       void clear_tracks();
-       const std::string &get_current_track() const;
-       void set_shuffle(bool);
+       void set_playlist(const Playlist *);
+       const Playlist *get_playlist() const { return playlist; }
+       unsigned get_current_track() const { return current; }
 
        void play();
        void next();