Simplify traffic info class.
[yandex-traffic] / mainwidget.cpp
index 7e9a455..f42b87b 100644 (file)
@@ -1,11 +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"
 
 
 // --------------------------------------------------
@@ -18,7 +20,7 @@ MainWidget::MainWidget ()
     setAttribute(Qt::WA_TranslucentBackground);
 #endif
     _light = new TrafficLight (this);
-    _label = new QLabel (this);
+    _label = new QLabel (tr ("No data"), this);
     _timer = new QTimer (this);
 
     _label->setAlignment (Qt::AlignHCenter | Qt::AlignVCenter);
@@ -67,11 +69,13 @@ void MainWidget::paintEvent(QPaintEvent *event)
 
 void MainWidget::trafficUpdated ()
 {
-    ExtendedTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
+    CityTrafficInfo info = _traffic->lookup_ext (_settings->regionID ());
 
     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)) {
@@ -82,7 +86,7 @@ void MainWidget::trafficUpdated ()
         if (_settings->check (Settings::C_ShowTime)) {
             if (!first)
                 data.append (", ");
-            data.append (info.localtime ());
+            data.append (info.ts ().toString ("h:mm"));
             first = false;
         }
 
@@ -95,7 +99,8 @@ void MainWidget::trafficUpdated ()
         _label->setText (data);
     }
     else {
-        _light->setColor (ExtendedTrafficInfo::Unknown);
+        Log::instance ()->add ("trafficUpdated, but info not valid");
+        _light->setColor (CityTrafficInfo::Unknown);
         _label->setText (tr ("No data"));
     }
 }
@@ -177,24 +182,25 @@ void MainWidget::applySettings ()
 }
 
 
-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);
 
-    Log::instance ()->add (QString ("mousePressEvent at %1,%2").arg (event->pos ().x ()).arg (event->pos ().y ()));
+    MenuDialog menu (tr ("Yandex.Traffic"));
 
-    settingsAction = menu.addAction (tr ("Settings"));
-    updateAction = menu.addAction (tr ("Update"));
+    menu.addEntry (tr ("Settings")).addEntry (tr ("Update"));
 
-    todo = menu.exec (event->pos ());
-    if (!todo)
-        return;
+    switch (menu.run ()) {
+        case 0:
+            settingsDialog ();
+            break;
+        case 1:
+            _traffic->update ();
+            break;
+    }
 
-    if (todo == settingsAction)
-        settingsDialog ();
-    if (todo == updateAction)
-        _traffic->update ();
+    return QWidget::event (event);
 }