diff options
| author | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-06 02:56:39 +0200 |
|---|---|---|
| committer | Tomasz Sterna <tomek@xiaoka.com> | 2014-07-09 01:57:32 +0200 |
| commit | 66fcda8bf06abcc557d2d435b5dc0562de3a9566 (patch) | |
| tree | 5b1b53ee834514178790a7a6ef87cdcf17d0ef1e /daemon | |
| parent | 558e07f125eea64436e2097b8a35c9c348b5204e (diff) | |
Implemented org.pebbled DBus service
Diffstat (limited to 'daemon')
| -rw-r--r-- | daemon/daemon.pro | 8 | ||||
| -rw-r--r-- | daemon/dbusadaptor.cpp | 59 | ||||
| -rw-r--r-- | daemon/dbusadaptor.h | 68 | ||||
| -rw-r--r-- | daemon/manager.cpp | 12 | ||||
| -rw-r--r-- | daemon/manager.h | 11 | ||||
| -rw-r--r-- | daemon/org.pebbled.xml | 14 |
6 files changed, 168 insertions, 4 deletions
diff --git a/daemon/daemon.pro b/daemon/daemon.pro index b0957fe..c4b6a76 100644 --- a/daemon/daemon.pro +++ b/daemon/daemon.pro @@ -17,13 +17,15 @@ SOURCES += \ voicecallmanager.cpp \ voicecallhandler.cpp \ manager.cpp \ - dbusconnector.cpp + dbusconnector.cpp \ + dbusadaptor.cpp HEADERS += \ voicecallmanager.h \ voicecallhandler.h \ manager.h \ - dbusconnector.h + dbusconnector.h \ + dbusadaptor.h INSTALLS += target pebbled @@ -31,3 +33,5 @@ target.path = /usr/bin pebbled.files = $${TARGET}.service pebbled.path = /usr/lib/systemd/user + +OTHER_FILES += org.pebbled.xml diff --git a/daemon/dbusadaptor.cpp b/daemon/dbusadaptor.cpp new file mode 100644 index 0000000..914f9f2 --- /dev/null +++ b/daemon/dbusadaptor.cpp @@ -0,0 +1,59 @@ +/* + * This file was generated by qdbusxml2cpp version 0.8 + * Command line was: qdbusxml2cpp -c DBusAdaptor -a dbusadaptor org.pebbled.xml + * + * qdbusxml2cpp is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). + * + * This is an auto-generated file. + * Do not edit! All changes made to it will be lost. + */ + +#include "dbusadaptor.h" +#include <QtCore/QMetaObject> +#include <QtCore/QByteArray> +#include <QtCore/QList> +#include <QtCore/QMap> +#include <QtCore/QString> +#include <QtCore/QStringList> +#include <QtCore/QVariant> + +/* + * Implementation of adaptor class DBusAdaptor + */ + +DBusAdaptor::DBusAdaptor(QObject *parent) + : QDBusAbstractAdaptor(parent) +{ + // constructor + setAutoRelaySignals(true); +} + +DBusAdaptor::~DBusAdaptor() +{ + // destructor +} + +QString DBusAdaptor::address() const +{ + // get the value of property address + return qvariant_cast< QString >(parent()->property("address")); +} + +bool DBusAdaptor::connected() const +{ + // get the value of property connected + return qvariant_cast< bool >(parent()->property("connected")); +} + +QString DBusAdaptor::name() const +{ + // get the value of property name + return qvariant_cast< QString >(parent()->property("name")); +} + +QVariantMap DBusAdaptor::pebble() const +{ + // get the value of property pebble + return qvariant_cast< QVariantMap >(parent()->property("pebble")); +} + diff --git a/daemon/dbusadaptor.h b/daemon/dbusadaptor.h new file mode 100644 index 0000000..9d8759a --- /dev/null +++ b/daemon/dbusadaptor.h @@ -0,0 +1,68 @@ +/* + * This file was generated by qdbusxml2cpp version 0.8 + * Command line was: qdbusxml2cpp -c DBusAdaptor -a dbusadaptor org.pebbled.xml + * + * qdbusxml2cpp is Copyright (C) 2013 Digia Plc and/or its subsidiary(-ies). + * + * This is an auto-generated file. + * This file may have been hand-edited. Look for HAND-EDIT comments + * before re-generating it. + */ + +#ifndef DBUSADAPTOR_H_1404605591 +#define DBUSADAPTOR_H_1404605591 + +#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 + +/* + * Adaptor class for interface org.pebbled + */ +class DBusAdaptor: public QDBusAbstractAdaptor +{ + Q_OBJECT + Q_CLASSINFO("D-Bus Interface", "org.pebbled") + Q_CLASSINFO("D-Bus Introspection", "" +" <interface name=\"org.pebbled\">\n" +" <property access=\"read\" type=\"a{sv}\" name=\"pebble\">\n" +" <annotation value=\"QVariantMap\" name=\"org.qtproject.QtDBus.QtTypeName\"/>\n" +" </property>\n" +" <property access=\"read\" type=\"s\" name=\"name\"/>\n" +" <property access=\"read\" type=\"s\" name=\"address\"/>\n" +" <property access=\"read\" type=\"b\" name=\"connected\"/>\n" +" <signal name=\"pebbleChanged\"/>\n" +" <signal name=\"connectedChanged\"/>\n" +" </interface>\n" + "") +public: + DBusAdaptor(QObject *parent); + virtual ~DBusAdaptor(); + +public: // PROPERTIES + Q_PROPERTY(QString address READ address) + QString address() const; + + Q_PROPERTY(bool connected READ connected) + bool connected() const; + + Q_PROPERTY(QString name READ name) + QString name() const; + + Q_PROPERTY(QVariantMap pebble READ pebble) + QVariantMap pebble() const; + +public Q_SLOTS: // METHODS +Q_SIGNALS: // SIGNALS + void connectedChanged(); + void pebbleChanged(); +}; + +#endif diff --git a/daemon/manager.cpp b/daemon/manager.cpp index 7360736..ae757e6 100644 --- a/daemon/manager.cpp +++ b/daemon/manager.cpp @@ -1,4 +1,5 @@ #include "manager.h" +#include "dbusadaptor.h" #include <QDebug> #include <QtContacts/QContact> @@ -18,8 +19,6 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan conversations = new GroupManager(this); connect(conversations, SIGNAL(groupAdded(GroupObject*)), SLOT(onConversationGroupAdded(GroupObject*))); - connect(conversations, SIGNAL(groupUpdated(GroupObject*)), SLOT(onConversationGroupUpdated(GroupObject*))); - connect(conversations, SIGNAL(groupDeleted(GroupObject*)), SLOT(onConversationGroupDeleted(GroupObject*))); conversations->getGroups(); connect(voice, SIGNAL(activeVoiceCallChanged()), SLOT(onActiveVoiceCallChanged())); @@ -37,6 +36,13 @@ Manager::Manager(watch::WatchConnector *watch, DBusConnector *dbus, VoiceCallMan connect(dbus, SIGNAL(pebbleChanged()), SLOT(onPebbleChanged())); dbus->findPebble(); } + + DBusAdaptor *adaptor = new DBusAdaptor(this); + QDBusConnection connection = QDBusConnection::sessionBus(); + connection.registerObject("/", this); + connection.registerService("org.pebbled"); + connect(this, SIGNAL(pebbleChanged()), adaptor, SIGNAL(pebbleChanged())); + connect(this, SIGNAL(connectedChanged()), adaptor, SIGNAL(connectedChanged())); } void Manager::onPebbleChanged() @@ -48,6 +54,7 @@ void Manager::onPebbleChanged() } else { watch->deviceConnect(name, pebble["Address"].toString()); } + emit pebbleChanged(); } void Manager::onConnectedChanged() @@ -63,6 +70,7 @@ void Manager::onConnectedChanged() if (!notification.publish()) { qDebug() << "Failed publishing notification"; } + emit connectedChanged(); } void Manager::onActiveVoiceCallChanged() diff --git a/daemon/manager.h b/daemon/manager.h index bfbd92d..04dd7d4 100644 --- a/daemon/manager.h +++ b/daemon/manager.h @@ -18,6 +18,10 @@ using namespace CommHistory; class Manager : public QObject { Q_OBJECT + Q_PROPERTY(QVariantMap pebble READ pebble NOTIFY pebbleChanged) + Q_PROPERTY(QString name READ pebbleName NOTIFY pebbleChanged) + Q_PROPERTY(QString address READ pebbleAddress NOTIFY pebbleChanged) + Q_PROPERTY(bool connected READ pebbleConnected NOTIFY connectedChanged) QBluetoothLocalDevice btDevice; @@ -37,7 +41,14 @@ public: Q_INVOKABLE QString findPersonByNumber(QString number); Q_INVOKABLE void processUnreadMessages(GroupObject *group); + QVariantMap pebble() { return dbus->pebble(); } + QString pebbleName() { return dbus->pebble()["Name"].toString(); } + QString pebbleAddress() { return dbus->pebble()["Address"].toString(); } + bool pebbleConnected() { return watch->isConnected(); } + signals: + void pebbleChanged(); + void connectedChanged(); public slots: void hangupAll(); diff --git a/daemon/org.pebbled.xml b/daemon/org.pebbled.xml new file mode 100644 index 0000000..a282815 --- /dev/null +++ b/daemon/org.pebbled.xml @@ -0,0 +1,14 @@ +<!DOCTYPE node PUBLIC "-//freedesktop//DTD D-BUS Object Introspection 1.0//EN" +"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd"> +<node> + <interface name="org.pebbled"> + <property name="pebble" type="a{sv}" access="read"> + <annotation name="org.qtproject.QtDBus.QtTypeName" value="QVariantMap"/> + </property> + <property name="name" type="s" access="read"/> + <property name="address" type="s" access="read"/> + <property name="connected" type="b" access="read"/> + <signal name="pebbleChanged"/> + <signal name="connectedChanged"/> + </interface> +</node> |
