#include <lib/gui/elistbox.h>
#include <lib/service/iservice.h>
-
-class eServiceCenter;
+#include <set>
class eListboxServiceContent: public virtual iListboxContent
{
- DECLARE_REF;
+ DECLARE_REF(eListboxServiceContent);
public:
eListboxServiceContent();
- void setRoot(const eServiceReference &ref);
+
+ void addService(const eServiceReference &ref);
+ void FillFinished();
+
+ void setIgnoreService( const eServiceReference &service );
+ void setRoot(const eServiceReference &ref, bool justSet=false);
void getCurrent(eServiceReference &ref);
+
+ int getNextBeginningWithChar(char c);
+
+ /* support for marked services */
+ void initMarked();
+ void addMarked(const eServiceReference &ref);
+ void removeMarked(const eServiceReference &ref);
+ int isMarked(const eServiceReference &ref);
+
+ /* this is NOT thread safe! */
+ void markedQueryStart();
+ int markedQueryNext(eServiceReference &ref);
+
+ int lookupService(const eServiceReference &ref);
+ void setCurrent(const eServiceReference &ref);
+
+ enum {
+ visModeSimple,
+ visModeComplex
+ };
+
+ void setVisualMode(int mode);
+
+ /* only in complex mode: */
+ enum {
+ celIcon,
+ celServiceNumber,
+ celServiceName,
+ celServiceInfo, // "now" event
+ celElements
+ };
+
+ void setElementPosition(int element, eRect where);
+ void setElementFont(int element, gFont *font);
+
+ void sort();
+
+ int setCurrentMarked(bool);
+ void setNumberOffset(int offset) { m_numberoffset = offset; }
protected:
void cursorHome();
void cursorEnd();
int cursorValid();
int cursorSet(int n);
int cursorGet();
-
+
void cursorSave();
void cursorRestore();
int size();
/* the following functions always refer to the selected item */
void paint(gPainter &painter, eWindowStyle &style, const ePoint &offset, int selected);
+
+ int m_visual_mode;
+ /* for complex mode */
+ eRect m_element_position[celElements];
+ ePtr<gFont> m_element_font[celElements];
private:
typedef std::list<eServiceReference> list;
int m_size;
eSize m_itemsize;
- ePtr<eServiceCenter> m_service_center;
+ ePtr<iServiceHandler> m_service_center;
eServiceReference m_root;
+
+ /* support for marked services */
+ std::set<eServiceReference> m_marked;
+ std::set<eServiceReference>::const_iterator m_marked_iterator;
+
+ /* support for movemode */
+ bool m_current_marked;
+
+ int m_numberoffset;
+
+ eServiceReference m_is_playable_ignore;
};
#endif