X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fgui%2Felistbox.h;h=17fce5ccdd25bdb4e98080c421387cd3fb5d89a8;hp=2eb54dd96fe2ac717084e37f8b23cf26bd28a8ef;hb=74f5884fdc5a23465cf40c27b5c069ff7d882746;hpb=8d1f62f6525ccfdbcb83c64f701dbbc325c37dbd diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h index 2eb54dd..17fce5c 100644 --- a/lib/gui/elistbox.h +++ b/lib/gui/elistbox.h @@ -15,7 +15,7 @@ public: /* indices go from 0 to size(). the end is reached when the cursor is on size(), i.e. one after the last entry (this mimics - stl behaviour) + stl behavior) cursors never invalidate - they can become invalid when stuff is removed. Cursors will always try @@ -26,6 +26,7 @@ public: protected: iListboxContent(); friend class eListbox; + virtual void updateClip(gRegion &){ }; virtual void cursorHome()=0; virtual void cursorEnd()=0; virtual int cursorMove(int count=1)=0; @@ -48,10 +49,32 @@ protected: /* the following functions always refer to the selected item */ virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0; + virtual int getItemHeight()=0; + eListbox *m_listbox; #endif }; +#ifndef SWIG +struct eListboxStyle +{ + ePtr m_background, m_selection; + int m_transparent_background; + gRGB m_background_color, m_background_color_selected, m_foreground_color, m_foreground_color_selected; + int m_background_color_set, m_foreground_color_set, m_background_color_selected_set, m_foreground_color_selected_set; + + /* + {m_transparent_background m_background_color_set m_background} + {0 0 0} use global background color + {0 1 x} use background color + {0 0 p} use background picture + {1 x 0} use transparent background + {1 x p} use transparent background picture + */ + ePtr m_font; +}; +#endif + class eListbox: public eWidget { void updateScrollBar(); @@ -70,7 +93,7 @@ public: void setWrapAround(bool); void setContent(iListboxContent *content); - + /* enum Movement { moveUp, moveDown, @@ -80,7 +103,7 @@ public: }; */ int getCurrentIndex(); - void moveSelection(int how); + void moveSelection(long how); void moveSelectionTo(int index); void moveToEnd(); bool atBegin(); @@ -95,10 +118,21 @@ public: pageDown, justCheck }; - + void setItemHeight(int h); void setSelectionEnable(int en); + + void setBackgroundColor(gRGB &col); + void setBackgroundColorSelected(gRGB &col); + void setForegroundColor(gRGB &col); + void setForegroundColorSelected(gRGB &col); + void setBackgroundPicture(ePtr &pixmap); + void setSelectionPicture(ePtr &pixmap); + void setFont(gFont *font); + #ifndef SWIG + struct eListboxStyle *getLocalStyle(void); + /* entryAdded: an entry was added *before* the given index. it's index is the given number. */ void entryAdded(int index); /* entryRemoved: an entry with the given index was removed. */ @@ -108,6 +142,8 @@ public: /* the complete list changed. you should not attemp to keep the current index. */ void entryReset(bool cursorHome=true); + int getEntryTop(); + void invalidate(const gRegion ®ion = gRegion::invalidRegion()); protected: int event(int event, void *data=0, void *data2=0); void recalcSize(); @@ -123,6 +159,10 @@ private: int m_selection_enabled; ePtr m_content; eSlider *m_scrollbar; + eListboxStyle m_style; +#ifdef USE_LIBVUGLES2 + long m_dir; +#endif #endif };