Subversion Repositories Projects

Rev

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