RSeries astromech firmware
UnsignedValueScreen.h
Go to the documentation of this file.
1 //
3 // Utility base class for screens specifying an unsigned integer
4 // from min - max value
5 //
7 
9 {
10 public:
11  UnsignedValueScreen(ScreenID id, unsigned maxValue = ~0u, unsigned minValue = 1) :
12  CommandScreen(sDisplay, id),
13  fMaxValue(maxValue),
14  fMinValue(minValue)
15  {}
16 
17  virtual void init()
18  {
19  fDisplayValue = ~0u;
21  }
22 
23  virtual void buttonUpPressed(bool repeat) override
24  {
25  unsigned val = getValue();
26  if (val > fMinValue)
27  {
28  setValue(val-1);
29  }
30  }
31 
32  virtual void buttonLeftPressed(bool repeat) override
33  {
34  popScreen();
36  }
37 
38  virtual void buttonDownPressed(bool repeat) override
39  {
40  unsigned val = getValue();
41  if (val < fMaxValue)
42  {
43  setValue(val+1);
44  }
45  }
46 
47  virtual void buttonInReleased() override
48  {
49  if (fDisplayValue != ~0u)
50  {
52  popScreen();
54  {
55  pushScreen(kSettingsUpdatedScreen);
56  }
57  }
58  else
59  {
60  popScreen();
61  }
62  }
63 
64  virtual void render() override
65  {
66  unsigned value = getValue();
67  if (value != fDisplayValue)
68  {
69  sDisplay.invertDisplay(value != fStartValue);
70  sDisplay.clearDisplay();
71  sDisplay.setTextSize(4);
72  sDisplay.setCursor(5, 0);
73  sDisplay.println(value);
74  sDisplay.display();
75  fDisplayValue = value;
76  }
77  }
78 
79 protected:
80  unsigned fDisplayValue = ~0u;
81  unsigned fStartValue;
82  unsigned fMaxValue;
83  unsigned fMinValue;
84 
85  virtual unsigned getValue() = 0;
86  virtual void setValue(unsigned newValue) = 0;
87  virtual void saveValue(unsigned newValue) = 0;
88 };
89 
CommandScreen
Definition: CommandScreen.h:273
UnsignedValueScreen::render
virtual void render() override
Definition: UnsignedValueScreen.h:64
UnsignedValueScreen::fMaxValue
unsigned fMaxValue
Definition: UnsignedValueScreen.h:82
UnsignedValueScreen::buttonInReleased
virtual void buttonInReleased() override
Definition: UnsignedValueScreen.h:47
UnsignedValueScreen::fStartValue
unsigned fStartValue
Definition: UnsignedValueScreen.h:81
UnsignedValueScreen::getValue
virtual unsigned getValue()=0
UnsignedValueScreen::fMinValue
unsigned fMinValue
Definition: UnsignedValueScreen.h:83
UnsignedValueScreen::setValue
virtual void setValue(unsigned newValue)=0
UnsignedValueScreen::saveValue
virtual void saveValue(unsigned newValue)=0
CommandScreen::popScreen
void popScreen()
Definition: CommandScreen.h:311
UnsignedValueScreen::fDisplayValue
unsigned fDisplayValue
Definition: UnsignedValueScreen.h:80
UnsignedValueScreen::buttonDownPressed
virtual void buttonDownPressed(bool repeat) override
Definition: UnsignedValueScreen.h:38
CommandScreen::pushScreen
void pushScreen(ScreenID id)
Definition: CommandScreen.h:307
UnsignedValueScreen::UnsignedValueScreen
UnsignedValueScreen(ScreenID id, unsigned maxValue=~0u, unsigned minValue=1)
Definition: UnsignedValueScreen.h:11
UnsignedValueScreen::buttonLeftPressed
virtual void buttonLeftPressed(bool repeat) override
Definition: UnsignedValueScreen.h:32
UnsignedValueScreen::init
virtual void init()
Definition: UnsignedValueScreen.h:17
UnsignedValueScreen::buttonUpPressed
virtual void buttonUpPressed(bool repeat) override
Definition: UnsignedValueScreen.h:23
UnsignedValueScreen
Definition: UnsignedValueScreen.h:8