Implemented playback.
[someplayer] / src / player / player.h
1 #ifndef PLAYER_H
2 #define PLAYER_H
3
4 #include <QObject>
5 #include "../someplayer.h"
6 #include "../track.h"
7 #include "../trackmetainformation.h"
8 #include "../playlist.h"
9 #include <phonon/MediaObject>
10 #include <phonon/AudioOutput>
11 #include <QStack>
12
13 // represents player
14
15 using SomePlayer::DataObjects::Track;
16 using SomePlayer::DataObjects::TrackMetadata;
17 using SomePlayer::DataObjects::Playlist;
18
19 namespace SomePlayer {
20         namespace Playback {
21
22                 enum PlayerState { PLAYER_STOPPED, PLAYER_PLAYING, PLAYER_PAUSED, PLAYER_LOADING, PLAYER_DONE, PLAYER_ERROR };
23
24                 class Player : public QObject
25                 {
26                         Q_OBJECT
27                 public:
28                         explicit Player(QObject *parent = 0);
29
30                         bool random() {return _random;}
31                         bool repeat() {return _repeat;}
32                         Phonon::MediaObject* mediaObject() {return _player;}
33
34                 signals:
35                         void stateChanged (PlayerState);
36                         void trackChanged (Track);
37                         void tick (int, int); // played | all (seconds)
38
39                 public slots:
40                         void setTrackId(int id);
41                         void play();
42                         void pause();
43                         void stop();
44                         void next();
45                         void prev();
46                         void setPlaylist(Playlist);
47                         void toggleRandom() {_random = !_random;}
48                         void toggleRepeat() {_repeat = !_repeat;}
49                         void seek(int);
50                 private slots:
51                         void _stateChanged(Phonon::State, Phonon::State);
52                         void _tick(qint64);
53                 private:
54                         int _current;
55                         bool _random;
56                         bool _repeat;
57                         QStack<int> _history;
58                         Playlist _playlist;
59                         Phonon::MediaObject *_player;
60                         Phonon::AudioOutput *_output;
61                         PlayerState _state;
62
63                         void _set_source();
64                 };
65         };
66 };
67
68 #endif // PLAYER_H