Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
1702 | - | 1 | #include "screen.h" |
2 | |||
3 | uint8_t Screen::currentScreen = 0; |
||
4 | uint8_t Screen::totalScreens = 0; |
||
5 | bool Screen::screenChanged = true; |
||
6 | |||
7 | Screen::Screen(const uint8_t num_items, ScreenItem *pItems) : numItems(num_items) |
||
8 | { |
||
9 | screenItems = (ScreenItem*)pgm_read_word(pItems); |
||
10 | |||
11 | if (totalScreens < MAX_SCREENS) |
||
12 | screenPool2[totalScreens++] = this; |
||
13 | }; |
||
14 | |||
15 | void Screen::Update(Max_LCD *pLcd, bool initial) |
||
16 | { |
||
17 | for (uint8_t i=0; i<numItems; i++) |
||
18 | screenItems[i].Update(pLcd, initial); |
||
19 | }; |
||
20 | |||
21 | void Screen::Set(uint8_t screen_id) |
||
22 | { |
||
23 | if (screen_id >= totalScreens) |
||
24 | return; |
||
25 | |||
26 | currentScreen = screen_id; |
||
27 | screenChanged = true; |
||
28 | }; |
||
29 | |||
30 | void Screen::Run(Max_LCD *pLcd) |
||
31 | { |
||
32 | if (screenChanged) |
||
33 | { |
||
34 | pLcd->clear(); |
||
35 | pLcd->home(); |
||
36 | } |
||
37 | if (screenPool2[currentScreen]) |
||
38 | { |
||
39 | screenPool2[currentScreen]->Update(pLcd, (screenChanged) ? true : false); |
||
40 | screenChanged = false; |
||
41 | } |
||
42 | } |
||
43 |