diff --git a/CMakeLists.txt b/CMakeLists.txt index 6eba973..ef62d83 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,6 +2,7 @@ set(headers src/accessorinterface.h src/actioninterface.h src/backinterface.h + src/buttonsinterface.h src/changevaluedisplay.h src/changevaluedisplay_bool.h src/changevaluedisplay_daylightsavingmode.h diff --git a/src/buttonsinterface.h b/src/buttonsinterface.h new file mode 100644 index 0000000..143bb5f --- /dev/null +++ b/src/buttonsinterface.h @@ -0,0 +1,27 @@ +#pragma once + +//system includes +#include + +namespace espgui { + +enum Button +{ + Left, + Right, + Up, + Down, + ButtonMax = Down +}; + +class ButtonsInterface +{ +public: + virtual void rawButtonPressed(uint8_t button) = 0; + virtual void rawButtonReleased(uint8_t button) = 0; + + virtual void buttonPressed(Button button) = 0; + virtual void buttonReleased(Button button) = 0; +}; + +} // namespace espgui diff --git a/src/changevaluedisplay.h b/src/changevaluedisplay.h index 1d99680..2304d24 100644 --- a/src/changevaluedisplay.h +++ b/src/changevaluedisplay.h @@ -10,6 +10,7 @@ #include "backinterface.h" namespace espgui { + class ChangeValueDisplayInterface : public DisplayWithTitle, public virtual ActionInterface @@ -115,7 +116,7 @@ void ChangeValueDisplay::redraw(); template void ChangeValueDisplay::buttonPressed(Button button) { - Base::buttonPressed(button); + //Base::buttonPressed(button); switch (button) { @@ -125,4 +126,5 @@ void ChangeValueDisplay::buttonPressed(Button button) case Button::Down: m_rotateOffset++; break; } } + } // namespace espgui diff --git a/src/display.h b/src/display.h index 65557b6..dd23f98 100644 --- a/src/display.h +++ b/src/display.h @@ -4,6 +4,9 @@ #include #include +// local includes +#include "buttonsinterface.h" + // forward declares namespace espgui { class TextInterface; @@ -27,16 +30,7 @@ public: } }; -enum Button -{ - Left, - Right, - Up, - Down, - ButtonMax = Down -}; - -class Display +class Display : public virtual ButtonsInterface { public: virtual ~Display() = default; @@ -56,12 +50,6 @@ public: //! Display goes out of existance, is not shown anymore virtual void stop() {} - virtual void rawButtonPressed(uint8_t button) = 0; - virtual void rawButtonReleased(uint8_t button) = 0; - - virtual void buttonPressed(Button button) = 0; - virtual void buttonReleased(Button button) = 0; - virtual TextInterface *asTextInterface() { return nullptr; } virtual const TextInterface *asTextInterface() const { return nullptr; } diff --git a/src/graphdisplay.h b/src/graphdisplay.h index 7b5b977..97ad483 100644 --- a/src/graphdisplay.h +++ b/src/graphdisplay.h @@ -13,6 +13,7 @@ #include "backinterface.h" namespace espgui { + template class GraphAccessorInterface { @@ -81,7 +82,7 @@ void GraphDisplay::redraw() template void GraphDisplay::buttonPressed(Button button) { - Base::buttonPressed(button); + //Base::buttonPressed(button); switch (button) { @@ -90,4 +91,5 @@ void GraphDisplay::buttonPressed(Button button) default:; } } -} + +} // namespace espgui diff --git a/src/menudisplay.cpp b/src/menudisplay.cpp index 25a540e..413b344 100644 --- a/src/menudisplay.cpp +++ b/src/menudisplay.cpp @@ -174,7 +174,7 @@ void MenuDisplay::stop() void MenuDisplay::buttonPressed(Button button) { - Base::buttonPressed(button); + //Base::buttonPressed(button); switch (button) { diff --git a/src/menudisplay.h b/src/menudisplay.h index fa3a3fa..84bd941 100644 --- a/src/menudisplay.h +++ b/src/menudisplay.h @@ -17,7 +17,9 @@ #include "backinterface.h" namespace espgui { -class MenuDisplay : public DisplayWithTitle, public virtual BackInterface +class MenuDisplay : + public DisplayWithTitle, + public virtual BackInterface { using Base = DisplayWithTitle; diff --git a/src/splitgraphdisplay.h b/src/splitgraphdisplay.h index cc42ed9..68fb71f 100644 --- a/src/splitgraphdisplay.h +++ b/src/splitgraphdisplay.h @@ -1,11 +1,15 @@ #pragma once +// local includes #include "display.h" #include "textinterface.h" #include "widgets/label.h" #include "widgets/graph.h" +#include "confirminterface.h" +#include "backinterface.h" namespace espgui { + template class TopGraphAccessorInterface { @@ -42,15 +46,19 @@ public: template class SplitGraphDisplay : - public Display, - public virtual TextInterface, - public virtual TopGraphAccessorInterface, - public virtual BottomGraphAccessorInterface + public Display, + public virtual TextInterface, + public virtual TopGraphAccessorInterface, + public virtual BottomGraphAccessorInterface, + public virtual ConfirmInterface, + public virtual BackInterface { public: void initScreen() override; void redraw() override; + void buttonPressed(Button button) override; + private: Label m_titleLabel{5, 5}; // 230, 25 @@ -80,4 +88,18 @@ void SplitGraphDisplay::redraw() m_graph0.redraw(static_cast&>(*this).getTopBuffers()); m_graph1.redraw(static_cast&>(*this).getBottomBuffers()); } + +template +void SplitGraphDisplay::buttonPressed(Button button) +{ + //Base::buttonPressed(button); + + switch (button) + { + case Button::Left: back(); break; + case Button::Right: confirm(); break; + default:; + } } + +} // namespace espgui