1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
52
53
63
64
72
73
74
75
76
77
83
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
/* ... */
#include <gui/home_automation_screen/TemperatureMenuItem.hpp>
#include <touchgfx/Color.hpp>
TemperatureMenuItem::TemperatureMenuItem() :
onButtonPressed(this, &TemperatureMenuItem::buttonPressedhandler)
{
background.setXY(0, 0);
background.setBitmap(Bitmap(BITMAP_TEMPERATURE_MENU_ITEM_ID));
primaryText.setPosition(10, 7, 160, 20);
currentTemperature.setPosition(180, 5, 50, 24);
currentTemperature.setTypedText(TypedText(T_TEMPERATURE_MENU));
currentTemperature.setWildcard(currentTemperatureTextBuffer);
itemSelectArea.setPosition(0, 0, background.getWidth(), background.getHeight());
itemSelectArea.setAction(onButtonPressed);
setSelected(false);
add(background);
add(primaryText);
add(currentTemperature);
add(itemSelectArea);
setWidth(background.getWidth());
setHeight(background.getHeight());
}{ ... }
TemperatureMenuItem::~TemperatureMenuItem()
{
}{ ... }
void TemperatureMenuItem::buttonPressedhandler(const AbstractButton& button)
{
if (&button == &itemSelectArea)
{
if (menuItemSelectedCallback)
{
menuItemSelectedCallback->execute(*this);
}if (menuItemSelectedCallback) { ... }
}if (&button == &itemSelectArea) { ... }
}{ ... }
void TemperatureMenuItem::setRoomTemperatureInfo(RoomTemperatureInfo& info)
{
primaryText.setTypedText(TypedText(info.getRoomName()));
primaryText.invalidate();
Unicode::snprintf(currentTemperatureTextBuffer, 5, "%d", info.getCurrentTemperature());
currentTemperature.invalidate();
}{ ... }
void TemperatureMenuItem::setSelected(bool sel)
{
selected = sel;
if (selected)
{
background.setBitmap(Bitmap(BITMAP_TEMPERATURE_MENU_ITEM_SELECTED_ID));
primaryText.setColor(Color::getColorFrom24BitRGB(0xFF, 0xFF, 0xFF));
currentTemperature.setColor(Color::getColorFrom24BitRGB(0xFF, 0xFF, 0xFF));
}if (selected) { ... }
else
{
background.setBitmap(Bitmap(BITMAP_TEMPERATURE_MENU_ITEM_ID));
primaryText.setColor(Color::getColorFrom24BitRGB(0xA9, 0xAD, 0xB6));
currentTemperature.setColor(Color::getColorFrom24BitRGB(0xA9, 0xAD, 0xB6));
}else { ... }
background.invalidate();
primaryText.invalidate();
currentTemperature.invalidate();
}{ ... }
void TemperatureMenuItem::setTextsAlpha(int16_t alpha)
{
alpha = (alpha < 0) ? 0 : alpha;
alpha = (alpha > 255) ? 255 : alpha;
primaryText.setAlpha((uint8_t) alpha);
currentTemperature.setAlpha((uint8_t) alpha);
primaryText.invalidate();
currentTemperature.invalidate();
}{ ... }