Implemented playback.
[someplayer] / src / player / player.h
index 201b458..ec3d82d 100644 (file)
@@ -4,17 +4,22 @@
 #include <QObject>
 #include "../someplayer.h"
 #include "../track.h"
+#include "../trackmetainformation.h"
+#include "../playlist.h"
 #include <phonon/MediaObject>
 #include <phonon/AudioOutput>
+#include <QStack>
 
 // represents player
 
 using SomePlayer::DataObjects::Track;
+using SomePlayer::DataObjects::TrackMetadata;
+using SomePlayer::DataObjects::Playlist;
 
 namespace SomePlayer {
        namespace Playback {
 
-               enum PlayerState { PLAYER_STOPPED, PLAYER_PLAYING, PLAYER_PAUSED, PLAYER_LOADING, PLAYER_DONE };
+               enum PlayerState { PLAYER_STOPPED, PLAYER_PLAYING, PLAYER_PAUSED, PLAYER_LOADING, PLAYER_DONE, PLAYER_ERROR };
 
                class Player : public QObject
                {
@@ -22,22 +27,40 @@ namespace SomePlayer {
                public:
                        explicit Player(QObject *parent = 0);
 
+                       bool random() {return _random;}
+                       bool repeat() {return _repeat;}
+                       Phonon::MediaObject* mediaObject() {return _player;}
+
                signals:
                        void stateChanged (PlayerState);
+                       void trackChanged (Track);
                        void tick (int, int); // played | all (seconds)
 
                public slots:
-                       void setTrack(Track&);
+                       void setTrackId(int id);
                        void play();
                        void pause();
                        void stop();
+                       void next();
+                       void prev();
+                       void setPlaylist(Playlist);
+                       void toggleRandom() {_random = !_random;}
+                       void toggleRepeat() {_repeat = !_repeat;}
+                       void seek(int);
                private slots:
                        void _stateChanged(Phonon::State, Phonon::State);
                        void _tick(qint64);
                private:
-                       Track _current_track;
+                       int _current;
+                       bool _random;
+                       bool _repeat;
+                       QStack<int> _history;
+                       Playlist _playlist;
                        Phonon::MediaObject *_player;
-                       void _create_player();
+                       Phonon::AudioOutput *_output;
+                       PlayerState _state;
+
+                       void _set_source();
                };
        };
 };