v0.1.0
[staging/HomeScreen.git] / SampleAppTimeDate / src / timedateprovider.cpp
diff --git a/SampleAppTimeDate/src/timedateprovider.cpp b/SampleAppTimeDate/src/timedateprovider.cpp
new file mode 100644 (file)
index 0000000..91d5e30
--- /dev/null
@@ -0,0 +1,77 @@
+#include "timedateprovider.h"
+#include <QTimerEvent>
+
+TimeDateProvider::TimeDateProvider(QObject *parent) :
+    QObject(parent),
+    m_secondsTimerId(-1),
+    mp_dBusStatusBarProxy(0),
+    m_statusBarPlaceholder(-1)
+{
+    qDebug("D-Bus: register as org.agl.SampleAppTimeDate");
+    // dbus setup
+    QDBusConnection dbus = QDBusConnection::sessionBus();
+
+    dbus.registerObject("/", this);
+    dbus.registerService("org.agl.sampleapptimedate");
+
+
+    qDebug("D-Bus: connect to org.agl.mainwindow /StatusBar");
+    mp_dBusStatusBarProxy = new org::agl::statusbar("org.agl.homescreen",
+                                              "/StatusBar",
+                                              QDBusConnection::sessionBus(),
+                                              0);
+}
+
+TimeDateProvider::~TimeDateProvider()
+{
+    stop();
+
+    if (0 != mp_dBusStatusBarProxy)
+    {
+        qDebug("x");
+        mp_dBusStatusBarProxy->setStatusText(1, "");
+        delete mp_dBusStatusBarProxy;
+    }
+}
+
+void TimeDateProvider::start()
+{
+    qDebug("trying to start timer (if this lasts long, maybe the Home Screen Application is not launched.");
+    if ((-1 == m_statusBarPlaceholder) && (0 != mp_dBusStatusBarProxy))
+    {
+        QList<int> availablePlaceholder = mp_dBusStatusBarProxy->getAvailablePlaceholders();
+        if (availablePlaceholder.size() > 0)
+        {
+            // just take the first available placeholder
+            m_statusBarPlaceholder = availablePlaceholder[0];
+            qDebug("- using statusbar placeholder %d", m_statusBarPlaceholder);
+
+            qDebug("- timer started");
+            // callback every second
+            m_secondsTimerId = startTimer(1000);
+        }
+    }
+}
+
+void TimeDateProvider::stop()
+{
+    if (-1 != m_secondsTimerId)
+    {
+        killTimer(m_secondsTimerId);
+        m_secondsTimerId = -1;
+        m_statusBarPlaceholder = -1;
+    }
+}
+
+void TimeDateProvider::timerEvent(QTimerEvent *e)
+{
+    if (e->timerId() == m_secondsTimerId)
+    {
+        if (0 != mp_dBusStatusBarProxy)
+        {
+            QString toDisplay = QDateTime::currentDateTime().toString("hh:mm");
+            qDebug("%s", toDisplay.toStdString().c_str());
+            mp_dBusStatusBarProxy->setStatusText(m_statusBarPlaceholder, toDisplay);
+        }
+    }
+}