defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010-2011 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 #ifndef AUDIOPLAYER_HPP 00012 #define AUDIOPLAYER_HPP 00013 00014 #include "staticplugin.hpp" 00015 #include "audiodecoder.hpp" 00016 #include "playqueue.hpp" 00017 #include "audiotrack.hpp" 00018 #include "audioplayerwidget.hpp" 00019 00020 namespace Player 00021 { 00022 class AudioPlayer :public Audio::AudioIO 00023 { 00024 Q_OBJECT 00025 public: 00026 AudioPlayer(QString playerName); 00027 AudioPlayer(QString playerName, AudioPlayerWidget *widget, Audio::AudioDecoder *decoder, Audio::AudioOutputDevice *outputDevice); 00028 ~AudioPlayer(); 00029 void init(); 00030 bool loadTrack(Queue::Queueable *elem); 00031 bool isPlaying() const; 00032 00033 qint64 readData(char *data, qint64 maxlen, AudioIO *from); 00034 Audio::AudioIO *getAudioInput(const Audio::AudioIO *output); 00035 const Audio::AudioIO *getOutputDevice(const AudioIO* input) const; 00036 00037 00038 signals: 00039 void canIHasANewTrack(); 00040 void trackHasFinishedPlaying(); 00041 void almostFinished(); 00042 void paused(); 00043 void played(); 00044 void stopped(); 00045 void finished(); 00046 00047 public slots: 00048 void unloadTrack(); 00049 void play(); 00050 void stop(); 00051 00052 private slots: 00053 void updatePosition(); 00054 void seek(int position); 00055 00056 protected: 00057 qint64 writeData(const char *data, qint64 maxlen); 00058 qint64 readData(char *data, qint64 maxlen); 00059 00060 private: 00061 int cueAt(); 00062 00063 bool _updatePosition; 00064 int previousPosition; 00065 00066 QTimer *timer; 00067 00068 QString _playerName; 00069 00070 AudioPlayerWidget *widget; 00071 Audio::AudioDecoder *decoder; 00072 Library::AudioTrack *currentTrack; 00073 Audio::AudioOutputDevice *outputDevice; 00074 00075 Gui::Module *uiModule; 00076 00077 }; 00078 } 00079 #endif // AUDIOPLAYER_HPP