openATV enigma2
openATV is an open source SetTopBox Graphical user interface.
elistbox.h
Go to the documentation of this file.
1 #ifndef __lib_listbox_h
2 #define __lib_listbox_h
3 
4 #include <lib/gui/ewidget.h>
5 #include <connection.h>
6 
7 class eListbox;
8 class eSlider;
9 
10 class iListboxContent: public iObject
11 {
12 public:
13  virtual ~iListboxContent()=0;
14 
15  /* indices go from 0 to size().
16  the end is reached when the cursor is on size(),
17  i.e. one after the last entry (this mimics
18  stl behavior)
19 
20  cursors never invalidate - they can become invalid
21  when stuff is removed. Cursors will always try
22  to stay on the same data, however when the current
23  item is removed, this won't work. you'll be notified
24  anyway. */
25 #ifndef SWIG
26 protected:
28  friend class eListbox;
29  virtual void updateClip(gRegion &){ };
30  virtual void resetClip(){ };
31  virtual void cursorHome()=0;
32  virtual void cursorEnd()=0;
33  virtual int cursorMove(int count=1)=0;
34  virtual int cursorValid()=0;
35  virtual int cursorSet(int n)=0;
36  virtual int cursorGet()=0;
37 
38  virtual void cursorSave()=0;
39  virtual void cursorRestore()=0;
40  virtual void cursorSaveLine(int n)=0;
41  virtual int cursorRestoreLine()=0;
42 
43  virtual int size()=0;
44 
45  virtual int currentCursorSelectable();
46 
47  void setListbox(eListbox *lb);
48 
49  // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
50  virtual void setSize(const eSize &size)=0;
51 
52  /* the following functions always refer to the selected item */
53  virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0;
54 
55  virtual int getItemHeight()=0;
56 
58 #endif
59 };
60 
61 #ifndef SWIG
63 {
69  /*
70  {m_transparent_background m_background_color_set m_background}
71  {0 0 0} use global background color
72  {0 1 x} use background color
73  {0 0 p} use background picture
74  {1 x 0} use transparent background
75  {1 x p} use transparent background picture
76  */
77 
78  enum
79  {
86  };
91 };
92 #endif
93 
94 class eListbox: public eWidget
95 {
96  void updateScrollBar();
97 public:
98  eListbox(eWidget *parent);
99  ~eListbox();
100 
102 
103  enum {
109  };
110 
111  enum {
113  byLine
114  };
115 
116  enum {
119  listGrid
120  };
121 
122  enum {
129  DefaultPageSize = 0
130  };
131 
132  void setScrollbarScroll(int scroll);
133  void setScrollbarMode(int mode);
134  void setWrapAround(bool);
135 
136  void setContent(iListboxContent *content);
137 
138  void allowNativeKeys(bool allow);
139  void enableAutoNavigation(bool allow) { allowNativeKeys(allow); }
140 
141  int getCurrentIndex();
142  void moveSelection(long how);
143  void moveSelectionTo(int index);
144  void moveToEnd(); // Deprecated
145  bool atBegin();
146  bool atEnd();
147 
156 
157  // for future use
162 
174  moveFirst, // for future use
175  moveLast, // for future use
176  movePageLeft, // for future use
177  movePageRight, // for future use
178  moveEnd = moveBottom, // deprecated
179  pageUp = movePageUp, // deprecated
180  pageDown = movePageDown // deprecated
181  };
182 
183  void setItemHeight(int h);
184  void setItemWidth(int w);
185  void setSelectionEnable(int en);
186 
187  void setBackgroundColor(gRGB &col);
188  void setBackgroundColorSelected(gRGB &col);
189  void setForegroundColor(gRGB &col);
190  void setForegroundColorSelected(gRGB &col);
191  void setBorderColor(const gRGB &col);
192  void setBorderWidth(int size);
193  void setBackgroundPixmap(ePtr<gPixmap> &pixmap);
194  void setSelectionPixmap(ePtr<gPixmap> &pixmap);
195 
198  void setScrollbarBorderWidth(int width);
199  void setScrollbarWidth(int size);
200  void setScrollbarOffset(int size);
201 
202  void setFont(gFont *font);
203  void setEntryFont(gFont *font);
204  void setValueFont(gFont *font);
205  void setVAlign(int align);
206  void setHAlign(int align);
207  void setTextPadding(const eRect &padding);
208  void setUseVTIWorkaround(void);
209 
210  void setScrollbarBorderColor(const gRGB &col);
213 
214  void setPageSize(int size) { m_page_size = size; }
215 
216  static void setDefaultScrollbarStyle(int width, int offset, int borderwidth, int scroll, int mode, bool enablewraparound, int pageSize) {
217  defaultScrollBarWidth = width;
218  defaultScrollBarOffset = offset;
219  defaultScrollBarBorderWidth = borderwidth;
220  defaultScrollBarScroll = scroll;
221  defaultWrapAround = enablewraparound;
222  defaultScrollBarMode = mode;
223  defaultPageSize = pageSize;
224  }
225 
226  static void setDefaultPadding(const eRect &padding) { defaultPadding = padding; }
227 
228  void setOrientation(int o);
229 
230  bool getWrapAround() { return m_enabled_wrap_around; }
231  int getScrollbarScroll() { return m_scrollbar_scroll; }
232  int getScrollbarMode() { return m_scrollbar_mode; }
233  int getScrollbarWidth() { return m_scrollbar_width; }
234  int getScrollbarOffset() { return m_scrollbar_offset; }
235  int getScrollbarBorderWidth() { return m_scrollbar_border_width; }
236  int getPageSize() { return m_page_size; }
237  int getItemHeight() { return m_itemheight; }
238  int getItemWidth() { return m_itemwidth; }
239  int getOrientation() { return m_list_orientation; }
240  bool getSelectionEnable() {return m_selection_enabled; }
241  gFont* getFont() {return m_style.m_font; }
242  gFont* getEntryFont() {return m_style.m_font; }
243  gFont* getValueFont() {return m_style.m_valuefont; }
244 
245 
246 #ifndef SWIG
247  struct eListboxStyle *getLocalStyle(void);
248 
249  /* entryAdded: an entry was added *before* the given index. it's index is the given number. */
250  void entryAdded(int index);
251  /* entryRemoved: an entry with the given index was removed. */
252  void entryRemoved(int index);
253  /* entryChanged: the entry with the given index was changed and should be redrawn. */
254  void entryChanged(int index);
255  /* the complete list changed. you should not attemp to keep the current index. */
256  void entryReset(bool cursorHome=true);
257 
258  int getEntryTop();
259  void invalidate(const gRegion &region = gRegion::invalidRegion());
260 
261 protected:
262  int event(int event, void *data=0, void *data2=0);
263  void recalcSize();
264 
265 private:
266  static int defaultScrollBarWidth;
267  static int defaultScrollBarOffset;
268  static int defaultScrollBarBorderWidth;
269  static int defaultScrollBarScroll;
270  static int defaultScrollBarMode;
271  static int defaultPageSize;
272  static bool defaultWrapAround;
273  static eRect defaultPadding;
274 
275  int m_list_orientation,m_scrollbar_mode, m_prev_scrollbar_page, m_scrollbar_scroll;
276  bool m_content_changed;
277  bool m_enabled_wrap_around;
278 
279  int m_scrollbar_width;
280  int m_scrollbar_offset;
281  int m_scrollbar_border_width;
282  int m_top, m_selected;
283  int m_itemheight;
284  int m_itemwidth;
285  int m_items_per_page;
286  int m_selection_enabled;
287  int m_page_size;
288 
289  bool m_native_keys_bound;
290  int m_first_selectable_item;
291  int m_last_selectable_item;
292 
293  ePtr<iListboxContent> m_content;
294  eSlider *m_scrollbar;
295  eListboxStyle m_style;
296  ePtr<gPixmap> m_scrollbarpixmap, m_scrollbarbackgroundpixmap;
297 #ifdef USE_LIBVUGLES2
298  long m_dir;
299 #endif
300 #endif
301 };
302 
303 #endif
ucs4_t int n
Definition: big5.h:4148
Definition: elistbox.h:95
void setUseVTIWorkaround(void)
Definition: elistbox.cpp:539
@ DefaultScrollBarScroll
Definition: elistbox.h:126
@ DefaultScrollBarOffset
Definition: elistbox.h:124
@ DefaultPageSize
Definition: elistbox.h:129
@ DefaultWrapAround
Definition: elistbox.h:128
@ DefaultScrollBarWidth
Definition: elistbox.h:123
@ DefaultScrollBarBorderWidth
Definition: elistbox.h:125
@ DefaultScrollBarMode
Definition: elistbox.h:127
void setItemHeight(int h)
Definition: elistbox.cpp:400
void goRight()
Definition: elistbox.h:155
void setWrapAround(bool)
Definition: elistbox.cpp:91
void setBorderWidth(int size)
Definition: elistbox.cpp:573
void setValueFont(gFont *font)
Definition: elistbox.cpp:519
void setScrollbarOffset(int size)
Definition: elistbox.cpp:591
int getScrollbarWidth()
Definition: elistbox.h:233
void moveToEnd()
Definition: elistbox.cpp:133
void setSelectionEnable(int en)
Definition: elistbox.cpp:409
~eListbox()
Definition: elistbox.cpp:44
void setScrollbarScroll(int scroll)
Definition: elistbox.cpp:80
void recalcSize()
Definition: elistbox.cpp:386
void goFirst()
Definition: elistbox.h:160
void goLast()
Definition: elistbox.h:161
void entryRemoved(int index)
Definition: elistbox.cpp:443
void setBackgroundColor(gRGB &col)
Definition: elistbox.cpp:544
int getScrollbarMode()
Definition: elistbox.h:232
PSignal0< void > selectionChanged
Definition: elistbox.h:101
void setScrollbarBackgroundColor(gRGB &col)
Definition: elistbox.cpp:612
int getEntryTop()
Definition: elistbox.cpp:270
eListbox(eWidget *parent)
Definition: elistbox.cpp:19
void goLineUp()
Definition: elistbox.h:150
int getCurrentIndex()
Definition: elistbox.cpp:163
gFont * getEntryFont()
Definition: elistbox.h:242
int getScrollbarOffset()
Definition: elistbox.h:234
int getItemWidth()
Definition: elistbox.h:238
void setScrollbarBackgroundPixmap(ePtr< gPixmap > &pm)
Definition: elistbox.cpp:633
@ showAlways
Definition: elistbox.h:105
@ showLeftOnDemand
Definition: elistbox.h:107
@ showOnDemand
Definition: elistbox.h:104
@ showNever
Definition: elistbox.h:106
@ showLeftAlways
Definition: elistbox.h:108
void setForegroundColorSelected(gRGB &col)
Definition: elistbox.cpp:562
void goBottom()
Definition: elistbox.h:149
void entryChanged(int index)
Definition: elistbox.cpp:465
void setBackgroundPixmap(ePtr< gPixmap > &pixmap)
Definition: elistbox.cpp:596
static void setDefaultPadding(const eRect &padding)
Definition: elistbox.h:226
void goPageRight()
Definition: elistbox.h:159
void entryReset(bool cursorHome=true)
Definition: elistbox.cpp:474
int getItemHeight()
Definition: elistbox.h:237
void setScrollbarBorderColor(const gRGB &col)
Definition: elistbox.cpp:626
void goLeft()
Definition: elistbox.h:154
void moveSelectionTo(int index)
Definition: elistbox.cpp:153
int getScrollbarBorderWidth()
Definition: elistbox.h:235
void setScrollbarForegroundPixmap(ePtr< gPixmap > &pm)
Definition: elistbox.cpp:606
static void setDefaultScrollbarStyle(int width, int offset, int borderwidth, int scroll, int mode, bool enablewraparound, int pageSize)
Definition: elistbox.h:216
void setPageSize(int size)
Definition: elistbox.h:214
bool getWrapAround()
Definition: elistbox.h:230
bool atEnd()
Definition: elistbox.cpp:125
void setSelectionPixmap(ePtr< gPixmap > &pixmap)
Definition: elistbox.cpp:601
@ byPage
Definition: elistbox.h:112
@ byLine
Definition: elistbox.h:113
void setTextPadding(const eRect &padding)
Definition: elistbox.cpp:534
void setForegroundColor(gRGB &col)
Definition: elistbox.cpp:556
int getPageSize()
Definition: elistbox.h:236
void enableAutoNavigation(bool allow)
Definition: elistbox.h:139
void setContent(iListboxContent *content)
Definition: elistbox.cpp:96
void setEntryFont(gFont *font)
Definition: elistbox.cpp:514
void setBorderColor(const gRGB &col)
Definition: elistbox.cpp:568
void setItemWidth(int w)
Definition: elistbox.cpp:654
gFont * getFont()
Definition: elistbox.h:241
void entryAdded(int index)
Definition: elistbox.cpp:417
bool atBegin()
Definition: elistbox.cpp:118
void goPageUp()
Definition: elistbox.h:152
int event(int event, void *data=0, void *data2=0)
Definition: elistbox.cpp:275
void invalidate(const gRegion &region=gRegion::invalidRegion())
Definition: elistbox.cpp:639
bool getSelectionEnable()
Definition: elistbox.h:240
void goLineDown()
Definition: elistbox.h:151
void goPageLeft()
Definition: elistbox.h:158
int getOrientation()
Definition: elistbox.h:239
void setOrientation(int o)
Definition: elistbox.cpp:663
void setVAlign(int align)
Definition: elistbox.cpp:524
struct eListboxStyle * getLocalStyle(void)
Definition: elistbox.cpp:647
gFont * getValueFont()
Definition: elistbox.h:243
void goTop()
Definition: elistbox.h:148
void setScrollbarWidth(int size)
Definition: elistbox.cpp:586
void setHAlign(int align)
Definition: elistbox.cpp:529
void setScrollbarMode(int mode)
Definition: elistbox.cpp:52
int getScrollbarScroll()
Definition: elistbox.h:231
void setScrollbarForegroundColor(gRGB &col)
Definition: elistbox.cpp:619
void moveSelection(long how)
Definition: elistbox.cpp:669
ListboxActions
Definition: elistbox.h:163
@ movePageDown
Definition: elistbox.h:169
@ moveBottom
Definition: elistbox.h:167
@ moveTop
Definition: elistbox.h:166
@ justCheck
Definition: elistbox.h:170
@ moveRight
Definition: elistbox.h:173
@ pageDown
Definition: elistbox.h:180
@ movePageUp
Definition: elistbox.h:168
@ movePageLeft
Definition: elistbox.h:176
@ moveFirst
Definition: elistbox.h:174
@ moveLeft
Definition: elistbox.h:172
@ pageUp
Definition: elistbox.h:179
@ moveUp
Definition: elistbox.h:164
@ moveDown
Definition: elistbox.h:165
@ moveLast
Definition: elistbox.h:175
@ refresh
Definition: elistbox.h:171
@ moveEnd
Definition: elistbox.h:178
@ movePageRight
Definition: elistbox.h:177
void goPageDown()
Definition: elistbox.h:153
void setBackgroundColorSelected(gRGB &col)
Definition: elistbox.cpp:550
void allowNativeKeys(bool allow)
Definition: elistbox.cpp:104
@ listVertical
Definition: elistbox.h:117
@ listGrid
Definition: elistbox.h:119
@ listHorizontal
Definition: elistbox.h:118
void setFont(gFont *font)
Definition: elistbox.cpp:509
void setScrollbarBorderWidth(int width)
Definition: elistbox.cpp:579
Definition: epoint.h:9
Definition: erect.h:11
Definition: esize.h:8
Definition: eslider.h:7
Definition: ewidget.h:14
eSize size() const
Definition: ewidget.h:24
Definition: ewindowstyle.h:46
A softreference to a font.
Definition: gfont.h:14
Definition: grc.h:239
Definition: region.h:9
static gRegion invalidRegion()
Definition: region.h:99
Definition: elistbox.h:11
virtual int getItemHeight()=0
virtual void resetClip()
Definition: elistbox.h:30
virtual ~iListboxContent()=0
Definition: elistboxcontent.cpp:35
iListboxContent()
Definition: elistboxcontent.cpp:39
virtual int cursorGet()=0
eListbox * m_listbox
Definition: elistbox.h:57
virtual void cursorHome()=0
virtual int cursorRestoreLine()=0
virtual void cursorSaveLine(int n)=0
virtual void cursorEnd()=0
virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0
virtual void updateClip(gRegion &)
Definition: elistbox.h:29
virtual void cursorRestore()=0
virtual int currentCursorSelectable()
Definition: elistboxcontent.cpp:49
virtual void setSize(const eSize &size)=0
virtual int cursorMove(int count=1)=0
void setListbox(eListbox *lb)
Definition: elistboxcontent.cpp:43
virtual void cursorSave()=0
virtual int cursorValid()=0
virtual int size()=0
virtual int cursorSet(int n)=0
Definition: object.h:15
static long long align(long long x, int align)
Definition: dvb.cpp:2135
const char int int width
Definition: epng.h:39
fontRenderClass * font
unsigned char data[256]
Definition: hdmi_cec.h:2
int count
Definition: newplugin.py:14
index
Definition: main.py:28
Definition: elistbox.h:63
gRGB m_scrollbarforeground_color
Definition: elistbox.h:67
ePtr< gFont > m_valuefont
Definition: elistbox.h:88
int m_foreground_color_selected_set
Definition: elistbox.h:68
int m_border_size
Definition: elistbox.h:87
int m_background_color_set
Definition: elistbox.h:68
gRGB m_border_color
Definition: elistbox.h:67
gRGB m_foreground_color_selected
Definition: elistbox.h:67
int m_scollbarborder_color_set
Definition: elistbox.h:68
gRGB m_foreground_color
Definition: elistbox.h:67
eRect m_text_padding
Definition: elistbox.h:89
ePtr< gFont > m_font
Definition: elistbox.h:88
int m_halign
Definition: elistbox.h:87
ePtr< gPixmap > m_background
Definition: elistbox.h:64
int m_foreground_color_set
Definition: elistbox.h:68
@ alignLeft
Definition: elistbox.h:80
@ alignBottom
Definition: elistbox.h:84
@ alignCenter
Definition: elistbox.h:82
@ alignRight
Definition: elistbox.h:83
@ alignTop
Definition: elistbox.h:81
@ alignBlock
Definition: elistbox.h:85
gRGB m_scrollbarbackground_color
Definition: elistbox.h:67
int m_scrollbarborder_width_set
Definition: elistbox.h:68
int m_background_color_selected_set
Definition: elistbox.h:68
int m_scrollbarforeground_color_set
Definition: elistbox.h:68
int m_scrollbarbackground_color_set
Definition: elistbox.h:68
gRGB m_background_color_selected
Definition: elistbox.h:66
int m_transparent_background
Definition: elistbox.h:65
int m_scrollbarborder_width
Definition: elistbox.h:87
int m_valign
Definition: elistbox.h:87
gRGB m_background_color
Definition: elistbox.h:66
gRGB m_scollbarborder_color
Definition: elistbox.h:67
ePtr< gPixmap > m_selection
Definition: elistbox.h:64
bool m_use_vti_workaround
Definition: elistbox.h:90
Definition: gpixmap.h:14
uint8_t mode
Definition: vps.cpp:40