File indexing completed on 2025-03-16 04:36:09
0001 /** 0002 * SPDX-FileCopyrightText: 2019 Matthijs Tijink <matthijstijink@gmail.com> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 #pragma once 0007 0008 #include <QDBusAbstractAdaptor> 0009 #include <QDBusObjectPath> 0010 #include <QVariantMap> 0011 0012 class MprisRemotePlayer; 0013 class MprisRemotePlugin; 0014 0015 class MprisRemotePlayerMediaPlayer2Player : public QDBusAbstractAdaptor 0016 { 0017 Q_OBJECT 0018 Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2.Player") 0019 0020 Q_PROPERTY(QString PlaybackStatus READ PlaybackStatus) 0021 Q_PROPERTY(double Rate READ Rate CONSTANT) 0022 Q_PROPERTY(QVariantMap Metadata READ Metadata) 0023 Q_PROPERTY(double Volume READ Volume WRITE setVolume) 0024 Q_PROPERTY(qlonglong Position READ Position) 0025 Q_PROPERTY(double MinimumRate READ MinimumRate) 0026 Q_PROPERTY(double MaximumRate READ MaximumRate) 0027 Q_PROPERTY(bool CanGoNext READ CanGoNext) 0028 Q_PROPERTY(bool CanGoPrevious READ CanGoPrevious) 0029 Q_PROPERTY(bool CanPlay READ CanPlay) 0030 Q_PROPERTY(bool CanPause READ CanPause) 0031 Q_PROPERTY(bool CanSeek READ CanSeek CONSTANT) 0032 Q_PROPERTY(bool CanControl READ CanControl CONSTANT) 0033 0034 public: 0035 explicit MprisRemotePlayerMediaPlayer2Player(MprisRemotePlayer *parent, MprisRemotePlugin *plugin); 0036 0037 public Q_SLOTS: 0038 void Next(); 0039 void Previous(); 0040 void Pause(); 0041 void PlayPause(); 0042 void Stop(); 0043 void Play(); 0044 void Seek(qlonglong Offset); 0045 void SetPosition(QDBusObjectPath TrackId, qlonglong Position); 0046 void OpenUri(QString Uri); 0047 0048 public: 0049 QString PlaybackStatus() const; 0050 double Rate() const; 0051 QVariantMap Metadata() const; 0052 double Volume() const; 0053 void setVolume(double volume) const; 0054 qlonglong Position() const; 0055 double MinimumRate() const; 0056 double MaximumRate() const; 0057 bool CanGoNext() const; 0058 bool CanGoPrevious() const; 0059 bool CanPlay() const; 0060 bool CanPause() const; 0061 bool CanSeek() const; 0062 bool CanControl() const; 0063 0064 Q_SIGNALS: 0065 void Seeked(qlonglong position); 0066 0067 private: 0068 MprisRemotePlayer *m_parent; 0069 MprisRemotePlugin *m_plugin; 0070 0071 bool m_controlsChanged; 0072 bool m_trackInfoChanged; 0073 bool m_positionChanged; 0074 bool m_volumeChanged; 0075 bool m_playingChanged; 0076 0077 void controlsChanged(); 0078 void trackInfoChanged(); 0079 void positionChanged(); 0080 void volumeChanged(); 0081 void playingChanged(); 0082 void emitPropertiesChanged(); 0083 };