Using the Tizen application manager to receive information about installed apps and...
[staging/HomeScreen.git] / SampleAppTimeDate / src / timedateprovider.cpp
1 #include "timedateprovider.hpp"
2 #include <QTimerEvent>
3
4 TimeDateProvider::TimeDateProvider(QObject *parent) :
5     QObject(parent),
6     m_secondsTimerId(-1),
7     mp_dBusStatusBarProxy(0),
8     m_statusBarPlaceholder(-1)
9 {
10     qDebug("D-Bus: register as org.agl.SampleAppTimeDate");
11     // dbus setup
12     QDBusConnection dbus = QDBusConnection::sessionBus();
13
14     dbus.registerObject("/", this);
15     dbus.registerService("org.agl.sampleapptimedate");
16
17
18     qDebug("D-Bus: connect to org.agl.homescreen /StatusBar");
19     mp_dBusStatusBarProxy = new org::agl::statusbar("org.agl.homescreen",
20                                               "/StatusBar",
21                                               QDBusConnection::sessionBus(),
22                                               0);
23 }
24
25 TimeDateProvider::~TimeDateProvider()
26 {
27     stop();
28
29     if (0 != mp_dBusStatusBarProxy)
30     {
31         mp_dBusStatusBarProxy->setStatusText(1, "");
32         delete mp_dBusStatusBarProxy;
33     }
34 }
35
36 void TimeDateProvider::start()
37 {
38     qDebug("trying to start timer (if this lasts long, maybe the Home Screen Application is not launched.");
39     if ((-1 == m_statusBarPlaceholder) && (0 != mp_dBusStatusBarProxy))
40     {
41         QList<int> availablePlaceholder = mp_dBusStatusBarProxy->getAvailablePlaceholders();
42         if (availablePlaceholder.size() > 0)
43         {
44             // just take the first available placeholder
45             m_statusBarPlaceholder = availablePlaceholder[0];
46             qDebug("- using statusbar placeholder %d", m_statusBarPlaceholder);
47
48             qDebug("- timer started");
49             // callback every second
50             m_secondsTimerId = startTimer(1000);
51         }
52     }
53 }
54
55 void TimeDateProvider::stop()
56 {
57     if (-1 != m_secondsTimerId)
58     {
59         killTimer(m_secondsTimerId);
60         m_secondsTimerId = -1;
61         m_statusBarPlaceholder = -1;
62     }
63 }
64
65 void TimeDateProvider::timerEvent(QTimerEvent *e)
66 {
67     if (e->timerId() == m_secondsTimerId)
68     {
69         if (0 != mp_dBusStatusBarProxy)
70         {
71             QString toDisplay = QDateTime::currentDateTime().toString("hh:mm");
72             qDebug("%s", toDisplay.toStdString().c_str());
73             mp_dBusStatusBarProxy->setStatusText(m_statusBarPlaceholder, toDisplay);
74         }
75     }
76 }