Couple of new fields added to text element. Small fix to web page.
[jspeed] / src / textelement.cpp
index bf79a68..d42b423 100644 (file)
@@ -25,6 +25,7 @@
 #include "reader.h"
 #include "odometer.h"
 #include "graphicsscene.h"
+#include "poialerts.h"
 
 namespace
 {
@@ -32,6 +33,8 @@ namespace
     {
      {"xpos", true},
      {"ypos", true},
+     {"zpos", true},
+     {"visiblewhen", false},
      {"data", false},
      {"format", false},
      {"width", true},
@@ -42,16 +45,21 @@ namespace
      {"bold", false},
      {"italic", false},
      {"uppercase", false},
-     {"letterspacing", true}
+     {"letterspacing", true},
+     {"timeformat", false},
+     {"dateformat", false}
     };
 
     const QString FIELDS[TextElement::FIELD_COUNT] =  {"TRIP", "TOTAL", "SPEED",
                                                        "MAXSPEED", "AVGSPEED",
-                                                       "UNIT", "SPEEDUNIT", "TIME"};
+                                                       "UNIT", "SPEEDUNIT", "TIME", "DATE",
+                                                       "POIDISTANCE", "ANGLE", "LATITUDE",
+                                                       "LONGITUDE", "ALTITUDE", "DISTANCEUNIT"};
 }
 
 TextElement::TextElement(Reader* reader): GraphicsElement(reader),
-data_(""), format_(""), align_("left"), fontSize_(16), bold_(false), italic_(false),
+data_(""), format_(""), align_("left"), timeFormat_("hh:mm"),
+dateFormat_("dd.MM.yyyy"), fontSize_(16), bold_(false), italic_(false),
 uppercase_(false), letterSpacing_(0)
 {
     element_ = new QGraphicsTextItem();
@@ -76,6 +84,12 @@ bool TextElement::setAttribute(QString const& name, QString const& value)
         case YPOS:
             element_->setY(intVal);
             break;
+        case ZPOS:
+            element_->setZValue(intVal);
+            break;
+        case VISIBLEWHEN:
+            setVisibleWhen(strToVisibleWhen(value));
+            break;
         case DATA:
             data_ = value;
             break;
@@ -123,6 +137,12 @@ bool TextElement::setAttribute(QString const& name, QString const& value)
             letterSpacing_ = intVal;
             fontChanged = true;
             break;
+        case TIMEFORMAT:
+            timeFormat_ = value;
+            break;
+        case DATEFORMAT:
+            dateFormat_ = value;
+            break;
         default:
             qDebug() << "Unknown attribute: " << attr;
             return false;
@@ -250,7 +270,28 @@ void TextElement::replaceSpecialFields(QString& value)
             replaceValue(value, f, o->getSpeedUnit());
             break;
         case TIME:
-            replaceValue(value, f, QTime::currentTime().toString("hh:mm"));
+            replaceValue(value, f, QTime::currentTime().toString(timeFormat_));
+            break;
+        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;
+        case ALTITUDE:
+            replaceValue(value, f, handleEmpty(o->getLatestFix().altitude));
+            break;
+        case DISTANCEUNIT:
+            replaceValue(value, f, o->getMeterUnit());
             break;
         default:
             qDebug() << "Unknown field: " << f;
@@ -258,6 +299,16 @@ void TextElement::replaceSpecialFields(QString& value)
     }
 }
 
+QString TextElement::handleEmpty(double value)
+{
+    if(value < 0.01)
+    {
+        return "";
+    }
+
+    return formatString(value);
+}
+
 void TextElement::replaceValue(QString& value,
                                TextElement::Field field,
                                QString const& replace)