File indexing completed on 2024-05-05 04:50:49
0001 /* 0002 * SPDX-FileCopyrightText: 2021 George Florea Bănuș <georgefb899@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-3.0-or-later 0005 */ 0006 0007 #ifndef MEDIAPLAYER2PLAYER_H 0008 #define MEDIAPLAYER2PLAYER_H 0009 0010 #include <QDBusAbstractAdaptor> 0011 #include <QImage> 0012 0013 class QDBusObjectPath; 0014 class MpvItem; 0015 0016 class MediaPlayer2Player : public QDBusAbstractAdaptor 0017 { 0018 Q_OBJECT 0019 Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2.Player") 0020 0021 public: 0022 explicit MediaPlayer2Player(QObject *parent = nullptr); 0023 ~MediaPlayer2Player() = default; 0024 0025 Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus NOTIFY playbackStatusChanged) 0026 Q_PROPERTY(QVariantMap Metadata READ Metadata NOTIFY metadataChanged) 0027 Q_PROPERTY(double Volume READ Volume WRITE setVolume NOTIFY volumeChanged) 0028 Q_PROPERTY(qlonglong Position READ Position WRITE setPosition NOTIFY playbackStatusChanged) 0029 Q_PROPERTY(bool CanGoNext READ CanGoNext CONSTANT) 0030 Q_PROPERTY(bool CanGoPrevious READ CanGoPrevious CONSTANT) 0031 Q_PROPERTY(bool CanPlay READ CanPlay CONSTANT) 0032 Q_PROPERTY(bool CanPause READ CanPause CONSTANT) 0033 Q_PROPERTY(bool CanSeek READ CanSeek CONSTANT) 0034 Q_PROPERTY(bool CanControl READ CanControl CONSTANT) 0035 0036 void propertiesChanged(const QString &property, const QVariant &value); 0037 0038 public Q_SLOTS: 0039 void Next(); 0040 void Previous(); 0041 void Pause(); 0042 void PlayPause(); 0043 void Stop(); 0044 void Play(); 0045 void Seek(qlonglong offset); 0046 void SetPosition(const QDBusObjectPath &trackId, qlonglong pos); 0047 void OpenUri(const QString &uri); 0048 QString PlaybackStatus(); 0049 QVariantMap Metadata(); 0050 double Volume(); 0051 qlonglong Position(); 0052 bool CanGoNext(); 0053 bool CanGoPrevious(); 0054 bool CanPlay(); 0055 bool CanPause(); 0056 bool CanSeek(); 0057 bool CanControl(); 0058 void setPosition(int pos); 0059 void setVolume(double vol); 0060 0061 Q_SIGNALS: 0062 void next(); 0063 void previous(); 0064 void pause(); 0065 void playpause(); 0066 void stop(); 0067 void play(); 0068 void seek(int offset); 0069 void openUri(QString uri); 0070 void playbackStatusChanged(); 0071 void metadataChanged(); 0072 void volumeChanged(); 0073 void requestMprisThumbnail(const QString &path, int width); 0074 0075 private: 0076 QString getThumbnail(const QString &path); 0077 MpvItem *m_mpv; 0078 QImage m_image; 0079 QVariantMap m_metadata; 0080 }; 0081 0082 #endif // MEDIAPLAYER2PLAYER_H