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/dbusconnector.cpp | |
| parent | 28d27970e9ca71e0abd2526a31043dab33a52a6e (diff) | |
Implemented preliminary MPRIS support
Diffstat (limited to 'daemon/dbusconnector.cpp')
| -rw-r--r-- | daemon/dbusconnector.cpp | 52 |
1 files changed, 36 insertions, 16 deletions
diff --git a/daemon/dbusconnector.cpp b/daemon/dbusconnector.cpp index 2ad753d..5fe064b 100644 --- a/daemon/dbusconnector.cpp +++ b/daemon/dbusconnector.cpp @@ -6,6 +6,7 @@ #include <QDBusReply> #include <QDBusArgument> #include <QDBusObjectPath> +#include <QDBusConnectionInterface> //dbus-send --system --dest=org.bluez --print-reply / org.bluez.Manager.ListAdapters //dbus-send --system --dest=org.bluez --print-reply $path org.bluez.Adapter.GetProperties @@ -14,16 +15,28 @@ DBusConnector::DBusConnector(QObject *parent) : QObject(parent) -{} +{ + QDBusConnection bus = QDBusConnection::sessionBus(); + QDBusConnectionInterface *interface = bus.interface(); + connect(interface, SIGNAL(serviceRegistered(QString&)), SLOT(onServiceRegistered(QString&))); + connect(interface, SIGNAL(serviceUnregistered(QString&)), SIGNAL(onServiceUnregistered(QString&))); + + QDBusReply<QStringList> serviceNames = interface->registeredServiceNames(); + if (serviceNames.isValid()) { + dbusServices = serviceNames.value(); + } + else { + logger()->error() << serviceNames.error().message(); + } +} bool DBusConnector::findPebble() { QDBusConnection system = QDBusConnection::systemBus(); - QDBusReply<QList<QDBusObjectPath>> ListAdaptersReply = system.call(QDBusMessage::createMethodCall("org.bluez", - "/", - "org.bluez.Manager", - "ListAdapters")); + QDBusReply<QList<QDBusObjectPath>> ListAdaptersReply = system.call( + QDBusMessage::createMethodCall("org.bluez", "/", "org.bluez.Manager", + "ListAdapters")); if (not ListAdaptersReply.isValid()) { logger()->error() << ListAdaptersReply.error().message(); return false; @@ -36,10 +49,9 @@ bool DBusConnector::findPebble() return false; } - QDBusReply<QVariantMap> AdapterPropertiesReply = system.call(QDBusMessage::createMethodCall("org.bluez", - adapters[0].path(), - "org.bluez.Adapter", - "GetProperties")); + QDBusReply<QVariantMap> AdapterPropertiesReply = system.call( + QDBusMessage::createMethodCall("org.bluez", adapters[0].path(), "org.bluez.Adapter", + "GetProperties")); if (not AdapterPropertiesReply.isValid()) { logger()->error() << AdapterPropertiesReply.error().message(); return false; @@ -48,14 +60,10 @@ bool DBusConnector::findPebble() QList<QDBusObjectPath> devices; AdapterPropertiesReply.value()["Devices"].value<QDBusArgument>() >> devices; - QString name; - QString address; - foreach (QDBusObjectPath path, devices) { - QDBusReply<QVariantMap> DevicePropertiesReply = system.call(QDBusMessage::createMethodCall("org.bluez", - path.path(), - "org.bluez.Device", - "GetProperties")); + QDBusReply<QVariantMap> DevicePropertiesReply = system.call( + QDBusMessage::createMethodCall("org.bluez", path.path(), "org.bluez.Device", + "GetProperties")); if (not DevicePropertiesReply.isValid()) { logger()->error() << DevicePropertiesReply.error().message(); continue; @@ -75,3 +83,15 @@ bool DBusConnector::findPebble() return false; } + +void DBusConnector::onServiceRegistered(QString &name) +{ + logger()->debug() << "DBus service online:" << name; + if (!dbusServices.contains(name)) dbusServices.append(name); +} + +void DBusConnector::onServiceUnregistered(QString &name) +{ + logger()->debug() << "DBus service offline:" << name; + if (dbusServices.contains(name)) dbusServices.removeAll(name); +} |
