X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=lib%2Fgui%2Felistbox.h;h=76ad82081ce8c41c87ad8ff352123456f8acff09;hb=9314a07dfcc0a5123beb50ddb198cbcc5805d7db;hp=d5464868e540cca509ec66ec046de599da315b5e;hpb=4bc08995411e21f3564f09e136809be68ddf96a8;p=vuplus_dvbapp diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h index d546486..76ad820 100644 --- a/lib/gui/elistbox.h +++ b/lib/gui/elistbox.h @@ -4,6 +4,9 @@ #include #include +class eListbox; +class eSlider; + class iListboxContent: public iObject { public: @@ -21,6 +24,7 @@ public: anyway. */ #ifndef SWIG protected: + iListboxContent(); friend class eListbox; virtual void cursorHome()=0; virtual void cursorEnd()=0; @@ -34,37 +38,90 @@ protected: virtual int size()=0; - virtual RESULT connectItemChanged(const Slot0 &itemChanged, ePtr &connection)=0; + void setListbox(eListbox *lb); // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though virtual void setSize(const eSize &size)=0; /* the following functions always refer to the selected item */ virtual void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected)=0; + + eListbox *m_listbox; #endif }; class eListbox: public eWidget { + void updateScrollBar(); public: eListbox(eWidget *parent); + ~eListbox(); + + PSignal0 selectionChanged; + + enum { + showOnDemand, + showAlways, + showNever + }; + void setScrollbarMode(int mode); + void setWrapAround(bool); + void setContent(iListboxContent *content); +/* enum Movement { + moveUp, + moveDown, + moveTop, + moveEnd, + justCheck + }; */ + + int getCurrentIndex(); void moveSelection(int how); - enum { + void moveSelectionTo(int index); + void moveToEnd(); + bool atBegin(); + bool atEnd(); + + enum ListboxActions { moveUp, moveDown, moveTop, - moveEnd + moveEnd, + pageUp, + pageDown, + justCheck }; + + void setItemHeight(int h); + void setSelectionEnable(int en); +#ifndef SWIG + /* 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. */ + void entryRemoved(int index); + /* entryChanged: the entry with the given index was changed and should be redrawn. */ + void entryChanged(int index); + /* the complete list changed. you should not attemp to keep the current index. */ + void entryReset(bool cursorHome=true); + protected: int event(int event, void *data=0, void *data2=0); void recalcSize(); + private: + int m_scrollbar_mode, m_prev_scrollbar_page; + bool m_content_changed; + bool m_enabled_wrap_around; + int m_top, m_selected; int m_itemheight; int m_items_per_page; + int m_selection_enabled; ePtr m_content; + eSlider *m_scrollbar; +#endif }; #endif