Allow changing displayed fields in DriverView

This commit is contained in:
2023-03-20 23:31:28 +01:00
parent c8ee51a78f
commit 0d7cc03e02
28 changed files with 603 additions and 68 deletions

View File

@ -19,6 +19,8 @@ public:
void setValue(const char *str);
void setValue(int boolValue);
void setSelected(int selected);
protected:
private:
Unicode::UnicodeChar valueBuffer[16];

View File

@ -0,0 +1,20 @@
#ifndef DRIVERVIEWFIELDSELECTION_HPP
#define DRIVERVIEWFIELDSELECTION_HPP
#include "touchgfx/TypedText.hpp"
#include <gui_generated/containers/DriverViewFieldSelectionBase.hpp>
class DriverViewFieldSelection : public DriverViewFieldSelectionBase {
public:
DriverViewFieldSelection();
virtual ~DriverViewFieldSelection() {}
virtual void initialize();
void setName(const touchgfx::TypedText &name);
void setSelected(int selected);
protected:
};
#endif // DRIVERVIEWFIELDSELECTION_HPP

View File

@ -2,6 +2,8 @@
#define DRIVERVIEWVIEW_HPP
#include "gui/common/DataField.hpp"
#include "gui/containers/DriverViewFieldSelection.hpp"
#include "touchgfx/containers/scrollers/DrawableList.hpp"
#include "vehicle.h"
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
@ -13,6 +15,9 @@ public:
virtual void setupScreen();
virtual void tearDownScreen();
void fieldTypeSelectionUpdateItem(DriverViewFieldSelection &item,
int16_t itemIndex) override;
void setFieldType(size_t i, const DataFieldDescription &desc);
void setFieldValue(size_t i, float value);
void setFieldValue(size_t i, const char *value);
@ -21,9 +26,25 @@ public:
void setTireTemps(const TireTemps &temps);
void setTSSoC(uint8_t soc);
void selectPrevField() override;
void selectNextField() override;
void selectPrevFieldType() override;
void selectNextFieldType() override;
void confirmFieldType() override;
static constexpr size_t NUM_FIELDS = 3;
protected:
private:
DriverViewField &getField(size_t i);
DriverViewFieldSelection *getFieldType(size_t i);
void updateSelectedField(size_t select);
void updateSelectedFieldType(size_t select);
size_t selectedField;
size_t selectedFieldType;
DataFieldType fieldTypes[NUM_FIELDS];
};
#endif // DRIVERVIEWVIEW_HPP