DataField -> NamedField<FieldType>

This commit is contained in:
2023-04-04 18:31:06 +02:00
parent 8d701669e4
commit 09f65fcf22
16 changed files with 94 additions and 81 deletions

View File

@ -1,5 +1,5 @@
#ifndef DATAFIELD_HPP
#define DATAFIELD_HPP
#ifndef NAMEDFIELD_HPP
#define NAMEDFIELD_HPP
#include "touchgfx/TypedText.hpp"
#include "touchgfx/Unicode.hpp"
@ -21,10 +21,10 @@ CountedEnum(DataFieldType, size_t, DF_TSState, DF_ASState, DF_ActiveMission,
DF_TSSoC, DF_LVSoC, DF_TSCurrent, DF_TSVoltageBat, DF_TSVoltageVeh,
DF_Speed, DF_BBal);
enum class DataFieldKind { Float, Bool, Text, Int };
enum class NamedFieldKind { Float, Bool, Text, Int };
struct DataFieldDescription {
DataFieldKind kind;
struct NamedFieldDescription {
NamedFieldKind kind;
const char *title;
size_t int_digits;
size_t decimal_digits;
@ -32,23 +32,26 @@ struct DataFieldDescription {
void *(*getValue)(void);
};
extern DataFieldDescription dataFieldDescs[];
extern NamedFieldDescription dataFieldDescs[];
class DataField {
template <class T> class NamedField {
public:
virtual ~DataField() {}
NamedField(const NamedFieldDescription *fieldDescs);
virtual ~NamedField() {}
void setType(DataFieldType type);
DataFieldType getType();
void setType(T type);
T getType();
virtual void updateValue();
protected:
const NamedFieldDescription *fieldDescs;
touchgfx::Unicode::UnicodeChar titleBuffer[16];
touchgfx::Unicode::UnicodeChar valueBuffer[16];
DataFieldType type;
const DataFieldDescription *desc;
T type;
const NamedFieldDescription *desc;
union {
float f;
int b;
@ -68,4 +71,4 @@ private:
void updateValueBuffer();
};
#endif // DATAFIELD_HPP
#endif // NAMEDFIELD_HPP