Same as original

button_group.hpp

Committer:
MikamiUitOpen
Date:
2015-12-05
Revision:
4:543ec60c2814
Parent:
3:d99d9c0324b7
Child:
6:d268555e2f50

File content as of revision 4:543ec60c2814:

//-----------------------------------------------------------
//  Button group class -- Header
//
//  2015/12/05, Copyright (c) 2015 MIKAMI, Naoki
//-----------------------------------------------------------

#ifndef F746_BUTTON_GROUP_HPP
#define F746_BUTTON_GROUP_HPP

#include "button.hpp"
#include <string>

namespace Mikami
{
    class ButtonGroup
    {
    public:
        // Constructor
        ButtonGroup(LCD_DISCO_F746NG &lcd, TS_DISCO_F746NG &ts,
                    uint16_t x0, uint16_t y0,
                    uint16_t width, uint16_t height,
                    uint32_t color, uint32_t backColor,
                    uint16_t number, const string str[],
                    uint16_t spaceX = 0, uint16_t spaceY = 0,
                    uint16_t column = 1,
                    sFONT &fonts = Font12,
                    uint32_t textColor = LCD_COLOR_WHITE);
                    
        // Destructor
        ~ButtonGroup();
        
        // Draw button
        void Draw(int num, uint32_t color, uint32_t textColor = LCD_COLOR_WHITE)
        {   buttons_[num]->Draw(color, textColor);  }

        // Draw all button
        void DrawAll(uint32_t color, uint32_t textColor = LCD_COLOR_WHITE)
        {
            for (int n=0; n<numberOfButtons_; n++)
                buttons_[n]->Draw(color, textColor);
        }

        // Redraw button with original color
        void Redraw(int num, uint32_t textColor = LCD_COLOR_WHITE)
        {   buttons_[num]->Draw(buttons_[num]->GetOriginalColor(), textColor);   }

        // Erase button with selected color
        void Erase(int num, uint32_t color)
        {   buttons_[num]->Draw(color, color);   }

        // Check touch detected for specified button
        bool Touched(int num)
        {   return buttons_[num]->Touched();    }
        
        // Check touch detected for specified button and redraw button
        bool Touched(int num, uint32_t color, uint32_t textColor = LCD_COLOR_WHITE)
        {   return buttons_[num]->Touched(color, textColor);    }

        // Get touched number
        bool GetTouchedNumber(int &num);

        // Get touched number and redraw button if touched
        bool GetTouchedNumber(int &num, uint32_t color);
        
        // Get current color
        uint32_t GetCurrentColor(int n)
        {   return buttons_[n]->GetCurrentColor();  }

    private:
        Button **buttons_;
        int numberOfButtons_;
        
        // disallow copy constructor and assignment operator
        ButtonGroup(const ButtonGroup&);
        ButtonGroup& operator=(const ButtonGroup&);
    };
}
#endif  // F746_BUTTON_GROUP_HPP