8 #include <QDBusMessage>
16 QDBusConnection connection = QDBusConnection::sessionBus();
21 connection.registerService(
"org.mpris.MediaPlayer2." TTK_APP_NAME);
22 connection.registerObject(
"/org/mpris/MediaPlayer2",
this);
27 QDBusConnection::sessionBus().unregisterService(
"org.mpris.MediaPlayer2." TTK_APP_NAME);
39 : QDBusAbstractAdaptor(parent)
71 QStringList mimeTypes;
74 mimeTypes.removeDuplicates();
81 if(!protocols.contains(
"file"))
83 protocols.append(
"file");
100 : QDBusAbstractAdaptor(parent)
155 default:
return "None";
163 m_application->playOneLoop();
165 else if(value ==
"Playlist")
167 m_application->playlistLoop();
171 m_application->playOrder();
184 return QVariantMap();
192 if(!coverPath.isEmpty())
194 map[
"mpris:artUrl"] = QUrl::fromLocalFile(coverPath).toString();
199 if(!coverImage.isNull())
202 QBuffer buffer(&tmp);
203 if(buffer.open(QIODevice::WriteOnly))
205 coverImage.save(&buffer,
"JPEG");
206 map[
"mpris:artUrl"] = QString(
"data:image/jpeg;base64,%1").arg(QString::fromLatin1(tmp.toBase64()));
261 map[
"mpris:trackid"] = QVariant::fromValue<QDBusObjectPath>(
m_trackID);
332 if(uri.startsWith(
"file://"))
334 path = QUrl(uri).toLocalFile();
335 if(!QFile::exists(path))
420 m_trackID = QDBusObjectPath(QString(
"%1/Track/%2").arg(
"/org/qmmp/MediaPlayer2").arg(
TTK::random()));
450 if(it.value() != prevProps.value(it.key()))
452 map.insert(it.key(), it.value());
461 QDBusMessage msg = QDBusMessage::createSignal(
"/org/mpris/MediaPlayer2",
"org.freedesktop.DBus.Properties",
"PropertiesChanged");
462 msg <<
"org.mpris.MediaPlayer2.Player";
464 msg << QStringList();
465 QDBusConnection::sessionBus().send(msg);
bool shuffle() const noexcept
The class of the app mpris player object.
QStringList supportedUriSchemes() const
static QStringList contentTypes()
bool canControl() const noexcept
void OpenUri(const QString &uri)
double minimumRate() const noexcept
static MusicApplication * instance()
MusicMPRISPlayerCore * m_player
MusicApplication * m_application
bool hasTrackList() const
QDBusObjectPath m_trackID
static SoundCore * instance()
const TrackInfo & trackInfo() const
const QString & path() const
bool isEmpty() const noexcept
double rate() const noexcept
bool canPause() const noexcept
TTK_MODULE_EXPORT void initRandom()
bool canSeek() const noexcept
bool canPlay() const noexcept
void setLoopStatus(const QString &value) noexcept
MusicMPRISPlayer(QObject *parent=nullptr)
void playbackModeChanged()
TTK::PlayMode playMode() const noexcept
MusicMPRISPlayerCore(QObject *parent=nullptr)
void setVolume(int volume)
bool canGoPrevious() const noexcept
TTK_MODULE_EXPORT int random(int value=RAND_MAX)
#define TTK_WARN_STREAM(msg)
QStringList supportedMimeTypes() const
void elapsedChanged(qint64 elapsed)
The TrackInfo class stores metadata and other information about track.
QMap< QString, QVariant > TTKVariantMap
MusicPlaylist * m_playlist
void Seek(qlonglong offset)
qlonglong position() const
void Seeked(qlonglong position)
MusicMPRISPlayerRoot(QObject *parent=nullptr)
QVariantMap metadata() const
double maximumRate() const noexcept
void SetPosition(const QDBusObjectPath &trackId, qlonglong position)
void importSongsByOutside(const QString &path, bool play)
QString desktopEntry() const
TTK_MODULE_EXPORT QString toString(Record type) noexcept
MusicMPRISPlayerRoot * m_root
void setShuffle(bool value) noexcept
const QString value(Qmmp::MetaData key) const
bool canGoNext() const noexcept
int currentIndex() const noexcept
void setVolume(double value)
void setRate(double value) noexcept
QString loopStatus() const noexcept
static QStringList contentTypes()
The class of the app mpris root object.
TTKVariantMap m_properties
QString playbackStatus() const noexcept
Qmmp::State state() const