Changed the old code to work as a daemon
[googlelatitude] / src / common / dbusclient.cpp
diff --git a/src/common/dbusclient.cpp b/src/common/dbusclient.cpp
new file mode 100644 (file)
index 0000000..870af53
--- /dev/null
@@ -0,0 +1,62 @@
+#include "dbusclient.h"
+
+#ifdef Q_WS_MAEMO_5
+#include <QDebug>
+#include <QDBusReply>
+#include <icd/dbus_api.h>
+
+QDBusConnection DBusClient::system_bus(QDBusConnection::systemBus());
+QDBusConnection DBusClient::session_bus(QDBusConnection::sessionBus());
+QDBusInterface* DBusClient::icd_interface = new QDBusInterface(ICD_DBUS_API_INTERFACE,
+                                                              ICD_DBUS_API_PATH,
+                                                              ICD_DBUS_API_INTERFACE,
+                                                              system_bus);
+QDBusInterface* DBusClient::gl_interface = new QDBusInterface("com.linfati.GoogleLatitude",
+                                                              "/",
+                                                              "com.linfati.GoogleLatitude",
+                                                              session_bus);
+
+DBusClient::DBusClient(QObject *parent) :
+    QObject(parent)
+{
+    QDBusConnection::systemBus().connect(ICD_DBUS_API_INTERFACE,
+                                         ICD_DBUS_API_PATH,
+                                         ICD_DBUS_API_INTERFACE,
+                                         ICD_DBUS_API_CONNECT_SIG,
+                                         this,
+                                         SLOT(networkStateChanged()));
+}
+
+bool DBusClient::daemonRunning()
+{
+    return ((QDBusReply<bool>)gl_interface->call("running")).value();
+}
+
+bool DBusClient::networkConnected()
+{
+    QDBusReply<uint> reply = icd_interface->call(ICD_DBUS_API_STATE_REQ);
+
+    return (reply.value() > 0) ? true : false;
+}
+
+void DBusClient::networkStateChanged()
+{
+    networkConnected() ? emit sigNetworkConnected() : sigNetworkDisconnected();
+}
+
+
+void DBusClient::quitDaemon()
+{
+    gl_interface->call("quit");
+}
+
+void DBusClient::reloadDaemonConfig()
+{
+    gl_interface->call("reparseConfiguration");
+}
+
+void DBusClient::showWindow()
+{
+    gl_interface->call("show");
+}
+#endif