25#include <QDBusAbstractAdaptor>
26#include <QDBusConnection>
27#include <QDBusContext>
28#include <QDBusObjectPath>
39const QString
objectPath = QStringLiteral(
"/org/mpris/MediaPlayer2");
47 Q_CLASSINFO(
"D-Bus Interface",
"org.mpris.MediaPlayer2")
63 QString
identity()
const {
return QStringLiteral(
"core::media::Hub"); }
66 QString
desktopEntry()
const {
return QStringLiteral(
"lomiri-mediaplayer-app"); }
69 return {
"audio/mpeg3",
"video/mpeg4"};
83 Q_CLASSINFO(
"D-Bus Interface",
"org.mpris.MediaPlayer2.Playlists")
93 QStringList
orderings()
const {
return {
"Alphabetical"}; }
103 Q_CLASSINFO(
"D-Bus Interface",
"org.mpris.MediaPlayer2.Player")
131 None = media::Player::LoopStatus::none,
132 Track = media::Player::LoopStatus::track,
179 void Seek(quint64 microSeconds);
183 void OpenUri(
const QDBusMessage &);
205 QDBusConnection m_connection;
215 m_propertyNotifier(connection,
objectPath, this)
223 if (m_player == impl)
return;
226 m_player->disconnect(
this);
231 QObject::connect(impl, &PlayerImplementation::seekedTo,
235 QObject::connect(impl, &PlayerImplementation::mprisPropertiesChanged,
237 m_propertyNotifier.
notify({
238 "CanPlay",
"CanPause",
"CanSeek",
239 "CanGoPrevious",
"CanGoNext",
242 QObject::connect(impl, &PlayerImplementation::playbackStatusChanged,
244 m_propertyNotifier.
notify({
"PlaybackStatus" });
246 QObject::connect(impl, &PlayerImplementation::metadataForCurrentTrackChanged,
248 m_propertyNotifier.
notify({
"Metadata" });
252 m_propertyNotifier.
notify();
262 return QStringLiteral(
"Playing");
264 return QStringLiteral(
"Paused");
266 return QStringLiteral(
"Stopped");
274 int value = QMetaEnum::fromType<LoopStatus>().
275 keyToValue(status.toUtf8().constData(), &ok);
277 MH_ERROR(
"Invalid loop status: %s", qUtf8Printable(status));
286 return QMetaEnum::fromType<LoopStatus>().valueToKey(value);
302 if (!m_player)
return;
330 m_connection(QDBusConnection::sessionBus()),
348 return d->m_playerAdaptor->setPlayer(impl);
354 return d->m_playerAdaptor->player();
360 return d->m_playerAdaptor->player();
366 return d->m_connection.registerObject(
objectPath,
this);
369#include "media_player2.moc"
void notify(const QStringList &propertyFilter={})
qint16 orientation() const
media::PlayerImplementation * player()
double maximumRate() const
void setShuffle(bool shuffle)
double minimumRate() const
void setVolume(double volume)
void VideoDimensionChanged(quint32 height, quint32 width)
void OpenUri(const QDBusMessage &)
void setTypedLoopStatus(qint16 status)
void setLoopStatus(const QString &status)
qint16 audioStreamRole() const
double playbackRate() const
bool isAudioSource() const
QVariantMap metadata() const
void SetPosition(const QDBusObjectPath &, quint64)
bool canGoPrevious() const
void Buffering(int percent)
void setPlaybackRate(double rate)
bool isVideoSource() const
void setPlayer(media::PlayerImplementation *impl)
void PlaybackStatusChanged(quint16 status)
void Seeked(quint64 microSeconds)
QString playbackStatus() const
PlayerAdaptor(const QDBusConnection &connection, QObject *parent)
qint16 typedLoopStatus() const
void Seek(quint64 microSeconds)
QString loopStatus() const
const media::PlayerImplementation * player() const
virtual ~PlaylistsAdaptor()=default
quint32 playlistCount() const
QStringList orderings() const
QStringList supportedMimeTypes() const
virtual ~RootAdaptor()=default
QStringList SupportedMimeTypes
QStringList supportedUriSchemes() const
bool falseProperty() const
QStringList SupportedUriSchemes
QString desktopEntry() const
static constexpr const char * paused
static constexpr const char * playing
static constexpr const char * stopped