4 #include "mainwidget.hpp"
5 #include "settingsDialog.hpp"
6 #include "connection.hpp"
7 #include "devstate.hpp"
8 #include "settings.hpp"
10 #include "menudialog.hpp"
13 // --------------------------------------------------
15 // --------------------------------------------------
16 MainWidget::MainWidget ()
20 setAttribute(Qt::WA_TranslucentBackground);
22 _light = new TrafficLight (this);
23 _label = new QLabel (this);
24 _timer = new QTimer (this);
26 _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
28 _traffic = new Traffic;
29 _regions = new RegionsTable;
30 _settings = Settings::instance ();
32 QHBoxLayout *layout = new QHBoxLayout;
33 layout->addWidget (_light);
34 layout->addWidget (_label);
39 connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ()));
40 connect (_timer, SIGNAL (timeout ()), SLOT (updateData ()));
41 connect (DeviceState::instance (), SIGNAL (lockChanged (bool)), SLOT (deviceLockChanged (bool)));
47 MainWidget::~MainWidget ()
58 void MainWidget::paintEvent(QPaintEvent *event)
61 p.setBrush (QColor(0, 0, 0, 128));
63 p.drawRoundedRect (rect(), 10, 10);
66 QWidget::paintEvent (event);
70 void MainWidget::trafficUpdated ()
72 ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
77 _light->setColor (info.color ());
79 if (_settings->check (Settings::C_ShowRank)) {
80 data.append (tr ("%n point(s)", "", info.level ()));
84 if (_settings->check (Settings::C_ShowTime)) {
87 data.append (info.localtime ());
91 if (_settings->check (Settings::C_ShowHint)) {
94 data.append (info.hint ());
97 _label->setText (data);
100 _light->setColor (ExtendedTrafficInfo::Unknown);
101 _label->setText (tr ("No data"));
106 void MainWidget::updateData ()
110 Log::instance ()->add ("updateData called");
112 #if CHECK_FOR_CONNECTION
113 update = ConnectionChecker::instance ()->checkConnection (_settings->check (Settings::C_UpdateOnGSM),
114 _settings->check (Settings::C_UpdateOnWiFi));
115 Log::instance ()->add (QString ("checkConnection returned %1").arg (update ? "true" : "false"));
116 if (!_settings->check (Settings::C_UpdateWhenLocked)) {
117 Log::instance ()->add ("Check for device state");
118 update &= !DeviceState::instance ()->locked ();
123 Log::instance ()->add ("Perform update");
127 Log::instance ()->add ("Update not performed");
131 void MainWidget::settingsDialog ()
133 SettingsDialog dlg (_settings);
142 void MainWidget::updateSize ()
144 QSize minSize (0, 80);
146 if (_settings->check (Settings::C_ShowLight))
147 minSize += QSize (80, 0);
148 if (_settings->check (Settings::C_ShowHint))
149 minSize += QSize (270, 0);
151 if (_settings->check (Settings::C_ShowTime))
152 minSize += QSize (75, 0);
153 if (_settings->check (Settings::C_ShowRank))
154 minSize += QSize (75, 0);
157 setFixedSize (minSize);
162 void MainWidget::applySettings ()
164 _light->setVisible (_settings->check (Settings::C_ShowLight));
168 Log::instance ()->add (QString ("applySettings: updateInterval is %1").arg (_settings->updateInterval ()));
170 if (_settings->updateInterval () < 0) {
172 Log::instance ()->add ("Timer disabled");
175 _timer->setInterval (1000 * 60 * _settings->updateInterval ());
177 Log::instance ()->add (QString ("Timer interval set to %1 ms").arg (1000 * 60 * _settings->updateInterval ()));
182 bool MainWidget::event (QEvent *event)
184 if (event->type () != QEvent::WindowActivate)
185 return QWidget::event (event);
187 MenuDialog menu (tr ("Yandex.Traffic"));
189 menu.addEntry (tr ("Settings")).addEntry (tr ("Update"));
191 switch (menu.run ()) {
200 return QWidget::event (event);
204 void MainWidget::deviceLockChanged (bool locked)
206 if (!_settings->check (Settings::C_UpdateWhenLocked))