00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef STATEHANDLER_H
00021 #define STATEHANDLER_H
00022
00023 #include <QObject>
00024 #include <QMap>
00025 #include <QMutex>
00026
00027 #include "qmmp.h"
00028
00032 class StateHandler : public QObject
00033 {
00034 Q_OBJECT
00035 public:
00040 StateHandler(QObject *parent = 0);
00044 ~StateHandler();
00053 virtual void dispatch(qint64 elapsed,
00054 int bitrate,
00055 quint32 frequency,
00056 int precision,
00057 int channels);
00061 virtual void dispatch(const QMap<Qmmp::MetaData, QString> &metaData);
00065 virtual void dispatch(Qmmp::State state);
00070 virtual void dispatchBuffer(int percent);
00074 qint64 elapsed();
00078 int bitrate();
00082 int frequency();
00086 int precision();
00090 int channels();
00094 Qmmp::State state() const;
00098 QMap <Qmmp::MetaData, QString> metaData();
00102 QString metaData(Qmmp::MetaData key);
00106 static StateHandler* instance();
00107
00108 signals:
00113 void elapsedChanged(qint64 time);
00118 void bitrateChanged(int bitrate);
00123 void frequencyChanged(quint32 frequency);
00128 void precisionChanged(int precision);
00133 void channelsChanged(int channels);
00137 void metaDataChanged();
00141 void stateChanged(Qmmp::State newState);
00145 void finished();
00149 void aboutToFinish();
00154 void bufferingProgress(int progress);
00155
00156 private:
00157 qint64 m_elapsed;
00158 quint32 m_frequency;
00159 bool m_sendAboutToFinish;
00160 int m_bitrate, m_precision, m_channels;
00161 static StateHandler* m_instance;
00162 QMap <Qmmp::MetaData, QString> m_metaData;
00163 QMap <Qmmp::MetaData, QString> m_cachedMetaData;
00164 Qmmp::State m_state;
00165 QMutex m_mutex;
00166 };
00167
00168 #endif