File: sndplayer.cpp

package info (click to toggle)
qabcs 1.0.2-6
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, forky, sid, trixie
  • size: 44,724 kB
  • sloc: cpp: 2,226; sh: 2,001; xml: 20; makefile: 5
file content (57 lines) | stat: -rw-r--r-- 1,199 bytes parent folder | download | duplicates (2)
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
#include "sndplayer.h"

#if defined(_WIN32)
#include <windows.h>
#endif


SndPlayer::SndPlayer(QObject *parent, const QString &file) : QThread(parent){
    fileName = file;
    mp = 0;

    moveToThread(this);

    connect(this, &QThread::started, this, &SndPlayer::open);
    connect(this, &QThread::finished, this, &SndPlayer::close);

    start();
}

SndPlayer::~SndPlayer(){
}

void SndPlayer::open() {
#if defined(_WIN32)
    CoInitialize(0);
#endif

    mp = new QMediaPlayer;
    connect(mp, SIGNAL(mediaStatusChanged(QMediaPlayer::MediaStatus)), this, SLOT(mediaStatusChanged(QMediaPlayer::MediaStatus)), Qt::QueuedConnection);
    mp->setMedia(QUrl::fromLocalFile(fileName));
}

void SndPlayer::close(){
    if (mp){
        delete mp;
        mp = 0;
    }
#if defined(_WIN32)
    CoUninitialize();
#endif
}

void SndPlayer::mediaStatusChanged(QMediaPlayer::MediaStatus status){
    switch (status) {
        case QMediaPlayer::LoadedMedia:
            mp->play();
            break;
        case QMediaPlayer::InvalidMedia:
            exit(-1);
            break;
        case QMediaPlayer::EndOfMedia:
            exit(0);
            break;
        default:
            break;
    }
}