#ifndef MenuItem_h #define MenuItem_h // **** class and method declarations **** #include "Arduino.h" // MenuItem - // default class, whose only functionality is to display its name and act as a node in the network class MenuItem { public: MenuItem(); MenuItem(const char* name); const char* name; MenuItem* parent; MenuItem* next; MenuItem* goBack(); MenuItem* goDown(); virtual void selectLeft(); virtual void selectRight(); virtual bool select(); virtual MenuItem* goRight(); virtual String display(); }; // subclass of MenuItem, allows for linking to a 'child' menu item, for linking to another layer of menus class BranchMenuItem: public MenuItem { public: BranchMenuItem(const char* name, const MenuItem* child); MenuItem* child; MenuItem* goRight(); String display(); }; // subclass of MenuItem, allows storage and editing of a single integer value class IntValueItem: public MenuItem { public: IntValueItem(const char* name, const int initialValue, const int min, const int max); int value; int min; int max; bool IntValueItem::select(); void IntValueItem::selectLeft(); void IntValueItem::selectRight(); String IntValueItem::display(); }; // subclass of MenuItem, allows for storage and editing of a single boolean value class BoolValueItem: public MenuItem { public: BoolValueItem(const char* name, const bool initialValue); bool value; bool BoolValueItem::select(); void BoolValueItem::selectRight(); void BoolValueItem::selectLeft(); String BoolValueItem::display(); }; #endif