File: NotificationAudio.h

package info (click to toggle)
js8call 2.5.1%2Bds-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 24,720 kB
  • sloc: cpp: 562,655; sh: 898; python: 132; ansic: 102; makefile: 4
file content (40 lines) | stat: -rw-r--r-- 885 bytes parent folder | download
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
#ifndef NOTIFICATIONAUDIO_H
#define NOTIFICATIONAUDIO_H

#include <QAudioDevice>
#include <QBuffer>
#include <QByteArray>
#include <QHash>
#include <QPair>
#include <QScopedPointer>

class SoundOutput;

class NotificationAudio : public QObject {
    Q_OBJECT

  public:
    explicit NotificationAudio(QObject *parent = nullptr);
    ~NotificationAudio();

  public slots:
    void status(QString message);
    void error(QString message);
    void setDevice(const QAudioDevice &device, unsigned msBuffer = 0);
    void play(const QString &filePath);
    void stop();

  private:
    using Entry = QPair<QAudioFormat, QByteArray>;
    using Cache = QHash<QString, Entry>;

    void playEntry(Cache::const_iterator);

    QScopedPointer<SoundOutput> m_stream;
    Cache m_cache;
    QAudioDevice m_device;
    QBuffer m_buffer;
    unsigned m_msBuffer;
};

#endif // NOTIFICATIONAUDIO_H