1 #ifndef __lib_service_listboxservice_h
2 #define __lib_service_listboxservice_h
4 #include <lib/gui/elistbox.h>
5 #include <lib/service/iservice.h>
10 class eListboxServiceContent: public virtual iListboxContent
12 DECLARE_REF(eListboxServiceContent);
15 eListboxServiceContent();
16 void setRoot(const eServiceReference &ref);
17 void getCurrent(eServiceReference &ref);
19 int getNextBeginningWithChar(char c);
21 /* support for marked services */
23 void addMarked(const eServiceReference &ref);
24 void removeMarked(const eServiceReference &ref);
25 int isMarked(const eServiceReference &ref);
27 /* this is NOT thread safe! */
28 void markedQueryStart();
29 int markedQueryNext(eServiceReference &ref);
31 int lookupService(const eServiceReference &ref);
32 void setCurrent(const eServiceReference &ref);
39 void setVisualMode(int mode);
41 /* only in complex mode: */
46 celServiceInfo, // "now" event
50 void setElementPosition(int element, eRect where);
51 void setElementFont(int element, gFont *font);
55 int setCurrentMarked(bool);
57 void setNumberOffset(int offset) { m_numberoffset = offset; }
61 int cursorMove(int count=1);
70 // void setOutputDevice ? (for allocating colors, ...) .. requires some work, though
71 void setSize(const eSize &size);
73 /* the following functions always refer to the selected item */
74 void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
77 /* for complex mode */
78 eRect m_element_position[celElements];
79 ePtr<gFont> m_element_font[celElements];
81 typedef std::list<eServiceReference> list;
84 list::iterator m_cursor, m_saved_cursor;
86 int m_cursor_number, m_saved_cursor_number;
90 ePtr<iServiceHandler> m_service_center;
92 eServiceReference m_root;
94 /* support for marked services */
95 std::set<eServiceReference> m_marked;
96 std::set<eServiceReference>::const_iterator m_marked_iterator;
98 /* support for movemode */
99 bool m_current_marked;