summaryrefslogtreecommitdiff
path: root/daemon/manager.cpp
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2014-07-13 04:09:21 +0200
committerTomasz Sterna <tomek@xiaoka.com>2014-07-13 04:09:21 +0200
commit6d6178cca884f563396856d59eba4813b2eb2686 (patch)
treeef84e7b3e2ab2ef61648c89eaa0298d3513d4db4 /daemon/manager.cpp
parent28d27970e9ca71e0abd2526a31043dab33a52a6e (diff)
Implemented preliminary MPRIS support
Diffstat (limited to 'daemon/manager.cpp')
-rw-r--r--daemon/manager.cpp30
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();
+}