3 #include "mainwidget.hpp"
4 #include "settingsDialog.hpp"
5 #include "connection.hpp"
6 #include "devstate.hpp"
7 #include "settings.hpp"
11 // --------------------------------------------------
13 // --------------------------------------------------
14 MainWidget::MainWidget ()
18 setAttribute(Qt::WA_TranslucentBackground);
20 _light = new TrafficLight (this);
21 _label = new QLabel (this);
22 _timer = new QTimer (this);
24 _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
26 _traffic = new Traffic;
27 _regions = new RegionsTable;
28 _settings = Settings::instance ();
30 QHBoxLayout *layout = new QHBoxLayout;
31 layout->addWidget (_light);
32 layout->addWidget (_label);
37 connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ()));
38 connect (_timer, SIGNAL (timeout ()), SLOT (updateData ()));
39 connect (DeviceState::instance (), SIGNAL (lockChanged (bool)), SLOT (deviceLockChanged (bool)));
45 MainWidget::~MainWidget ()
56 void MainWidget::paintEvent(QPaintEvent *event)
59 p.setBrush (QColor(0, 0, 0, 128));
61 p.drawRoundedRect (rect(), 10, 10);
64 QWidget::paintEvent (event);
68 void MainWidget::trafficUpdated ()
70 ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
75 _light->setColor (info.color ());
77 if (_settings->check (Settings::C_ShowRank)) {
78 data.append (tr ("%n point(s)", "", info.level ()));
82 if (_settings->check (Settings::C_ShowTime)) {
85 data.append (info.localtime ());
89 if (_settings->check (Settings::C_ShowHint)) {
92 data.append (info.hint ());
95 _label->setText (data);
98 _light->setColor (ExtendedTrafficInfo::Unknown);
99 _label->setText (tr ("No data"));
104 void MainWidget::updateData ()
108 Log::instance ()->add ("updateData called");
110 #if CHECK_FOR_CONNECTION
111 update = ConnectionChecker::instance ()->checkConnection (_settings->check (Settings::C_UpdateOnGSM),
112 _settings->check (Settings::C_UpdateOnWiFi));
113 Log::instance ()->add (QString ("checkConnection returned %1").arg (update ? "true" : "false"));
114 if (!_settings->check (Settings::C_UpdateWhenLocked)) {
115 Log::instance ()->add ("Check for device state");
116 update &= !DeviceState::instance ()->locked ();
121 Log::instance ()->add ("Perform update");
125 Log::instance ()->add ("Update not performed");
129 void MainWidget::settingsDialog ()
131 SettingsDialog dlg (_settings);
140 void MainWidget::updateSize ()
142 QSize minSize (0, 80);
144 if (_settings->check (Settings::C_ShowLight))
145 minSize += QSize (80, 0);
146 if (_settings->check (Settings::C_ShowHint))
147 minSize += QSize (270, 0);
149 if (_settings->check (Settings::C_ShowTime))
150 minSize += QSize (75, 0);
151 if (_settings->check (Settings::C_ShowRank))
152 minSize += QSize (75, 0);
155 setFixedSize (minSize);
160 void MainWidget::applySettings ()
162 _light->setVisible (_settings->check (Settings::C_ShowLight));
166 Log::instance ()->add (QString ("applySettings: updateInterval is %1").arg (_settings->updateInterval ()));
168 if (_settings->updateInterval () < 0) {
170 Log::instance ()->add ("Timer disabled");
173 _timer->setInterval (1000 * 60 * _settings->updateInterval ());
175 Log::instance ()->add (QString ("Timer interval set to %1 ms").arg (1000 * 60 * _settings->updateInterval ()));
180 void MainWidget::mousePressEvent (QMouseEvent *event)
183 QAction *settingsAction, *updateAction, *todo;
185 Log::instance ()->add (QString ("mousePressEvent at %1,%2").arg (event->pos ().x ()).arg (event->pos ().y ()));
187 settingsAction = menu.addAction (tr ("Settings"));
188 updateAction = menu.addAction (tr ("Update"));
190 todo = menu.exec (event->pos ());
194 if (todo == settingsAction)
196 if (todo == updateAction)
201 void MainWidget::deviceLockChanged (bool locked)
203 if (!_settings->check (Settings::C_UpdateWhenLocked))