1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
//===========================================
// Lumina-DE source code
// Copyright (c) 2012, Ken Moore
// Available under the 3-clause BSD license
// See the LICENSE file for full details
//===========================================
#include "LClock.h"
#include "LSession.h"
LClock::LClock(QWidget *parent, QString id, bool horizontal) : LPPlugin(parent, id, horizontal){
//Setup the widget
labelWidget = new QLabel(this);
labelWidget->setAlignment(Qt::AlignCenter);
labelWidget->setStyleSheet("font-weight: bold;");
labelWidget->setWordWrap(true);
this->layout()->setContentsMargins(3,0,3,0); //reserve some space on left/right
this->layout()->addWidget(labelWidget);
//Setup the timer
timer = new QTimer();
timer->setInterval(1000); //update once a second
updateFormats();
updateTime();
connect(timer,SIGNAL(timeout()), this, SLOT(updateTime()) );
connect(QApplication::instance(), SIGNAL(SessionConfigChanged()), this, SLOT(updateFormats()) );
timer->start();
}
LClock::~LClock(){
timer->stop();
delete timer;
}
void LClock::updateTime(){
QDateTime CT = QDateTime::currentDateTime();
if(useTZ){ CT = CT.toTimeZone(TZ); }
//Now update the display
QString label;
if(deftime){ label = CT.time().toString(Qt::SystemLocaleShortDate) ; }
else{ label=CT.toString(timefmt); }
if(defdate){ labelWidget->setToolTip(CT.date().toString(Qt::SystemLocaleLongDate)); }
else{ labelWidget->setToolTip(CT.toString(datefmt)); }
if( this->layout()->direction() == QBoxLayout::TopToBottom ){
//different routine for vertical text (need newlines instead of spaces)
label.replace(" ","\n");
}
labelWidget->setText(label);
}
void LClock::updateFormats(){
timefmt = LSession::handle()->sessionSettings()->value("TimeFormat","").toString();
datefmt = LSession::handle()->sessionSettings()->value("DateFormat","").toString();
deftime = timefmt.simplified().isEmpty();
defdate = datefmt.simplified().isEmpty();
useTZ = LSession::handle()->sessionSettings()->value("CustomTimeZone",false).toBool();
if(useTZ){ TZ = QTimeZone( LSession::handle()->sessionSettings()->value("TimeZoneByteCode", QByteArray()).toByteArray() ); }
}
|