Fixes to speed alarm and poi alerts. Added flicker effect. Some new fields to text...
[jspeed] / src / textelement.cpp
index 7c11bc7..4f4fab7 100644 (file)
@@ -25,6 +25,7 @@
 #include "reader.h"
 #include "odometer.h"
 #include "graphicsscene.h"
+#include "poialerts.h"
 
 namespace
 {
@@ -33,6 +34,7 @@ namespace
      {"xpos", true},
      {"ypos", true},
      {"zpos", true},
+     {"visiblewhen", false},
      {"data", false},
      {"format", false},
      {"width", true},
@@ -50,7 +52,9 @@ namespace
 
     const QString FIELDS[TextElement::FIELD_COUNT] =  {"TRIP", "TOTAL", "SPEED",
                                                        "MAXSPEED", "AVGSPEED",
-                                                       "UNIT", "SPEEDUNIT", "TIME", "DATE"};
+                                                       "UNIT", "SPEEDUNIT", "TIME", "DATE",
+                                                       "POIDISTANCE", "ANGLE", "LATITUDE",
+                                                       "LONGITUDE"};
 }
 
 TextElement::TextElement(Reader* reader): GraphicsElement(reader),
@@ -82,6 +86,9 @@ bool TextElement::setAttribute(QString const& name, QString const& value)
         case ZPOS:
             element_->setZValue(intVal);
             break;
+        case VISIBLEWHEN:
+            setVisibleWhen(strToVisibleWhen(value));
+            break;
         case DATA:
             data_ = value;
             break;
@@ -267,12 +274,34 @@ void TextElement::replaceSpecialFields(QString& value)
         case DATE:
             replaceValue(value, f, QDate::currentDate().toString(dateFormat_));
             break;
+        case POIDISTANCE:
+            replaceValue(value, f, handleEmpty(PoiAlerts::instance().getCurrentDistance()));
+            break;
+        case ANGLE:
+            replaceValue(value, f, formatString(o->getLatestFix().track));
+            break;
+        case LATITUDE:
+            replaceValue(value, f, handleEmpty(o->getLatestFix().latitude));
+            break;
+        case LONGITUDE:
+            replaceValue(value, f, handleEmpty(o->getLatestFix().longitude));
+            break;
         default:
             qDebug() << "Unknown field: " << f;
         }
     }
 }
 
+QString TextElement::handleEmpty(double value)
+{
+    if(value < 0.01)
+    {
+        return "";
+    }
+
+    return formatString(value);
+}
+
 void TextElement::replaceValue(QString& value,
                                TextElement::Field field,
                                QString const& replace)