Fixed bug with removing tracks from another playlist. Implemented adding track to...
[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 #include <QQueue>
13
14 // represents player
15
16 using SomePlayer::DataObjects::Track;
17 using SomePlayer::DataObjects::TrackMetadata;
18 using SomePlayer::DataObjects::Playlist;
19 using SomePlayer::Storage::Config;
20
21 namespace SomePlayer {
22         namespace Playback {
23
24                 enum PlayerState { PLAYER_STOPPED, PLAYER_PLAYING, PLAYER_PAUSED, PLAYER_LOADING, PLAYER_DONE, PLAYER_ERROR };
25
26                 class Player : public QObject
27                 {
28                         Q_OBJECT
29                 public:
30                         explicit Player(QObject *parent = 0);
31
32                         bool random() {return _random;}
33                         bool repeat() {return _repeat;}
34                         Phonon::MediaObject* mediaObject() {return _player;}
35
36                 signals:
37                         void stateChanged (PlayerState);
38                         void trackChanged (Track);
39                         void tick (int, int); // played | all (seconds)
40                         void trackDone(Track);
41
42                 public slots:
43                         void setTrackId(int id);
44                         void enqueue(int id);
45                         void toggle();
46                         void play();
47                         void stop();
48                         void next();
49                         void prev();
50                         void setPlaylist(Playlist);
51                         void toggleRandom();
52                         void toggleRepeat();
53                         void seek(int);
54                 private slots:
55                         void _stateChanged(Phonon::State, Phonon::State);
56                         void _tick(qint64);
57                 private:
58                         int _current;
59                         Track _track; // current track (workaround)
60                         bool _random;
61                         bool _repeat;
62                         QStack<int> _history;
63                         QQueue<int> _queue;
64                         QStack<int> _prev_history;
65                         Playlist _playlist;
66                         Phonon::MediaObject *_player;
67                         Phonon::AudioOutput *_output;
68                         PlayerState _state;
69                         Config _config;
70
71                         void _set_source();
72
73                 };
74         };
75 };
76
77 #endif // PLAYER_H