You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
265 lines
8.6 KiB
C++
265 lines
8.6 KiB
C++
// -*- c++ -*-
|
|
|
|
/*!
|
|
*
|
|
* Copyright (C) 2015 Jolla Ltd.
|
|
*
|
|
* Contact: Valerio Valerio <valerio.valerio@jolla.com>
|
|
* Author: Andres Gomez <andres.gomez@jolla.com>
|
|
*
|
|
* This library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Lesser General Public
|
|
* License as published by the Free Software Foundation; either
|
|
* version 2.1 of the License, or (at your option) any later version.
|
|
*
|
|
* This library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with this library; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
|
|
//
|
|
// W A R N I N G
|
|
// -------------
|
|
//
|
|
// This file is not part of the public API. This header file may
|
|
// change from version to version without notice, or even be
|
|
// removed.
|
|
//
|
|
// We mean it.
|
|
//
|
|
//
|
|
|
|
|
|
#ifndef MPRISPLAYER_P_H
|
|
#define MPRISPLAYER_P_H
|
|
|
|
#include <QtCore/QObject>
|
|
#include <QtDBus/QtDBus>
|
|
QT_BEGIN_NAMESPACE
|
|
class QByteArray;
|
|
template<class T> class QList;
|
|
template<class Key, class Value> class QMap;
|
|
class QString;
|
|
class QStringList;
|
|
class QVariant;
|
|
QT_END_NAMESPACE
|
|
|
|
|
|
class MprisPlayer;
|
|
|
|
/*
|
|
* Adaptor class for interface org.mpris.MediaPlayer2
|
|
*/
|
|
class MprisRootAdaptor: public QDBusAbstractAdaptor
|
|
{
|
|
Q_OBJECT
|
|
Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2")
|
|
Q_CLASSINFO("D-Bus Introspection", ""
|
|
" <interface name=\"org.mpris.MediaPlayer2\">\n"
|
|
" <method name=\"Raise\"/>\n"
|
|
" <method name=\"Quit\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanQuit\"/>\n"
|
|
" <property access=\"readwrite\" type=\"b\" name=\"Fullscreen\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanSetFullscreen\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanRaise\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"HasTrackList\"/>\n"
|
|
" <property access=\"read\" type=\"s\" name=\"Identity\"/>\n"
|
|
" <property access=\"read\" type=\"s\" name=\"DesktopEntry\"/>\n"
|
|
" <property access=\"read\" type=\"as\" name=\"SupportedUriSchemes\"/>\n"
|
|
" <property access=\"read\" type=\"as\" name=\"SupportedMimeTypes\"/>\n"
|
|
" </interface>\n"
|
|
"")
|
|
public:
|
|
MprisRootAdaptor(MprisPlayer *parent);
|
|
virtual ~MprisRootAdaptor();
|
|
|
|
public: // PROPERTIES
|
|
Q_PROPERTY(bool CanQuit READ canQuit)
|
|
bool canQuit() const;
|
|
|
|
Q_PROPERTY(bool CanRaise READ canRaise)
|
|
bool canRaise() const;
|
|
|
|
Q_PROPERTY(bool CanSetFullscreen READ canSetFullscreen)
|
|
bool canSetFullscreen() const;
|
|
|
|
Q_PROPERTY(QString DesktopEntry READ desktopEntry)
|
|
QString desktopEntry() const;
|
|
|
|
Q_PROPERTY(bool Fullscreen READ fullscreen WRITE setFullscreen)
|
|
bool fullscreen() const;
|
|
void setFullscreen(bool value);
|
|
|
|
Q_PROPERTY(bool HasTrackList READ hasTrackList)
|
|
bool hasTrackList() const;
|
|
|
|
Q_PROPERTY(QString Identity READ identity)
|
|
QString identity() const;
|
|
|
|
Q_PROPERTY(QStringList SupportedMimeTypes READ supportedMimeTypes)
|
|
QStringList supportedMimeTypes() const;
|
|
|
|
Q_PROPERTY(QStringList SupportedUriSchemes READ supportedUriSchemes)
|
|
QStringList supportedUriSchemes() const;
|
|
|
|
public Q_SLOTS: // METHODS
|
|
void Quit();
|
|
void Raise();
|
|
Q_SIGNALS: // SIGNALS
|
|
private Q_SLOTS:
|
|
void onCanQuitChanged() const;
|
|
void onCanRaiseChanged() const;
|
|
void onCanSetFullscreenChanged() const;
|
|
void onDesktopEntryChanged() const;
|
|
void onFullscreenChanged() const;
|
|
void onHasTrackListChanged() const;
|
|
void onIdentityChanged() const;
|
|
void onSupportedUriSchemesChanged() const;
|
|
void onSupportedMimeTypesChanged() const;
|
|
};
|
|
|
|
|
|
/*
|
|
* Adaptor class for interface org.mpris.MediaPlayer2.Player
|
|
*/
|
|
class MprisPlayerAdaptor: public QDBusAbstractAdaptor
|
|
{
|
|
Q_OBJECT
|
|
Q_CLASSINFO("D-Bus Interface", "org.mpris.MediaPlayer2.Player")
|
|
Q_CLASSINFO("D-Bus Introspection", ""
|
|
" <interface name=\"org.mpris.MediaPlayer2.Player\">\n"
|
|
" <method name=\"Next\"/>\n"
|
|
" <method name=\"Previous\"/>\n"
|
|
" <method name=\"Pause\"/>\n"
|
|
" <method name=\"PlayPause\"/>\n"
|
|
" <method name=\"Stop\"/>\n"
|
|
" <method name=\"Play\"/>\n"
|
|
" <method name=\"Seek\">\n"
|
|
" <arg direction=\"in\" type=\"x\" name=\"Offset\"/>\n"
|
|
" </method>\n"
|
|
" <method name=\"SetPosition\">\n"
|
|
" <arg direction=\"in\" type=\"o\" name=\"TrackId\"/>\n"
|
|
" <arg direction=\"in\" type=\"x\" name=\"Position\"/>\n"
|
|
" </method>\n"
|
|
" <method name=\"OpenUri\">\n"
|
|
" <arg direction=\"in\" type=\"s\" name=\"Uri\"/>\n"
|
|
" <annotation value=\"QUrl\" name=\"org.qtproject.QtDBus.QtTypeName.In0\"/>\n"
|
|
" </method>\n"
|
|
" <signal name=\"Seeked\">\n"
|
|
" <arg direction=\"out\" type=\"x\" name=\"Position\"/>\n"
|
|
" </signal>\n"
|
|
" <property access=\"read\" type=\"s\" name=\"PlaybackStatus\"/>\n"
|
|
" <property access=\"readwrite\" type=\"s\" name=\"LoopStatus\"/>\n"
|
|
" <property access=\"readwrite\" type=\"d\" name=\"Rate\"/>\n"
|
|
" <property access=\"readwrite\" type=\"b\" name=\"Shuffle\"/>\n"
|
|
" <property access=\"read\" type=\"a{sv}\" name=\"Metadata\">\n"
|
|
" <annotation value=\"QVariantMap\" name=\"org.qtproject.QtDBus.QtTypeName\"/>\n"
|
|
" </property>\n"
|
|
" <property access=\"readwrite\" type=\"d\" name=\"Volume\"/>\n"
|
|
" <property access=\"read\" type=\"x\" name=\"Position\">\n"
|
|
" <annotation value=\"false\" name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\"/>\n"
|
|
" </property>\n"
|
|
" <property access=\"read\" type=\"d\" name=\"MinimumRate\"/>\n"
|
|
" <property access=\"read\" type=\"d\" name=\"MaximumRate\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanGoNext\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanGoPrevious\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanPlay\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanPause\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanSeek\"/>\n"
|
|
" <property access=\"read\" type=\"b\" name=\"CanControl\">\n"
|
|
" <annotation value=\"false\" name=\"org.freedesktop.DBus.Property.EmitsChangedSignal\"/>\n"
|
|
" </property>\n"
|
|
" </interface>\n"
|
|
"")
|
|
|
|
public:
|
|
MprisPlayerAdaptor(MprisPlayer *parent);
|
|
virtual ~MprisPlayerAdaptor();
|
|
|
|
public: // PROPERTIES
|
|
Q_PROPERTY(bool CanControl READ canControl)
|
|
bool canControl() const;
|
|
|
|
Q_PROPERTY(bool CanGoNext READ canGoNext)
|
|
bool canGoNext() const;
|
|
|
|
Q_PROPERTY(bool CanGoPrevious READ canGoPrevious)
|
|
bool canGoPrevious() const;
|
|
|
|
Q_PROPERTY(bool CanPause READ canPause)
|
|
bool canPause() const;
|
|
|
|
Q_PROPERTY(bool CanPlay READ canPlay)
|
|
bool canPlay() const;
|
|
|
|
Q_PROPERTY(bool CanSeek READ canSeek)
|
|
bool canSeek() const;
|
|
|
|
Q_PROPERTY(QString LoopStatus READ loopStatus WRITE setLoopStatus)
|
|
QString loopStatus() const;
|
|
void setLoopStatus(const QString &value);
|
|
|
|
Q_PROPERTY(double MaximumRate READ maximumRate)
|
|
double maximumRate() const;
|
|
|
|
Q_PROPERTY(QVariantMap Metadata READ metadata)
|
|
QVariantMap metadata() const;
|
|
|
|
Q_PROPERTY(double MinimumRate READ minimumRate)
|
|
double minimumRate() const;
|
|
|
|
Q_PROPERTY(QString PlaybackStatus READ playbackStatus)
|
|
QString playbackStatus() const;
|
|
|
|
Q_PROPERTY(qlonglong Position READ position)
|
|
qlonglong position() const;
|
|
|
|
Q_PROPERTY(double Rate READ rate WRITE setRate)
|
|
double rate() const;
|
|
void setRate(double value);
|
|
|
|
Q_PROPERTY(bool Shuffle READ shuffle WRITE setShuffle)
|
|
bool shuffle() const;
|
|
void setShuffle(bool value);
|
|
|
|
Q_PROPERTY(double Volume READ volume WRITE setVolume)
|
|
double volume() const;
|
|
void setVolume(double value);
|
|
|
|
public Q_SLOTS: // METHODS
|
|
void Next();
|
|
void OpenUri(const QString &Uri);
|
|
void Pause();
|
|
void Play();
|
|
void PlayPause();
|
|
void Previous();
|
|
void Seek(qlonglong Offset);
|
|
void SetPosition(const QDBusObjectPath &TrackId, qlonglong Position);
|
|
void Stop();
|
|
Q_SIGNALS: // SIGNALS
|
|
void Seeked(qlonglong Position);
|
|
private Q_SLOTS:
|
|
void onCanControlChanged() const;
|
|
void onCanGoNextChanged() const;
|
|
void onCanGoPreviousChanged() const;
|
|
void onCanPauseChanged() const;
|
|
void onCanPlayChanged() const;
|
|
void onCanSeekChanged() const;
|
|
void onLoopStatusChanged() const;
|
|
void onMaximumRateChanged() const;
|
|
void onMetadataChanged() const;
|
|
void onMinimumRateChanged() const;
|
|
void onPlaybackStatusChanged() const;
|
|
void onRateChanged() const;
|
|
void onShuffleChanged() const;
|
|
void onVolumeChanged() const;
|
|
};
|
|
|
|
#endif /* MPRISPLAYER_P_H */
|