Files
bobbycar-boardcomputer-firm…/main/displays/gametrakcalibratedisplay.h
2023-08-13 20:37:50 +02:00

84 lines
2.2 KiB
C++

#pragma once
// system includes
#include <array>
#include <string>
// 3rdparty lib includes
#include <actions/switchscreenaction.h>
#include <widgets/label.h>
#include <widgets/progressbar.h>
// local includes
#include "bobbydisplay.h"
#include "globals.h"
#include "modes/ignoreinputmode.h"
namespace {
#ifdef FEATURE_GAMETRAK
class GametrakCalibrateDisplay : public BobbyDisplay, public ConfirmActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>, public BackActionInterface<SwitchScreenAction<BoardcomputerHardwareSettingsMenu>>
{
using Base = BobbyDisplay;
public:
void initScreen(espgui::TftInterface &tft) override;
void redraw(espgui::TftInterface &tft) override;
private:
std::array<Label, 6> m_labels {{
Label{25, 50}, // 100, 23
Label{120, 50}, // 100, 23
Label{25, 75}, // 100, 23
Label{120, 75}, // 100, 23
Label{25, 100}, // 100, 23
Label{120, 100} // 100, 23
}};
std::array<ProgressBar, 3> m_progressBars {{
ProgressBar{20, 200, 200, 10, 0, 1000},
ProgressBar{20, 230, 200, 10, 0, 1000},
ProgressBar{20, 260, 200, 10, 0, 1000}
}};
};
void GametrakCalibrateDisplay::initScreen(espgui::TftInterface &tft)
{
Base::initScreen(tft);
tft.fillScreen(TFT_BLACK);
tft.setTextFont(4);
tft.setTextColor(TFT_YELLOW);
tft.drawString(TEXT_GAMETRAKCALIBRATE, 5, 5, 4);
tft.fillRect(0, 34, tft.width(), 3, TFT_WHITE);
tft.setTextColor(TFT_WHITE, TFT_BLACK);
for (auto &label : m_labels)
label.start();
for (auto &progressBar : m_progressBars)
progressBar.start();
}
void GametrakCalibrateDisplay::redraw(espgui::TftInterface &tft)
{
Base::redraw(tft);
m_labels[0].redraw(fmt::format("{:.02f}", gametrakX));
m_labels[1].redraw(std::to_string(raw_gametrakX));
m_labels[2].redraw(fmt::format("{:.02f}", gametrakY));
m_labels[3].redraw(std::to_string(raw_gametrakY));
m_labels[4].redraw(fmt::format("{:.02f}", gametrakDist));
m_labels[5].redraw(std::to_string(raw_gametrakDist));
m_progressBars[0].redraw(gametrakX);
m_progressBars[1].redraw(gametrakY);
m_progressBars[2].redraw(gametrakDist);
}
#endif
}