#ifndef __screen_baseheightentry
#define __screen_baseheightentry

#include "../screen.h"
#include "../control.h"


class BaseHeightEntryScreen : public BaseScreen
{
  public:
    BaseHeightEntryScreen(ScreenManager* screenManager, Adafruit_GFX* display) : BaseScreen(screenManager, display) { }

    void onShow();
    void onButton(Button button);
    void onTick();

  protected:
    virtual void initHeights() = 0;
    virtual uint16_t getHeight() = 0;
    virtual void setHeight(uint16_t value) = 0;
    virtual bool nextPage() = 0;

    virtual bool isValidHeight() = 0;
    virtual const char* getTitle() = 0;

  private:
    void drawTitle();
    void drawSetHeight();

    uint16_t lastTextWidth = 0;
    uint8_t editingDigit = 0;
};

#endif
