forked from ghostfox/qyouradio
61 lines
1.6 KiB
C++
61 lines
1.6 KiB
C++
#pragma once
|
|
|
|
#include <QtMultimedia>
|
|
#include <QtConcurrent/QtConcurrent>
|
|
#include <QDebug>
|
|
#include <QObject>
|
|
#include <QtQmlIntegration/qqmlintegration.h>
|
|
|
|
class Player : public QObject
|
|
{
|
|
Q_OBJECT
|
|
QML_SINGLETON
|
|
QML_ELEMENT
|
|
|
|
Q_PROPERTY(QString title MEMBER m_title NOTIFY titleChanged FINAL)
|
|
Q_PROPERTY(QString id MEMBER m_id NOTIFY idChanged FINAL)
|
|
Q_PROPERTY(float position MEMBER m_position WRITE setPosition NOTIFY positionChanged FINAL)
|
|
Q_PROPERTY(float buffered MEMBER m_buffered NOTIFY bufferedChanged FINAL)
|
|
Q_PROPERTY(bool loading MEMBER m_loading NOTIFY loadingChanged FINAL)
|
|
Q_PROPERTY(bool failed MEMBER m_failed NOTIFY failedChanged FINAL)
|
|
Q_PROPERTY(bool playing READ playing NOTIFY playingChanged FINAL)
|
|
Q_PROPERTY(float volume READ volume WRITE setVolume NOTIFY volumeChanged FINAL)
|
|
|
|
public:
|
|
Player(QObject *parent = nullptr);
|
|
~Player();
|
|
|
|
bool playing() const;
|
|
float volume() const;
|
|
|
|
void setPosition(float newPosition);
|
|
void setVolume(float newVolume);
|
|
|
|
public slots:
|
|
void loadVideo(QString id, QString extension, QString title, float position);
|
|
void unloadVideo();
|
|
void play();
|
|
void pause();
|
|
|
|
signals:
|
|
void titleChanged();
|
|
void idChanged();
|
|
void positionChanged();
|
|
void bufferedChanged();
|
|
void loadingChanged();
|
|
void failedChanged();
|
|
void playingChanged();
|
|
void volumeChanged();
|
|
|
|
private:
|
|
QMediaPlayer player;
|
|
QAudioOutput output;
|
|
\
|
|
QString m_title = "";
|
|
QString m_id = "";
|
|
float m_position = 0;
|
|
float m_buffered = 0;
|
|
bool m_loading = false;
|
|
bool m_failed = false;
|
|
};
|