remove non working indication of playable services in servicelist
[enigma2.git] / lib / service / listboxservice.h
1 #ifndef __lib_service_listboxservice_h
2 #define __lib_service_listboxservice_h
3
4 #include <lib/gui/elistbox.h>
5 #include <lib/service/iservice.h>
6 #include <set>
7
8 class eListboxServiceContent: public virtual iListboxContent
9 {
10         DECLARE_REF(eListboxServiceContent);
11 public:
12         eListboxServiceContent();
13         void setRoot(const eServiceReference &ref);
14         void getCurrent(eServiceReference &ref);
15         
16         int getNextBeginningWithChar(char c);
17
18                 /* support for marked services */
19         void initMarked();
20         void addMarked(const eServiceReference &ref);
21         void removeMarked(const eServiceReference &ref);
22         int isMarked(const eServiceReference &ref);
23
24                 /* this is NOT thread safe! */
25         void markedQueryStart();
26         int markedQueryNext(eServiceReference &ref);
27
28         int lookupService(const eServiceReference &ref);
29         void setCurrent(const eServiceReference &ref);
30
31         enum {
32                 visModeSimple,
33                 visModeComplex
34         };
35         
36         void setVisualMode(int mode);
37         
38                 /* only in complex mode: */
39         enum {
40                 celIcon,
41                 celServiceNumber,
42                 celServiceName,
43                 celServiceInfo, // "now" event
44                 celElements
45         };
46         
47         void setElementPosition(int element, eRect where);
48         void setElementFont(int element, gFont *font);
49         
50         void sort();
51
52         int setCurrentMarked(bool);
53
54         void setNumberOffset(int offset) { m_numberoffset = offset; }
55 protected:
56         void cursorHome();
57         void cursorEnd();
58         int cursorMove(int count=1);
59         int cursorValid();
60         int cursorSet(int n);
61         int cursorGet();
62
63         void cursorSave();
64         void cursorRestore();
65         int size();
66         
67         // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
68         void setSize(const eSize &size);
69         
70                 /* the following functions always refer to the selected item */
71         void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
72         
73         int m_visual_mode;
74                 /* for complex mode */
75         eRect m_element_position[celElements];
76         ePtr<gFont> m_element_font[celElements];
77 private:
78         typedef std::list<eServiceReference> list;
79         
80         list m_list;
81         list::iterator m_cursor, m_saved_cursor;
82         
83         int m_cursor_number, m_saved_cursor_number;
84         int m_size;
85         
86         eSize m_itemsize;
87         ePtr<iServiceHandler> m_service_center;
88         
89         eServiceReference m_root;
90
91                 /* support for marked services */
92         std::set<eServiceReference> m_marked;
93         std::set<eServiceReference>::const_iterator m_marked_iterator;
94
95                 /* support for movemode */
96         bool m_current_marked;
97
98         int m_numberoffset;
99 };
100
101 #endif