diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-13 04:09:21 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-13 04:09:21 +0200 |
| commit | 6d6178cca884f563396856d59eba4813b2eb2686 (patch) | |
| tree | ef84e7b3e2ab2ef61648c89eaa0298d3513d4db4 /daemon/manager.cpp | |
| parent | 28d27970e9ca71e0abd2526a31043dab33a52a6e (diff) | |
Implemented preliminary MPRIS support
Diffstat (limited to 'daemon/manager.cpp')
| -rw-r--r-- | daemon/manager.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/daemon/manager.cpp b/daemon/manager.cpp index 8ff6785..228c466 100644 --- a/daemon/manager.cpp +++ b/daemon/manager.cpp @@ -38,11 +38,16 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan PebbledProxy *proxy = new PebbledProxy(this); PebbledAdaptor *adaptor = new PebbledAdaptor(proxy); - QDBusConnection connection = QDBusConnection::sessionBus(); - connection.registerObject("/", proxy); - connection.registerService("org.pebbled"); + QDBusConnection session = QDBusConnection::sessionBus(); + session.registerObject("/", proxy); + session.registerService("org.pebbled"); connect(dbus, SIGNAL(pebbleChanged()), adaptor, SIGNAL(pebbleChanged())); connect(watch, SIGNAL(connectedChanged()), adaptor, SIGNAL(connectedChanged())); + + // Music Control interface + session.connect("", "/org/mpris/MediaPlayer2", + "org.freedesktop.DBus.Properties", "PropertiesChanged", + this, SLOT(onMprisPropertiesChanged(QString,QMap<QString,QVariant>,QStringList))); } void Manager::onPebbleChanged() @@ -185,3 +190,22 @@ void Manager::processUnreadMessages(GroupObject *group) logger()->debug() << "Got processUnreadMessages for group with no new messages"; } } + +void Manager::onMprisPropertiesChanged(QString interface, QMap<QString,QVariant> changed, QStringList invalidated) +{ + qDebug() << interface << changed << invalidated; + lastSeenMpris = message().service(); +} + +QString Manager::mpris() +{ + const QStringList &services = dbus->services(); + if (not lastSeenMpris.isEmpty() && services.contains(lastSeenMpris)) + return lastSeenMpris; + + foreach (QString service,services) + if (service.startsWith("org.mpris.MediaPlayer2.")) + return service; + + return QString(); +} |
