UVControl/src/Screen/BaseMenuScreen.h

41 lines
944 B
C++

#ifndef __BaseMenuScreen
#define __BaseMenuScreen
#include <stdbool.h>
#include "ScreenManager.h"
/*
* Base menu screen
* Provides the base for a menu screen, allows scrolling to
* the previous or next menu screen or performs an action.
*/
class BaseMenuScreen : public BaseScreen
{
private:
bool mEnableMenuScroll = true;
protected:
bool getEnableMenuScroll() { return mEnableMenuScroll; }
void setEnableMenuScroll(bool value);
virtual bool hasPrevious() = 0;
virtual bool hasNext() = 0;
virtual const char* getTitle() = 0;
virtual void gotoPrevious() {}
virtual void gotoNext() {}
void printTitle();
void printScrollIndicators();
virtual void printValue();
public:
BaseMenuScreen(ScreenManager* screenManager) : BaseScreen(screenManager) { }
virtual void onShow();
virtual void onHide();
virtual void onEncoder(long lastPosition, long newPosition);
};
#endif