Simplify traffic info class.
[yandex-traffic] / traffic.cpp
index 05d5adf..05b1f38 100644 (file)
@@ -6,22 +6,40 @@
 
 
 // --------------------------------------------------
-// TrafficInfo
+// CityTrafficInfo
 // --------------------------------------------------
-TrafficInfo::TrafficInfo (const QDomElement& elem) throw (const QString&)
+CityTrafficInfo::CityTrafficInfo (const QDomElement& elem) throw (const QString&)
+    : TrafficInfo ()
 {
-    _valid = false;
-    _len1 = getFloatNode (elem, "length_1", 0);
-    _len2 = getFloatNode (elem, "length_2", 0);
-    _len  = getFloatNode (elem, "length", 0);
+    QString color;
+
+    setValid (false);
     _ts   = getTSNode (elem, "timestamp");
-    _isotime = getStringNode (elem, "isotime");
-    _localtime = getStringNode (elem, "localtime");
-    _valid = true;
+    _level = getIntNode (elem, "level", 1);
+    _tend = getIntNode (elem, "tend", 0);
+    _hint = getStringNode (elem, "hint");
+
+    color = getStringNode (elem, "icon");
+    if (color == "green")
+        _color = Green;
+    else if (color == "yellow")
+        _color = Yellow;
+    else if (color == "red")
+        _color = Red;
+    else
+        throw "Color is unknown";
+
+    setValid (true);
+}
+
+
+void CityTrafficInfo::dump ()
+{
+    Log::instance ()->add (QString ("CityTrafficInfo: level = %1, hint = %2").arg (_level).arg (_hint));
 }
 
 
-float TrafficInfo::getFloatNode (const QDomElement& elem, const char* node, float def)
+float CityTrafficInfo::getFloatNode (const QDomElement& elem, const char* node, float def)
 {
     QDomElement e;
     bool ok;
@@ -37,7 +55,7 @@ float TrafficInfo::getFloatNode (const QDomElement& elem, const char* node, floa
 }
 
 
-int TrafficInfo::getIntNode (const QDomElement& elem, const char* node, int def)
+int CityTrafficInfo::getIntNode (const QDomElement& elem, const char* node, int def)
 {
     QDomElement e;
     bool ok;
@@ -53,7 +71,7 @@ int TrafficInfo::getIntNode (const QDomElement& elem, const char* node, int def)
 }
 
 
-QString TrafficInfo::getStringNode (const QDomElement& elem, const char* node) throw (const QString&)
+QString CityTrafficInfo::getStringNode (const QDomElement& elem, const char* node) throw (const QString&)
 {
     QDomElement e;
     QString val;
@@ -65,7 +83,7 @@ QString TrafficInfo::getStringNode (const QDomElement& elem, const char* node) t
 }
 
 
-QDateTime TrafficInfo::getTSNode (const QDomElement& elem, const char* node) throw (const QString&)
+QDateTime CityTrafficInfo::getTSNode (const QDomElement& elem, const char* node) throw (const QString&)
 {
     QDomElement e;
     bool ok;
@@ -83,47 +101,6 @@ QDateTime TrafficInfo::getTSNode (const QDomElement& elem, const char* node) thr
 }
 
 
-void TrafficInfo::dump ()
-{
-    Log::instance ()->add (QString ("TrafficInfo (%1): time = %2").arg (_valid ? "valid" : "not valid").arg (_localtime));
-}
-
-
-// --------------------------------------------------
-// ExtendedTrafficInfo
-// --------------------------------------------------
-ExtendedTrafficInfo::ExtendedTrafficInfo (const QDomElement& elem) throw (const QString&)
-    : TrafficInfo (elem)
-{
-    QString color;
-
-    setValid (false);
-    _level_raw = getFloatNode (elem, "level_raw", 0);
-    _level = getIntNode (elem, "level", 1);
-    _tend = getIntNode (elem, "tend", 0);
-    _hint = getStringNode (elem, "hint");
-
-    color = getStringNode (elem, "icon");
-    if (color == "green")
-        _color = Green;
-    else if (color == "yellow")
-        _color = Yellow;
-    else if (color == "red")
-        _color = Red;
-    else
-        throw "Color is unknown";
-
-    setValid (true);
-}
-
-
-void ExtendedTrafficInfo::dump ()
-{
-    TrafficInfo::dump ();
-    Log::instance ()->add (QString ("ExtTrafficInfo: level = %1, hint = %2").arg (_level).arg (_hint));
-}
-
-
 // --------------------------------------------------
 // Traffic
 // --------------------------------------------------
@@ -165,8 +142,7 @@ bool Traffic::parse_traffic_data (const QString& xml)
     QDomNode n;
     bool ok;
     QString s;
-    QMap<QString, TrafficInfo> new_info;
-    QMap<QString, ExtendedTrafficInfo> new_ext_info;
+    QMap<QString, CityTrafficInfo> new_ext_info;
 
     if (!doc.setContent (xml))
         return false;
@@ -193,15 +169,10 @@ bool Traffic::parse_traffic_data (const QString& xml)
             try {
                // Check that it is an extended traffic info
                 if (!e.firstChildElement ("level").isNull ()) {
-                    ExtendedTrafficInfo info (e);
+                    CityTrafficInfo info (e);
                     if (info.valid ())
                         new_ext_info[s] = info;
                 }
-                else {
-                    TrafficInfo info (e);
-                    if (info.valid ())
-                        new_info[s] = info;
-                }
             }
             catch (const QString& msg) {
             }
@@ -210,30 +181,18 @@ bool Traffic::parse_traffic_data (const QString& xml)
     }
 
     _ts = new_ts;
-    _info = new_info;
     _ext_info = new_ext_info;
 
     return true;
 }
 
 
-TrafficInfo Traffic::lookup (const QString &id) const
-{
-    QMap<QString, TrafficInfo>::const_iterator it = _info.find (id);
-
-    if (it == _info.end ())
-        return TrafficInfo ();
-    else
-        return it.value ();
-}
-
-
-ExtendedTrafficInfo Traffic::lookup_ext (const QString &id) const
+CityTrafficInfo Traffic::lookup_ext (const QString &id) const
 {
-    QMap<QString, ExtendedTrafficInfo>::const_iterator it = _ext_info.find (id);
+    QMap<QString, CityTrafficInfo>::const_iterator it = _ext_info.find (id);
 
     if (it == _ext_info.end ())
-        return ExtendedTrafficInfo ();
+        return CityTrafficInfo ();
     else
         return it.value ();
 }