summaryrefslogtreecommitdiff
path: root/displaymenu.h
blob: 5aee6d178591b27d571095d6429ca86dce32f967 (plain)
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#ifndef __DISPLAYMENU_H
#define __DISPLAYMENU_H
#include "libskindesignerapi/skindesignerapi.h"
#include "libtemplate/template.h"
#include "views/displaymenurootview.h"

#if defined(APIVERSNUM) && APIVERSNUM < 20301
#ifndef MENU_ORIENTATION_DEFINED
enum eMenuOrientation {
    moVertical = 0,
    moHorizontal
};
#endif
#endif

enum eViewState {
    vsInit,
    vsMenuInit,
    vsMenuUpdate,
    vsMenuDetail,
    vsIdle
};

class cSDDisplayMenu : public skindesignerapi::ISDDisplayMenu {
private:
    cDisplayMenuRootView *rootView;
    eViewState state;
    bool doOutput;
    string pluginName;
    int pluginMenu;
    ePluginMenuType pluginMenuType;
    mutable cFont *textAreaFont;
    void SetCurrentRecording(void);
protected:
    int Tab(int n);
public:
    cSDDisplayMenu(cTemplate *menuTemplate);
    virtual ~cSDDisplayMenu();
    virtual void Scroll(bool Up, bool Page);
    virtual int MaxItems(void);
    virtual void Clear(void);
    virtual void SetMenuCategory(eMenuCategory MenuCat);
    virtual void SetMenuSortMode(eMenuSortMode MenuSortMode);
    virtual eMenuOrientation MenuOrientation(void);
    virtual void SetPluginMenu(string name, int menu, int type, bool init);
    virtual void SetTitle(const char *Title);
    virtual void SetButtons(const char *Red, const char *Green = NULL, const char *Yellow = NULL, const char *Blue = NULL);
    virtual void SetMessage(eMessageType Type, const char *Text);
    virtual void SetItem(const char *Text, int Index, bool Current, bool Selectable);
    virtual bool SetItemEvent(const cEvent *Event, int Index, bool Current, bool Selectable, const cChannel *Channel, bool WithDate, eTimerMatch TimerMatch);
    virtual bool SetItemTimer(const cTimer *Timer, int Index, bool Current, bool Selectable);
    virtual bool SetItemChannel(const cChannel *Channel, int Index, bool Current, bool Selectable, bool WithProvider);
    virtual bool SetItemRecording(const cRecording *Recording, int Index, bool Current, bool Selectable, int Level, int Total, int New);
    virtual bool SetItemPlugin(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens, int Index, bool Current, bool Selectable);
    virtual void SetScrollbar(int Total, int Offset);
    virtual void SetEvent(const cEvent *Event);
    virtual void SetRecording(const cRecording *Recording);
    virtual void SetText(const char *Text, bool FixedFont);
    virtual bool SetPluginText(map<string,string> *stringTokens, map<string,int> *intTokens, map<string,vector<map<string,string> > > *loopTokens);
    virtual void Flush(void);
    virtual void SetTabs(int Tab1, int Tab2 = 0, int Tab3 = 0, int Tab4 = 0, int Tab5 = 0);
    virtual int GetTextAreaWidth(void) const;
    virtual const cFont *GetTextAreaFont(bool FixedFont) const;
};

#endif //__DISPLAYMENU_H