summaryrefslogtreecommitdiffstats
path: root/pacman-c++/phononplayer/phononplayer.h
blob: ca56726eae3e5124f60326ef4a4b5924ddfc1b65 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef PHONONPLAYER_H
#define PHONONPLAYER_H

#include "audio.h"
#include <QObject>
#include <QFile>
#include <QThread>
#include <phonon/MediaObject>
#include <phonon/AudioOutput>

class PhononPlayerFactory
  : public QObject, public AudioPlayerFactory
{
  Q_OBJECT
  Q_INTERFACES(AudioPlayerFactory)

public:
  virtual AudioPlayer *create(QObject *parent = 0);
};

/* --------------------------------------------------------------- */

class PhononPlayer
  : public AudioPlayer
{
  Q_OBJECT
  friend class AudioManager;

private:
  class Sleeper
    : public QThread
  {
  public:
    static void sleep(unsigned long secs);
    static void msleep(unsigned long msecs);
    static void usleep(unsigned long usecs);
  };

public:
  PhononPlayer(QObject *parent = 0);
  virtual bool isWorking() const;
  virtual void setMuted(bool mute = true);
  virtual bool isMuted() const;
  virtual void play();
  virtual void play(Sound::Type sound);
  virtual bool isPlaying();
  virtual void enqueue(Sound::Type sound);
  virtual void pause();
  virtual bool isPaused();
  virtual void stop();
  virtual bool isStopped();
  virtual void clear();
  virtual void clearQueue();
  virtual void setPrefinishMark(qint32 msecToEnd);

protected:
  void test(QFile *testsound, qint32 length);

protected slots:
  virtual void prefinishMarkReached_ex(qint32 mark);
  void finished_ex();
  void testFinished();
  void stateChanged_ex(Phonon::State newstate, Phonon::State oldstate);

protected:
  bool m_working;
  Phonon::MediaObject *m_player;
  Phonon::AudioOutput *m_output;
};

#endif // PHONONPLAYER_H