From b5c457c84a528981fbf90fefdf3b50589f572432 Mon Sep 17 00:00:00 2001
From: "Jasper v. Blanckenburg" <j.blanckenburg@fasttube.de>
Date: Mon, 22 May 2023 06:14:17 +0200
Subject: [PATCH] Restructure DriverView into containers

---
 .../driverview_screen/DriverViewViewBase.hpp  |  33 +-
 .../driverview_screen/DriverViewViewBase.cpp  | 216 ++++---
 TouchGFX/steering-wheel.touchgfx              | 612 +++++++++---------
 3 files changed, 452 insertions(+), 409 deletions(-)

diff --git a/TouchGFX/generated/gui_generated/include/gui_generated/driverview_screen/DriverViewViewBase.hpp b/TouchGFX/generated/gui_generated/include/gui_generated/driverview_screen/DriverViewViewBase.hpp
index 9f9f214..509252e 100644
--- a/TouchGFX/generated/gui_generated/include/gui_generated/driverview_screen/DriverViewViewBase.hpp
+++ b/TouchGFX/generated/gui_generated/include/gui_generated/driverview_screen/DriverViewViewBase.hpp
@@ -8,17 +8,18 @@
 #include <mvp/View.hpp>
 #include <gui/driverview_screen/DriverViewPresenter.hpp>
 #include <touchgfx/widgets/Box.hpp>
+#include <touchgfx/containers/progress_indicators/LineProgress.hpp>
+#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
 #include <touchgfx/widgets/TextArea.hpp>
+#include <gui/containers/ErrorPopup.hpp>
+#include <touchgfx/containers/Container.hpp>
 #include <gui/containers/Temperature.hpp>
 #include <touchgfx/widgets/canvas/Line.hpp>
-#include <touchgfx/widgets/canvas/PainterRGB565.hpp>
-#include <touchgfx/containers/progress_indicators/LineProgress.hpp>
-#include <gui/containers/DriverViewField.hpp>
 #include <touchgfx/containers/scrollers/ScrollWheel.hpp>
 #include <gui/containers/DriverViewFieldSelection.hpp>
+#include <gui/containers/DriverViewField.hpp>
 #include <touchgfx/containers/progress_indicators/BoxProgress.hpp>
 #include <touchgfx/widgets/TextAreaWithWildcard.hpp>
-#include <gui/containers/ErrorPopup.hpp>
 
 class DriverViewViewBase : public touchgfx::View<DriverViewPresenter>
 {
@@ -66,6 +67,14 @@ protected:
      * Member Declarations
      */
     touchgfx::Box __background;
+    touchgfx::LineProgress tsSoC;
+    touchgfx::PainterRGB565 tsSoCPainter;
+    touchgfx::LineProgress lvSoC;
+    touchgfx::PainterRGB565 lvSoCPainter;
+    touchgfx::TextArea tsSoCLabel;
+    touchgfx::TextArea lvSoCLabel;
+    ErrorPopup errorPopup;
+    touchgfx::Container drivetrainTemps;
     touchgfx::TextArea motorTempLabel;
     Temperature motorTempL;
     Temperature motorTempR;
@@ -76,6 +85,7 @@ protected:
     Temperature invTempR;
     Temperature invTempL;
     touchgfx::TextArea invTempLabel;
+    touchgfx::Container tireTemps;
     touchgfx::Line ttDivVert;
     touchgfx::PainterRGB565 ttDivVertPainter;
     touchgfx::Line ttDivHoriz;
@@ -84,23 +94,18 @@ protected:
     Temperature tireTempFR;
     Temperature tireTempRL;
     Temperature tireTempFL;
-    touchgfx::LineProgress tsSoC;
-    touchgfx::PainterRGB565 tsSoCPainter;
-    touchgfx::LineProgress lvSoC;
-    touchgfx::PainterRGB565 lvSoCPainter;
     touchgfx::TextArea tireLabel;
-    touchgfx::TextArea tsSoCLabel;
-    touchgfx::TextArea lvSoCLabel;
-    DriverViewField field1;
-    DriverViewField field2;
-    DriverViewField field3;
+    touchgfx::Container dataFields;
     touchgfx::ScrollWheel fieldTypeSelection;
     touchgfx::DrawableListItems<DriverViewFieldSelection, 10> fieldTypeSelectionListItems;
+    DriverViewField field3;
+    DriverViewField field2;
+    DriverViewField field1;
+    touchgfx::Container statusBar;
     touchgfx::BoxProgress progressBar;
     touchgfx::TextArea prechargeLabel;
     touchgfx::TextArea r2dLabel;
     touchgfx::TextAreaWithOneWildcard r2dProgressLabel;
-    ErrorPopup errorPopup;
 
 private:
 
diff --git a/TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp b/TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp
index 0ba3b6a..e01112e 100644
--- a/TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp
+++ b/TouchGFX/generated/gui_generated/src/driverview_screen/DriverViewViewBase.cpp
@@ -4,8 +4,8 @@
 #include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
 #include <touchgfx/canvas_widget_renderer/CanvasWidgetRenderer.hpp>
 #include <touchgfx/Color.hpp>
-#include <texts/TextKeysAndLanguages.hpp>
 #include <images/BitmapDatabase.hpp>
+#include <texts/TextKeysAndLanguages.hpp>
 
 DriverViewViewBase::DriverViewViewBase() :
     updateItemCallback(this, &DriverViewViewBase::updateItemCallbackHandler)
@@ -16,78 +16,6 @@ DriverViewViewBase::DriverViewViewBase() :
     __background.setColor(touchgfx::Color::getColorFromRGB(0, 0, 0));
     add(__background);
 
-    motorTempLabel.setPosition(315, 187, 150, 25);
-    motorTempLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    motorTempLabel.setLinespacing(0);
-    motorTempLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_JN2J));
-    add(motorTempLabel);
-
-    motorTempL.setXY(329, 212);
-    add(motorTempL);
-
-    motorTempR.setXY(392, 212);
-    add(motorTempR);
-
-    motorTempDiv.setPosition(389, 212, 3, 60);
-    motorTempDivPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    motorTempDiv.setPainter(motorTempDivPainter);
-    motorTempDiv.setStart(0, 0);
-    motorTempDiv.setEnd(0, 320);
-    motorTempDiv.setLineWidth(10);
-    motorTempDiv.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
-    add(motorTempDiv);
-
-    invTempDiv.setPosition(389, 122, 3, 60);
-    invTempDivPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    invTempDiv.setPainter(invTempDivPainter);
-    invTempDiv.setStart(0, 0);
-    invTempDiv.setEnd(0, 320);
-    invTempDiv.setLineWidth(10);
-    invTempDiv.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
-    add(invTempDiv);
-
-    invTempR.setXY(392, 122);
-    add(invTempR);
-
-    invTempL.setXY(329, 122);
-    add(invTempL);
-
-    invTempLabel.setPosition(315, 97, 150, 25);
-    invTempLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    invTempLabel.setLinespacing(0);
-    invTempLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_ZP7N));
-    add(invTempLabel);
-
-    ttDivVert.setPosition(239, 122, 3, 123);
-    ttDivVertPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    ttDivVert.setPainter(ttDivVertPainter);
-    ttDivVert.setStart(0, 0);
-    ttDivVert.setEnd(0, 320);
-    ttDivVert.setLineWidth(10);
-    ttDivVert.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
-    add(ttDivVert);
-
-    ttDivHoriz.setPosition(179, 182, 123, 3);
-    ttDivHorizPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    ttDivHoriz.setPainter(ttDivHorizPainter);
-    ttDivHoriz.setStart(0, 0);
-    ttDivHoriz.setEnd(480, 0);
-    ttDivHoriz.setLineWidth(10);
-    ttDivHoriz.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
-    add(ttDivHoriz);
-
-    tireTempRR.setXY(242, 185);
-    add(tireTempRR);
-
-    tireTempFR.setXY(242, 122);
-    add(tireTempFR);
-
-    tireTempRL.setXY(179, 185);
-    add(tireTempRL);
-
-    tireTempFL.setXY(179, 122);
-    add(tireTempFL);
-
     tsSoC.setXY(15, 122);
     tsSoC.setProgressIndicatorPosition(0, 0, 40, 150);
     tsSoC.setRange(0, 100);
@@ -114,12 +42,6 @@ DriverViewViewBase::DriverViewViewBase() :
     lvSoC.setValue(80);
     add(lvSoC);
 
-    tireLabel.setPosition(165, 97, 150, 25);
-    tireLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
-    tireLabel.setLinespacing(0);
-    tireLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_H6UX));
-    add(tireLabel);
-
     tsSoCLabel.setPosition(15, 97, 40, 25);
     tsSoCLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
     tsSoCLabel.setLinespacing(0);
@@ -132,16 +54,96 @@ DriverViewViewBase::DriverViewViewBase() :
     lvSoCLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_4OBM));
     add(lvSoCLabel);
 
-    field1.setXY(15, 15);
-    add(field1);
+    errorPopup.setXY(15, 122);
+    errorPopup.setVisible(false);
+    add(errorPopup);
 
-    field2.setXY(165, 15);
-    add(field2);
+    drivetrainTemps.setPosition(315, 97, 150, 175);
+    motorTempLabel.setPosition(0, 90, 150, 25);
+    motorTempLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    motorTempLabel.setLinespacing(0);
+    motorTempLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_JN2J));
+    drivetrainTemps.add(motorTempLabel);
 
-    field3.setXY(315, 15);
-    add(field3);
+    motorTempL.setXY(14, 115);
+    drivetrainTemps.add(motorTempL);
 
-    fieldTypeSelection.setPosition(15, 95, 150, 225);
+    motorTempR.setXY(77, 115);
+    drivetrainTemps.add(motorTempR);
+
+    motorTempDiv.setPosition(74, 115, 3, 60);
+    motorTempDivPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    motorTempDiv.setPainter(motorTempDivPainter);
+    motorTempDiv.setStart(0, 0);
+    motorTempDiv.setEnd(0, 320);
+    motorTempDiv.setLineWidth(10);
+    motorTempDiv.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
+    drivetrainTemps.add(motorTempDiv);
+
+    invTempDiv.setPosition(74, 25, 3, 60);
+    invTempDivPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    invTempDiv.setPainter(invTempDivPainter);
+    invTempDiv.setStart(0, 0);
+    invTempDiv.setEnd(0, 320);
+    invTempDiv.setLineWidth(10);
+    invTempDiv.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
+    drivetrainTemps.add(invTempDiv);
+
+    invTempR.setXY(77, 25);
+    drivetrainTemps.add(invTempR);
+
+    invTempL.setXY(14, 25);
+    drivetrainTemps.add(invTempL);
+
+    invTempLabel.setPosition(0, 0, 150, 25);
+    invTempLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    invTempLabel.setLinespacing(0);
+    invTempLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_ZP7N));
+    drivetrainTemps.add(invTempLabel);
+
+    add(drivetrainTemps);
+
+    tireTemps.setPosition(165, 97, 150, 150);
+    ttDivVert.setPosition(74, 25, 3, 123);
+    ttDivVertPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    ttDivVert.setPainter(ttDivVertPainter);
+    ttDivVert.setStart(0, 0);
+    ttDivVert.setEnd(0, 320);
+    ttDivVert.setLineWidth(10);
+    ttDivVert.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
+    tireTemps.add(ttDivVert);
+
+    ttDivHoriz.setPosition(14, 85, 123, 3);
+    ttDivHorizPainter.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    ttDivHoriz.setPainter(ttDivHorizPainter);
+    ttDivHoriz.setStart(0, 0);
+    ttDivHoriz.setEnd(480, 0);
+    ttDivHoriz.setLineWidth(10);
+    ttDivHoriz.setLineEndingStyle(touchgfx::Line::ROUND_CAP_ENDING);
+    tireTemps.add(ttDivHoriz);
+
+    tireTempRR.setXY(77, 88);
+    tireTemps.add(tireTempRR);
+
+    tireTempFR.setXY(77, 25);
+    tireTemps.add(tireTempFR);
+
+    tireTempRL.setXY(14, 88);
+    tireTemps.add(tireTempRL);
+
+    tireTempFL.setXY(14, 25);
+    tireTemps.add(tireTempFL);
+
+    tireLabel.setPosition(0, 0, 150, 25);
+    tireLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
+    tireLabel.setLinespacing(0);
+    tireLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_H6UX));
+    tireTemps.add(tireLabel);
+
+    add(tireTemps);
+
+    dataFields.setPosition(15, 15, 450, 305);
+    fieldTypeSelection.setPosition(0, 80, 150, 225);
     fieldTypeSelection.setHorizontal(false);
     fieldTypeSelection.setCircular(true);
     fieldTypeSelection.setEasingEquation(touchgfx::EasingEquations::linearEaseOut);
@@ -153,9 +155,21 @@ DriverViewViewBase::DriverViewViewBase() :
     fieldTypeSelection.setDrawables(fieldTypeSelectionListItems, updateItemCallback);
     fieldTypeSelection.animateToItem(0, 0);
     fieldTypeSelection.setVisible(false);
-    add(fieldTypeSelection);
+    dataFields.add(fieldTypeSelection);
 
-    progressBar.setXY(15, 280);
+    field3.setXY(300, 0);
+    dataFields.add(field3);
+
+    field2.setXY(150, 0);
+    dataFields.add(field2);
+
+    field1.setXY(0, 0);
+    dataFields.add(field1);
+
+    add(dataFields);
+
+    statusBar.setPosition(15, 275, 450, 37);
+    progressBar.setXY(0, 5);
     progressBar.setProgressIndicatorPosition(0, 0, 480, 55);
     progressBar.setRange(0, 100);
     progressBar.setDirection(touchgfx::AbstractDirectionProgress::RIGHT);
@@ -163,32 +177,30 @@ DriverViewViewBase::DriverViewViewBase() :
     progressBar.setColor(touchgfx::Color::getColorFromRGB(99, 186, 0));
     progressBar.setValue(0);
     progressBar.setVisible(false);
-    add(progressBar);
+    statusBar.add(progressBar);
 
-    prechargeLabel.setXY(105, 275);
+    prechargeLabel.setXY(90, 0);
     prechargeLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
     prechargeLabel.setLinespacing(0);
     prechargeLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_HMH2));
     prechargeLabel.setVisible(false);
-    add(prechargeLabel);
+    statusBar.add(prechargeLabel);
 
-    r2dLabel.setPosition(82, 275, 317, 37);
+    r2dLabel.setPosition(67, 0, 317, 37);
     r2dLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
     r2dLabel.setLinespacing(0);
     r2dLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_NGUK));
     r2dLabel.setVisible(false);
-    add(r2dLabel);
+    statusBar.add(r2dLabel);
 
-    r2dProgressLabel.setPosition(180, 275, 219, 37);
+    r2dProgressLabel.setPosition(165, 0, 219, 37);
     r2dProgressLabel.setColor(touchgfx::Color::getColorFromRGB(255, 255, 255));
     r2dProgressLabel.setLinespacing(0);
     r2dProgressLabel.setTypedText(touchgfx::TypedText(T___SINGLEUSE_J5UH));
     r2dProgressLabel.setVisible(false);
-    add(r2dProgressLabel);
+    statusBar.add(r2dProgressLabel);
 
-    errorPopup.setXY(15, 122);
-    errorPopup.setVisible(false);
-    add(errorPopup);
+    add(statusBar);
 }
 
 DriverViewViewBase::~DriverViewViewBase()
@@ -198,6 +210,7 @@ DriverViewViewBase::~DriverViewViewBase()
 
 void DriverViewViewBase::setupScreen()
 {
+    errorPopup.initialize();
     motorTempL.initialize();
     motorTempR.initialize();
     invTempR.initialize();
@@ -206,15 +219,14 @@ void DriverViewViewBase::setupScreen()
     tireTempFR.initialize();
     tireTempRL.initialize();
     tireTempFL.initialize();
-    field1.initialize();
-    field2.initialize();
-    field3.initialize();
     fieldTypeSelection.initialize();
     for (int i = 0; i < fieldTypeSelectionListItems.getNumberOfDrawables(); i++)
     {
         fieldTypeSelectionListItems[i].initialize();
     }
-    errorPopup.initialize();
+    field3.initialize();
+    field2.initialize();
+    field1.initialize();
 }
 
 void DriverViewViewBase::handleKeyEvent(uint8_t key)
diff --git a/TouchGFX/steering-wheel.touchgfx b/TouchGFX/steering-wheel.touchgfx
index 4320703..5aa67eb 100644
--- a/TouchGFX/steering-wheel.touchgfx
+++ b/TouchGFX/steering-wheel.touchgfx
@@ -244,172 +244,6 @@
         "Name": "DriverView",
         "CanvasBufferSize": 7200,
         "Components": [
-          {
-            "Type": "TextArea",
-            "Name": "motorTempLabel",
-            "X": 315,
-            "Y": 187,
-            "Width": 150,
-            "Height": 25,
-            "TextId": "__SingleUse_JN2J",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            }
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "motorTempL",
-            "X": 329,
-            "Y": 212,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "motorTempR",
-            "X": 392,
-            "Y": 212,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "Line",
-            "Name": "motorTempDiv",
-            "X": 389,
-            "Y": 212,
-            "Width": 3,
-            "Height": 60,
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "EndY": 320.0,
-            "LineWidth": 10.0,
-            "LineEndingStyle": "Round"
-          },
-          {
-            "Type": "Line",
-            "Name": "invTempDiv",
-            "X": 389,
-            "Y": 122,
-            "Width": 3,
-            "Height": 60,
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "EndY": 320.0,
-            "LineWidth": 10.0,
-            "LineEndingStyle": "Round"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "invTempR",
-            "X": 392,
-            "Y": 122,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "invTempL",
-            "X": 329,
-            "Y": 122,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "TextArea",
-            "Name": "invTempLabel",
-            "X": 315,
-            "Y": 97,
-            "Width": 150,
-            "Height": 25,
-            "TextId": "__SingleUse_ZP7N",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            }
-          },
-          {
-            "Type": "Line",
-            "Name": "ttDivVert",
-            "X": 239,
-            "Y": 122,
-            "Width": 3,
-            "Height": 123,
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "EndY": 320.0,
-            "LineWidth": 10.0,
-            "LineEndingStyle": "Round"
-          },
-          {
-            "Type": "Line",
-            "Name": "ttDivHoriz",
-            "X": 179,
-            "Y": 182,
-            "Width": 123,
-            "Height": 3,
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "EndX": 480.0,
-            "LineWidth": 10.0,
-            "LineEndingStyle": "Round"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "tireTempRR",
-            "X": 242,
-            "Y": 185,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "tireTempFR",
-            "X": 242,
-            "Y": 122,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "tireTempRL",
-            "X": 179,
-            "Y": 185,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "tireTempFL",
-            "X": 179,
-            "Y": 122,
-            "Width": 60,
-            "Height": 60,
-            "CustomContainerDefinitionName": "Temperature"
-          },
           {
             "Type": "LineProgress",
             "Name": "tsSoC",
@@ -450,21 +284,6 @@
             "ProgressRangeMax": 100,
             "ProgressInitialValue": 80
           },
-          {
-            "Type": "TextArea",
-            "Name": "tireLabel",
-            "X": 165,
-            "Y": 97,
-            "Width": 150,
-            "Height": 25,
-            "TextId": "__SingleUse_H6UX",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            }
-          },
           {
             "Type": "TextArea",
             "Name": "tsSoCLabel",
@@ -495,118 +314,6 @@
               "Blue": 255
             }
           },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "field1",
-            "X": 15,
-            "Y": 15,
-            "Width": 150,
-            "Height": 80,
-            "CustomContainerDefinitionName": "DriverViewField"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "field2",
-            "X": 165,
-            "Y": 15,
-            "Width": 150,
-            "Height": 80,
-            "CustomContainerDefinitionName": "DriverViewField"
-          },
-          {
-            "Type": "CustomContainerInstance",
-            "Name": "field3",
-            "X": 315,
-            "Y": 15,
-            "Width": 150,
-            "Height": 80,
-            "CustomContainerDefinitionName": "DriverViewField"
-          },
-          {
-            "Type": "ScrollWheel",
-            "Name": "fieldTypeSelection",
-            "X": 15,
-            "Y": 95,
-            "Width": 150,
-            "Height": 225,
-            "Visible": false,
-            "SelectedItemOffset": 94,
-            "IsCircular": true,
-            "ItemTemplateName": "DriverViewFieldSelection",
-            "NumberofItems": 1,
-            "Easing": "Linear",
-            "EasingOption": "Out",
-            "SwipeAcceleration": 1.0,
-            "DragAcceleration": 1.0
-          },
-          {
-            "Type": "BoxProgress",
-            "Name": "progressBar",
-            "X": 15,
-            "Y": 280,
-            "Width": 450,
-            "Height": 29,
-            "Visible": false,
-            "Color": {
-              "Red": 99,
-              "Green": 186
-            },
-            "Direction": "Right",
-            "FileNameBackground": "precharge_bg.png",
-            "IndicatorPositionWidth": 480,
-            "IndicatorPositionHeight": 55,
-            "ProgressRangeMax": 100
-          },
-          {
-            "Type": "TextArea",
-            "Name": "prechargeLabel",
-            "X": 105,
-            "Y": 275,
-            "Width": 269,
-            "Height": 37,
-            "Visible": false,
-            "TextId": "__SingleUse_HMH2",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "AutoSize": true
-          },
-          {
-            "Type": "TextArea",
-            "Name": "r2dLabel",
-            "X": 82,
-            "Y": 275,
-            "Width": 317,
-            "Height": 37,
-            "Visible": false,
-            "TextId": "__SingleUse_NGUK",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            }
-          },
-          {
-            "Type": "TextArea",
-            "Name": "r2dProgressLabel",
-            "X": 180,
-            "Y": 275,
-            "Width": 219,
-            "Height": 37,
-            "Visible": false,
-            "TextId": "__SingleUse_J5UH",
-            "TextRotation": "0",
-            "Color": {
-              "Red": 255,
-              "Green": 255,
-              "Blue": 255
-            },
-            "Wildcard1": {}
-          },
           {
             "Type": "CustomContainerInstance",
             "Name": "errorPopup",
@@ -616,6 +323,325 @@
             "Height": 150,
             "Visible": false,
             "CustomContainerDefinitionName": "ErrorPopup"
+          },
+          {
+            "Type": "Container",
+            "Name": "drivetrainTemps",
+            "X": 315,
+            "Y": 97,
+            "Width": 150,
+            "Height": 175,
+            "Components": [
+              {
+                "Type": "TextArea",
+                "Name": "motorTempLabel",
+                "Y": 90,
+                "Width": 150,
+                "Height": 25,
+                "TextId": "__SingleUse_JN2J",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                }
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "motorTempL",
+                "X": 14,
+                "Y": 115,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "motorTempR",
+                "X": 77,
+                "Y": 115,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "Line",
+                "Name": "motorTempDiv",
+                "X": 74,
+                "Y": 115,
+                "Width": 3,
+                "Height": 60,
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "EndY": 320.0,
+                "LineWidth": 10.0,
+                "LineEndingStyle": "Round"
+              },
+              {
+                "Type": "Line",
+                "Name": "invTempDiv",
+                "X": 74,
+                "Y": 25,
+                "Width": 3,
+                "Height": 60,
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "EndY": 320.0,
+                "LineWidth": 10.0,
+                "LineEndingStyle": "Round"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "invTempR",
+                "X": 77,
+                "Y": 25,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "invTempL",
+                "X": 14,
+                "Y": 25,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "TextArea",
+                "Name": "invTempLabel",
+                "Width": 150,
+                "Height": 25,
+                "TextId": "__SingleUse_ZP7N",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                }
+              }
+            ]
+          },
+          {
+            "Type": "Container",
+            "Name": "tireTemps",
+            "X": 165,
+            "Y": 97,
+            "Width": 150,
+            "Height": 150,
+            "Components": [
+              {
+                "Type": "Line",
+                "Name": "ttDivVert",
+                "X": 74,
+                "Y": 25,
+                "Width": 3,
+                "Height": 123,
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "EndY": 320.0,
+                "LineWidth": 10.0,
+                "LineEndingStyle": "Round"
+              },
+              {
+                "Type": "Line",
+                "Name": "ttDivHoriz",
+                "X": 14,
+                "Y": 85,
+                "Width": 123,
+                "Height": 3,
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "EndX": 480.0,
+                "LineWidth": 10.0,
+                "LineEndingStyle": "Round"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "tireTempRR",
+                "X": 77,
+                "Y": 88,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "tireTempFR",
+                "X": 77,
+                "Y": 25,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "tireTempRL",
+                "X": 14,
+                "Y": 88,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "tireTempFL",
+                "X": 14,
+                "Y": 25,
+                "Width": 60,
+                "Height": 60,
+                "CustomContainerDefinitionName": "Temperature"
+              },
+              {
+                "Type": "TextArea",
+                "Name": "tireLabel",
+                "Width": 150,
+                "Height": 25,
+                "TextId": "__SingleUse_H6UX",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                }
+              }
+            ]
+          },
+          {
+            "Type": "Container",
+            "Name": "dataFields",
+            "X": 15,
+            "Y": 15,
+            "Width": 450,
+            "Height": 305,
+            "Components": [
+              {
+                "Type": "ScrollWheel",
+                "Name": "fieldTypeSelection",
+                "Y": 80,
+                "Width": 150,
+                "Height": 225,
+                "Visible": false,
+                "SelectedItemOffset": 94,
+                "IsCircular": true,
+                "ItemTemplateName": "DriverViewFieldSelection",
+                "NumberofItems": 1,
+                "Easing": "Linear",
+                "EasingOption": "Out",
+                "SwipeAcceleration": 1.0,
+                "DragAcceleration": 1.0
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "field3",
+                "X": 300,
+                "Width": 150,
+                "Height": 80,
+                "CustomContainerDefinitionName": "DriverViewField"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "field2",
+                "X": 150,
+                "Width": 150,
+                "Height": 80,
+                "CustomContainerDefinitionName": "DriverViewField"
+              },
+              {
+                "Type": "CustomContainerInstance",
+                "Name": "field1",
+                "Width": 150,
+                "Height": 80,
+                "CustomContainerDefinitionName": "DriverViewField"
+              }
+            ]
+          },
+          {
+            "Type": "Container",
+            "Name": "statusBar",
+            "X": 15,
+            "Y": 275,
+            "Width": 450,
+            "Height": 37,
+            "Components": [
+              {
+                "Type": "BoxProgress",
+                "Name": "progressBar",
+                "Y": 5,
+                "Width": 450,
+                "Height": 29,
+                "Visible": false,
+                "Color": {
+                  "Red": 99,
+                  "Green": 186
+                },
+                "Direction": "Right",
+                "FileNameBackground": "precharge_bg.png",
+                "IndicatorPositionWidth": 480,
+                "IndicatorPositionHeight": 55,
+                "ProgressRangeMax": 100
+              },
+              {
+                "Type": "TextArea",
+                "Name": "prechargeLabel",
+                "X": 90,
+                "Width": 269,
+                "Height": 37,
+                "Visible": false,
+                "TextId": "__SingleUse_HMH2",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "AutoSize": true
+              },
+              {
+                "Type": "TextArea",
+                "Name": "r2dLabel",
+                "X": 67,
+                "Width": 317,
+                "Height": 37,
+                "Visible": false,
+                "TextId": "__SingleUse_NGUK",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                }
+              },
+              {
+                "Type": "TextArea",
+                "Name": "r2dProgressLabel",
+                "X": 165,
+                "Width": 219,
+                "Height": 37,
+                "Visible": false,
+                "TextId": "__SingleUse_J5UH",
+                "TextRotation": "0",
+                "Color": {
+                  "Red": 255,
+                  "Green": 255,
+                  "Blue": 255
+                },
+                "Wildcard1": {}
+              }
+            ]
           }
         ],
         "Interactions": [