Merge branch 'master' into dev_local
[qtmeetings] / src / BusinessLogic / Utils / Clock.cpp
1 #include "Clock.h"
2 #include <QProcess>
3 #include <QTimer>
4
5 const int TICK_TIME = 1000; // milliseconds
6
7 Clock::Clock() :
8                 QObject()
9 {
10         iCurrentDateTime = QDateTime::currentDateTime();
11
12         iTimer = new QTimer;
13         iTimer->setInterval( TICK_TIME );
14         connect( iTimer, SIGNAL( timeout() ), iTimer, SLOT( start() ) );
15         connect( iTimer, SIGNAL( timeout() ), this, SLOT( update() ) );
16         iTimer->start();
17 }
18
19 Clock::~Clock()
20 {
21         if ( iTimer != 0 )
22         {
23                 iTimer->stop();
24                 delete iTimer;
25         }
26 }
27
28 QDateTime Clock::datetime()
29 {
30         return iCurrentDateTime;
31 }
32
33 QDate Clock::today()
34 {
35         return iCurrentDateTime.date();
36 }
37
38 QTime Clock::time()
39 {
40         return iCurrentDateTime.time();
41 }
42
43 void Clock::syncronizeDateTime()
44 {
45         const QString systemCmd = "sudo /etc/init.d/openntpd restart";
46
47         iTimer->stop();
48         QProcess::execute( systemCmd );
49         iTimer->start();
50 }
51
52 void Clock::update()
53 {
54         iCurrentDateTime = QDateTime::currentDateTime();
55
56         emit tick( datetime() );
57 }