Newer
Older
ice111_watering_system / watering_system_mini_project / MenuItem.h
@cory cory 13 days ago 1 KB commenting code
#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