Fix typo
[yandex-traffic] / mainwidget.cpp
index 89e9289..545292a 100644 (file)
@@ -1,8 +1,13 @@
 #include <QtGui>
 
+#include "globals.hpp"
 #include "mainwidget.hpp"
 #include "settingsDialog.hpp"
 #include "connection.hpp"
+#include "devstate.hpp"
+#include "settings.hpp"
+#include "log.hpp"
+#include "menudialog.hpp"
 
 
 // --------------------------------------------------
@@ -22,7 +27,7 @@ MainWidget::MainWidget ()
 
     _traffic = new Traffic;
     _regions = new RegionsTable;
-    _settings = new Settings;
+    _settings = Settings::instance ();
 
     QHBoxLayout *layout = new QHBoxLayout;
     layout->addWidget (_light);
@@ -33,6 +38,7 @@ MainWidget::MainWidget ()
 
     connect (_traffic, SIGNAL (updated ()), SLOT (trafficUpdated ()));
     connect (_timer, SIGNAL (timeout ()), SLOT (updateData ()));
+    connect (DeviceState::instance (), SIGNAL (lockChanged (bool)), SLOT (deviceLockChanged (bool)));
 
     updateData ();
 }
@@ -61,7 +67,6 @@ void MainWidget::paintEvent(QPaintEvent *event)
 }
 
 
-
 void MainWidget::trafficUpdated ()
 {
     ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
@@ -69,6 +74,8 @@ void MainWidget::trafficUpdated ()
     if (info.valid ()) {
         QString data;
         bool first = true;
+        Log::instance ()->add ("trafficUpdated, info valid");
+        info.dump ();
         _light->setColor (info.color ());
 
         if (_settings->check (Settings::C_ShowRank)) {
@@ -92,6 +99,7 @@ void MainWidget::trafficUpdated ()
         _label->setText (data);
     }
     else {
+        Log::instance ()->add ("trafficUpdated, but info not valid");
         _light->setColor (ExtendedTrafficInfo::Unknown);
         _label->setText (tr ("No data"));
     }
@@ -102,15 +110,24 @@ void MainWidget::updateData ()
 {
     bool update = true;
 
+    Log::instance ()->add ("updateData called");
+
 #if CHECK_FOR_CONNECTION
     update = ConnectionChecker::instance ()->checkConnection (_settings->check (Settings::C_UpdateOnGSM),
                                                               _settings->check (Settings::C_UpdateOnWiFi));
-    if (!_settings->check (Settings::C_UpdateWhenLocked))
+    Log::instance ()->add (QString ("checkConnection returned %1").arg (update ? "true" : "false"));
+    if (!_settings->check (Settings::C_UpdateWhenLocked)) {
+        Log::instance ()->add ("Check for device state");
         update &= !DeviceState::instance ()->locked ();
+    }
 #endif
 
-    if (update)
+    if (update) {
+        Log::instance ()->add ("Perform update");
         _traffic->update ();
+    }
+    else
+        Log::instance ()->add ("Update not performed");
 }
 
 
@@ -151,27 +168,45 @@ void MainWidget::applySettings ()
 
     updateSize ();
 
-    if (_settings->updateInterval () < 0)
+    Log::instance ()->add (QString ("applySettings: updateInterval is %1").arg (_settings->updateInterval ()));
+
+    if (_settings->updateInterval () < 0) {
         _timer->stop ();
-    else
+        Log::instance ()->add ("Timer disabled");
+    }
+    else {
         _timer->setInterval (1000 * 60 * _settings->updateInterval ());
+        _timer->start ();
+        Log::instance ()->add (QString ("Timer interval set to %1 ms").arg (1000 * 60 * _settings->updateInterval ()));
+    }
 }
 
 
-void MainWidget::mousePressEvent (QMouseEvent *event)
+bool MainWidget::event (QEvent *event)
 {
-    QMenu menu;
-    QAction *settingsAction, *updateAction, *todo;
+    if (event->type () != QEvent::WindowActivate)
+        return QWidget::event (event);
 
-    settingsAction = menu.addAction (tr ("Settings"));
-    updateAction = menu.addAction (tr ("Update"));
+    MenuDialog menu (tr ("Yandex.Traffic"));
 
-    todo = menu.exec (event->pos ());
-    if (!todo)
-        return;
+    menu.addEntry (tr ("Settings")).addEntry (tr ("Update"));
 
-    if (todo == settingsAction)
-        settingsDialog ();
-    if (todo == updateAction)
-        _traffic->update ();
+    switch (menu.run ()) {
+        case 0:
+            settingsDialog ();
+            break;
+        case 1:
+            _traffic->update ();
+            break;
+    }
+
+    return QWidget::event (event);
+}
+
+
+void MainWidget::deviceLockChanged (bool locked)
+{
+    if (!_settings->check (Settings::C_UpdateWhenLocked))
+        if (!locked)
+            updateData ();
 }