albumart DBus method
[someplayer] / src / player / player.h
index 562aad4..ab26c9d 100644 (file)
@@ -27,7 +27,6 @@
 #include "../playlist.h"
 #include <phonon/MediaObject>
 #include <phonon/AudioOutput>
-#include <phonon/VolumeSlider>
 #include <phonon/Effect>
 #include <phonon/Path>
 #include <QStack>
 using SomePlayer::DataObjects::Track;
 using SomePlayer::DataObjects::TrackMetadata;
 using SomePlayer::DataObjects::Playlist;
+using SomePlayer::DataObjects::LastPlayed;
 using SomePlayer::Storage::Config;
 
 namespace SomePlayer {
        namespace Playback {
 
                enum PlayerState { PLAYER_STOPPED, PLAYER_PLAYING, PLAYER_PAUSED, PLAYER_LOADING, PLAYER_DONE, PLAYER_ERROR };
-
-               class Randomizer {
-               public:
-                       void setPlaylist(QList<int>);
-                       int next();
-               private:
-                       QList<int> _playlist;
-                       QList<int> _rand;
-                       void _shuffle();
-                       int _current;
-               };
+               enum RepeatRule {REPEAT_NO, REPEAT_ALL, REPEAT_ONE};
 
                class Player : public QObject
                {
                        Q_OBJECT
                public:
                        explicit Player(QObject *parent = 0);
-
+                       ~Player();
                        bool random() {return _random;}
-                       bool repeat() {return _repeat;}
-                       int volume() {return (int)(_output->volume()*100 + 0.5);}
+                       RepeatRule repeat() {return _repeat;}
                        Phonon::MediaObject* mediaObject() {return _player;}
                        bool equalizerEnabled() {return _equalizer_enabled;}
                        bool equalizerAvailable() {return _equalizer != NULL;}
-                       PlayerState state() {return _state;}
-
+                       Track current();
+                       void setAwaitingSeek(int pos) {_awaiting_seek = true; _awaiting_seek_pos = pos;}
                signals:
                        void stateChanged (PlayerState);
                        void trackChanged (Track);
                        void tick (int, int); // played | all (seconds)
                        void trackDone(Track);
+                       void startPlaylist();
+                       void saveLastPlayed(LastPlayed);
 
                public slots:
                        void setTrackId(int id);
-                       void enqueue(int id);
+                       void enqueue(int id); // refactor
                        void toggle();
                        void play();
+                       void pause();
+                       void playIfPaused();
                        void stop();
                        void next();
                        void prev();
@@ -88,7 +81,6 @@ namespace SomePlayer {
                        void toggleRandom();
                        void toggleRepeat();
                        void seek(int);
-                       void setVolume(int);
                        void enableEqualizer();
                        void disableEqualizer();
                        void setEqualizerValue(int band, double value);
@@ -96,19 +88,20 @@ namespace SomePlayer {
                        QString artist();
                        QString album();
                        QString title();
+                       PlayerState state() {return _state;}
+                       QString stateText();
+                       QString albumart() {return _albumart;}
+                       void setAlbumart(QString albumart) {_albumart = albumart;}
                private slots:
                        void _stateChanged(Phonon::State, Phonon::State);
                        void _tick(qint64);
                private:
-                       Randomizer _randomizer;
-                       int _current;
-                       Track _track; // current track (workaround)
+                       Track _track; // current track
                        bool _random;
-                       bool _repeat;
+                       RepeatRule _repeat;
                        bool _equalizer_enabled;
-                       QStack<int> _history;
-                       QQueue<int> _queue;
-                       QStack<int> _prev_history;
+                       QList<Track> _history;
+                       QList<Track> _queue;
                        Playlist _playlist;
                        Phonon::MediaObject *_player;
                        Phonon::AudioOutput *_output;
@@ -116,9 +109,12 @@ namespace SomePlayer {
                        Phonon::Effect *_equalizer;
                        PlayerState _state;
                        Config _config;
-
                        void _set_source();
-
+                       void _to_history(Track t);
+                       void _truncate_history();
+                       int _awaiting_seek_pos;
+                       bool _awaiting_seek;
+                       QString _albumart;
                };
        };
 };