3 #include "mainwidget.hpp"
4 #include "settingsDialog.hpp"
5 #include "connection.hpp"
6 #include "devstate.hpp"
7 #include "settings.hpp"
9 #include "menudialog.hpp"
12 // --------------------------------------------------
14 // --------------------------------------------------
15 MainWidget::MainWidget ()
19 setAttribute(Qt::WA_TranslucentBackground);
21 _light = new TrafficLight (this);
22 _label = new QLabel (this);
23 _timer = new QTimer (this);
25 _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
27 _traffic = new Traffic;
28 _regions = new RegionsTable;
29 _settings = Settings::instance ();
31 QHBoxLayout *layout = new QHBoxLayout;
32 layout->addWidget (_light);
33 layout->addWidget (_label);
38 connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ()));
39 connect (_timer, SIGNAL (timeout ()), SLOT (updateData ()));
40 connect (DeviceState::instance (), SIGNAL (lockChanged (bool)), SLOT (deviceLockChanged (bool)));
46 MainWidget::~MainWidget ()
57 void MainWidget::paintEvent(QPaintEvent *event)
60 p.setBrush (QColor(0, 0, 0, 128));
62 p.drawRoundedRect (rect(), 10, 10);
65 QWidget::paintEvent (event);
69 void MainWidget::trafficUpdated ()
71 ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
76 _light->setColor (info.color ());
78 if (_settings->check (Settings::C_ShowRank)) {
79 data.append (tr ("%n point(s)", "", info.level ()));
83 if (_settings->check (Settings::C_ShowTime)) {
86 data.append (info.localtime ());
90 if (_settings->check (Settings::C_ShowHint)) {
93 data.append (info.hint ());
96 _label->setText (data);
99 _light->setColor (ExtendedTrafficInfo::Unknown);
100 _label->setText (tr ("No data"));
105 void MainWidget::updateData ()
109 Log::instance ()->add ("updateData called");
111 #if CHECK_FOR_CONNECTION
112 update = ConnectionChecker::instance ()->checkConnection (_settings->check (Settings::C_UpdateOnGSM),
113 _settings->check (Settings::C_UpdateOnWiFi));
114 Log::instance ()->add (QString ("checkConnection returned %1").arg (update ? "true" : "false"));
115 if (!_settings->check (Settings::C_UpdateWhenLocked)) {
116 Log::instance ()->add ("Check for device state");
117 update &= !DeviceState::instance ()->locked ();
122 Log::instance ()->add ("Perform update");
126 Log::instance ()->add ("Update not performed");
130 void MainWidget::settingsDialog ()
132 SettingsDialog dlg (_settings);
141 void MainWidget::updateSize ()
143 QSize minSize (0, 80);
145 if (_settings->check (Settings::C_ShowLight))
146 minSize += QSize (80, 0);
147 if (_settings->check (Settings::C_ShowHint))
148 minSize += QSize (270, 0);
150 if (_settings->check (Settings::C_ShowTime))
151 minSize += QSize (75, 0);
152 if (_settings->check (Settings::C_ShowRank))
153 minSize += QSize (75, 0);
156 setFixedSize (minSize);
161 void MainWidget::applySettings ()
163 _light->setVisible (_settings->check (Settings::C_ShowLight));
167 Log::instance ()->add (QString ("applySettings: updateInterval is %1").arg (_settings->updateInterval ()));
169 if (_settings->updateInterval () < 0) {
171 Log::instance ()->add ("Timer disabled");
174 _timer->setInterval (1000 * 60 * _settings->updateInterval ());
176 Log::instance ()->add (QString ("Timer interval set to %1 ms").arg (1000 * 60 * _settings->updateInterval ()));
181 bool MainWidget::event (QEvent *event)
183 if (event->type () != QEvent::WindowActivate)
184 return QWidget::event (event);
186 MenuDialog menu (tr ("Yandex.Traffic"));
188 menu.addEntry (tr ("Settings")).addEntry (tr ("Update"));
190 switch (menu.run ()) {
199 return QWidget::event (event);
203 void MainWidget::deviceLockChanged (bool locked)
205 if (!_settings->check (Settings::C_UpdateWhenLocked))