File indexing completed on 2024-05-12 15:32:33

0001 /*
0002  * BluezQt - Asynchronous Bluez wrapper library
0003  *
0004  * SPDX-FileCopyrightText: 2015 David Rosca <nowrep@gmail.com>
0005  *
0006  * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
0007  */
0008 
0009 #ifndef DECLARATIVEMEDIAPLAYER_H
0010 #define DECLARATIVEMEDIAPLAYER_H
0011 
0012 #include <QJsonObject>
0013 
0014 #include "mediaplayer.h"
0015 
0016 class DeclarativeMediaPlayer : public QObject
0017 {
0018     Q_OBJECT
0019     Q_PROPERTY(QString name READ name NOTIFY nameChanged)
0020     Q_PROPERTY(BluezQt::MediaPlayer::Equalizer equalizer READ equalizer WRITE setEqualizer NOTIFY equalizerChanged)
0021     Q_PROPERTY(BluezQt::MediaPlayer::Repeat repeat READ repeat WRITE setRepeat NOTIFY repeatChanged)
0022     Q_PROPERTY(BluezQt::MediaPlayer::Shuffle shuffle READ shuffle WRITE setShuffle NOTIFY shuffleChanged)
0023     Q_PROPERTY(BluezQt::MediaPlayer::Status status READ status NOTIFY statusChanged)
0024     Q_PROPERTY(QJsonObject track READ track NOTIFY trackChanged)
0025     Q_PROPERTY(quint32 position READ position NOTIFY positionChanged)
0026 
0027 public:
0028     explicit DeclarativeMediaPlayer(BluezQt::MediaPlayerPtr mediaPlayer, QObject *parent = nullptr);
0029 
0030     QString name() const;
0031 
0032     BluezQt::MediaPlayer::Equalizer equalizer() const;
0033     void setEqualizer(BluezQt::MediaPlayer::Equalizer equalizer);
0034 
0035     BluezQt::MediaPlayer::Repeat repeat() const;
0036     void setRepeat(BluezQt::MediaPlayer::Repeat repeat);
0037 
0038     BluezQt::MediaPlayer::Shuffle shuffle() const;
0039     void setShuffle(BluezQt::MediaPlayer::Shuffle shuffle);
0040 
0041     BluezQt::MediaPlayer::Status status() const;
0042 
0043     QJsonObject track() const;
0044 
0045     quint32 position() const;
0046 
0047 public Q_SLOTS:
0048     BluezQt::PendingCall *play();
0049     BluezQt::PendingCall *pause();
0050     BluezQt::PendingCall *stop();
0051     BluezQt::PendingCall *next();
0052     BluezQt::PendingCall *previous();
0053     BluezQt::PendingCall *fastForward();
0054     BluezQt::PendingCall *rewind();
0055 
0056 Q_SIGNALS:
0057     void nameChanged(const QString &name);
0058     void equalizerChanged(BluezQt::MediaPlayer::Equalizer equalizer);
0059     void repeatChanged(BluezQt::MediaPlayer::Repeat repeat);
0060     void shuffleChanged(BluezQt::MediaPlayer::Shuffle shuffle);
0061     void statusChanged(BluezQt::MediaPlayer::Status status);
0062     void trackChanged(const QJsonObject &track);
0063     void positionChanged(quint32 position);
0064 
0065 private:
0066     void updateTrack();
0067 
0068     BluezQt::MediaPlayerPtr m_mediaPlayer;
0069     QJsonObject m_track;
0070 };
0071 
0072 #endif // DECLARATIVEMEDIAPLAYER_H