summaryrefslogtreecommitdiff
path: root/daemon
diff options
context:
space:
mode:
authorTomasz Sterna <tomek@xiaoka.com>2014-07-06 02:56:39 +0200
committerTomasz Sterna <tomek@xiaoka.com>2014-07-09 01:57:32 +0200
commit66fcda8bf06abcc557d2d435b5dc0562de3a9566 (patch)
tree5b1b53ee834514178790a7a6ef87cdcf17d0ef1e /daemon
parent558e07f125eea64436e2097b8a35c9c348b5204e (diff)
Implemented org.pebbled DBus service
Diffstat (limited to 'daemon')
-rw-r--r--daemon/daemon.pro8
-rw-r--r--daemon/dbusadaptor.cpp59
-rw-r--r--daemon/dbusadaptor.h68
-rw-r--r--daemon/manager.cpp12
-rw-r--r--daemon/manager.h11
-rw-r--r--daemon/org.pebbled.xml14
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>