61 lines
1.7 KiB
C++

#ifndef DRIVERVIEWVIEW_HPP
#define DRIVERVIEWVIEW_HPP
#include "gui/common/NamedField.hpp"
#include "gui/containers/DriverViewFieldSelection.hpp"
#include "touchgfx/Unicode.hpp"
#include "touchgfx/containers/scrollers/DrawableList.hpp"
#include <gui/driverview_screen/DriverViewPresenter.hpp>
#include <gui_generated/driverview_screen/DriverViewViewBase.hpp>
#include "vehicle_state.h"
enum class DriverViewProgressType { PRECHARGE, R2D };
class DriverViewView : public DriverViewViewBase {
public:
DriverViewView();
virtual ~DriverViewView() {}
virtual void setupScreen() override;
virtual void tearDownScreen() override;
void fieldTypeSelectionUpdateItem(DriverViewFieldSelection &item,
int16_t itemIndex) override;
void setFieldType(size_t i, DataFieldType type);
void updateFieldValues();
void updateStatusItems();
void setTemps(const Temperatures &temps);
void setTSSoC(uint8_t soc);
void setProgress(bool active, DriverViewProgressType type, float progress);
void showAMSError();
void clearErrorPopup();
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);
void updateSelectedField(size_t select);
void updateSelectedFieldIndex(size_t index, bool animate = true);
void updateSelectedFieldType(DataFieldType type, bool animate = true);
size_t selectedField;
size_t selectedFieldIndex;
DataFieldType fieldTypes[NUM_FIELDS];
touchgfx::Unicode::UnicodeChar r2dProgBuffer[16];
touchgfx::Unicode::UnicodeChar socBuffer[4];
};
#endif // DRIVERVIEWVIEW_HPP