X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/8ade23537a682d4b0c9709d533b25702bde2ee23..6dbbf2167e1a8ca25dd2cd8e20bef82686b28f61:/lib/gui/elistbox.h?ds=sidebyside diff --git a/lib/gui/elistbox.h b/lib/gui/elistbox.h index ac45a332..29349cbb 100644 --- a/lib/gui/elistbox.h +++ b/lib/gui/elistbox.h @@ -7,6 +7,8 @@ class iListboxContent: public iObject { public: + virtual ~iListboxContent()=0; + /* 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 @@ -17,7 +19,10 @@ public: to stay on the same data, however when the current item is removed, this won't work. you'll be notified anyway. */ - +#ifndef SWIG +protected: + iListboxContent(); + friend class eListbox; virtual void cursorHome()=0; virtual void cursorEnd()=0; virtual int cursorMove(int count=1)=0; @@ -30,37 +35,68 @@ public: 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 { public: eListbox(eWidget *parent); + ~eListbox(); void setContent(iListboxContent *content); +/* enum Movement { + moveUp, + moveDown, + moveTop, + moveEnd, + justCheck + }; */ + void moveSelection(int how); - enum { + + enum ListboxActions { moveUp, moveDown, moveTop, - moveEnd + moveEnd, + pageUp, + pageDown, + justCheck }; + + void setItemHeight(int h); + +#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(); + protected: int event(int event, void *data=0, void *data2=0); void recalcSize(); + private: int m_top, m_selected; int m_itemheight; int m_items_per_page; ePtr m_content; -}; +#endif +}; #endif