sp

Dependents:   WAV

Committer:
phungductung
Date:
Fri Jun 07 05:06:42 2019 +0000
Revision:
0:4e245f4bc8ac
spkt

Who changed what in which revision?

UserRevisionLine numberNew contents of line
phungductung 0:4e245f4bc8ac 1 //-----------------------------------------------------------
phungductung 0:4e245f4bc8ac 2 // ButtonGroup class -- Header
phungductung 0:4e245f4bc8ac 3 //
phungductung 0:4e245f4bc8ac 4 // 2017/01/25, Copyright (c) 2017 MIKAMI, Naoki
phungductung 0:4e245f4bc8ac 5 //-----------------------------------------------------------
phungductung 0:4e245f4bc8ac 6
phungductung 0:4e245f4bc8ac 7 #ifndef F746_BUTTON_GROUP_HPP
phungductung 0:4e245f4bc8ac 8 #define F746_BUTTON_GROUP_HPP
phungductung 0:4e245f4bc8ac 9
phungductung 0:4e245f4bc8ac 10 #include "Button.hpp"
phungductung 0:4e245f4bc8ac 11 #include "Array.hpp"
phungductung 0:4e245f4bc8ac 12
phungductung 0:4e245f4bc8ac 13 namespace Mikami
phungductung 0:4e245f4bc8ac 14 {
phungductung 0:4e245f4bc8ac 15 class ButtonGroup
phungductung 0:4e245f4bc8ac 16 {
phungductung 0:4e245f4bc8ac 17 public:
phungductung 0:4e245f4bc8ac 18 // Constructor
phungductung 0:4e245f4bc8ac 19 ButtonGroup(uint16_t x0, uint16_t y0,
phungductung 0:4e245f4bc8ac 20 uint16_t width, uint16_t height,
phungductung 0:4e245f4bc8ac 21 uint16_t number, const string str[],
phungductung 0:4e245f4bc8ac 22 uint16_t spaceX = 0, uint16_t spaceY = 0,
phungductung 0:4e245f4bc8ac 23 uint16_t column = 1,
phungductung 0:4e245f4bc8ac 24 int touched = -1, // number for button initially touched-color
phungductung 0:4e245f4bc8ac 25 sFONT &fonts = Font12,
phungductung 0:4e245f4bc8ac 26 uint32_t textColor = GuiBase::ENUM_TEXT,
phungductung 0:4e245f4bc8ac 27 uint32_t backColor = GuiBase::ENUM_BACK,
phungductung 0:4e245f4bc8ac 28 uint32_t createdColor = GuiBase::ENUM_CREATED,
phungductung 0:4e245f4bc8ac 29 uint32_t touchedColor = GuiBase::ENUM_TOUCHED,
phungductung 0:4e245f4bc8ac 30 uint32_t inactiveColor = GuiBase::ENUM_INACTIVE,
phungductung 0:4e245f4bc8ac 31 uint32_t inactiveTextColor = GuiBase::ENUM_INACTIVE_TEXT);
phungductung 0:4e245f4bc8ac 32
phungductung 0:4e245f4bc8ac 33 // Destructor
phungductung 0:4e245f4bc8ac 34 virtual ~ButtonGroup()
phungductung 0:4e245f4bc8ac 35 { for (int n=0; n<NUMBER_; n++) delete buttons_[n]; }
phungductung 0:4e245f4bc8ac 36
phungductung 0:4e245f4bc8ac 37 // Draw button
phungductung 0:4e245f4bc8ac 38 bool Draw(int num, uint32_t color, uint32_t textColor);
phungductung 0:4e245f4bc8ac 39 bool Draw(int num) { return Draw(num, CREATED_COLOR_, TEXT_COLOR_); }
phungductung 0:4e245f4bc8ac 40
phungductung 0:4e245f4bc8ac 41 // Change to touched color
phungductung 0:4e245f4bc8ac 42 bool TouchedColor(int num);
phungductung 0:4e245f4bc8ac 43
phungductung 0:4e245f4bc8ac 44 // Draw all buttons
phungductung 0:4e245f4bc8ac 45 void DrawAll(uint32_t color, uint32_t textColor)
phungductung 0:4e245f4bc8ac 46 { for (int n=0; n<NUMBER_; n++) Draw(n, color, textColor); }
phungductung 0:4e245f4bc8ac 47 void DrawAll() { DrawAll(CREATED_COLOR_, TEXT_COLOR_); }
phungductung 0:4e245f4bc8ac 48
phungductung 0:4e245f4bc8ac 49 // Erase button
phungductung 0:4e245f4bc8ac 50 bool Erase(int num);
phungductung 0:4e245f4bc8ac 51 void EraseAll()
phungductung 0:4e245f4bc8ac 52 { for (int n=0; n<NUMBER_; n++) Erase(n); }
phungductung 0:4e245f4bc8ac 53
phungductung 0:4e245f4bc8ac 54 // Check touch detected for specified button
phungductung 0:4e245f4bc8ac 55 bool Touched(int num);
phungductung 0:4e245f4bc8ac 56
phungductung 0:4e245f4bc8ac 57 // Get touched number, return value: true or false
phungductung 0:4e245f4bc8ac 58 bool GetTouchedNumber(int &num);
phungductung 0:4e245f4bc8ac 59 // Get touched number, return value: touched number
phungductung 0:4e245f4bc8ac 60 int GetTouchedNumber();
phungductung 0:4e245f4bc8ac 61
phungductung 0:4e245f4bc8ac 62 // Wait until touched
phungductung 0:4e245f4bc8ac 63 void WaitTouched(int num)
phungductung 0:4e245f4bc8ac 64 { while (!Touched(num)) {} }
phungductung 0:4e245f4bc8ac 65 // Wait until touched and get touched number
phungductung 0:4e245f4bc8ac 66 int WaitTouchedAndGet();
phungductung 0:4e245f4bc8ac 67
phungductung 0:4e245f4bc8ac 68 // Activate and inactivate button(s)
phungductung 0:4e245f4bc8ac 69 bool Activate(int num);
phungductung 0:4e245f4bc8ac 70 void ActivateAll()
phungductung 0:4e245f4bc8ac 71 { for (int n=0; n<NUMBER_; n++) Activate(n); }
phungductung 0:4e245f4bc8ac 72 bool Inactivate(int num);
phungductung 0:4e245f4bc8ac 73 void InactivateAll()
phungductung 0:4e245f4bc8ac 74 { for (int n=0; n<NUMBER_; n++) Inactivate(n); }
phungductung 0:4e245f4bc8ac 75
phungductung 0:4e245f4bc8ac 76 private:
phungductung 0:4e245f4bc8ac 77 const uint32_t TEXT_COLOR_;
phungductung 0:4e245f4bc8ac 78 const uint32_t CREATED_COLOR_;
phungductung 0:4e245f4bc8ac 79 const uint32_t TOUCHED_COLOR_;
phungductung 0:4e245f4bc8ac 80 const int NUMBER_;
phungductung 0:4e245f4bc8ac 81
phungductung 0:4e245f4bc8ac 82 Array<Button *> buttons_;
phungductung 0:4e245f4bc8ac 83 __IO int prevNum_;
phungductung 0:4e245f4bc8ac 84
phungductung 0:4e245f4bc8ac 85 // Check range of argument
phungductung 0:4e245f4bc8ac 86 bool Range(int n)
phungductung 0:4e245f4bc8ac 87 { return ((n >= 0) && (n < NUMBER_)); }
phungductung 0:4e245f4bc8ac 88
phungductung 0:4e245f4bc8ac 89 // disallow copy constructor and assignment operator
phungductung 0:4e245f4bc8ac 90 ButtonGroup(const ButtonGroup&);
phungductung 0:4e245f4bc8ac 91 ButtonGroup& operator=(const ButtonGroup&);
phungductung 0:4e245f4bc8ac 92 };
phungductung 0:4e245f4bc8ac 93 }
phungductung 0:4e245f4bc8ac 94 #endif // F746_BUTTON_GROUP_HPP
phungductung 0:4e245f4bc8ac 95