X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f..d0c2907cd737fe997153839f3c9242e137e5bf3e:/lib/service/listboxservice.h diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h index 45e5ba71..f32e0865 100644 --- a/lib/service/listboxservice.h +++ b/lib/service/listboxservice.h @@ -4,15 +4,48 @@ #include #include +#include class eServiceCenter; class eListboxServiceContent: public virtual iListboxContent { - DECLARE_REF; + DECLARE_REF(eListboxServiceContent); public: eListboxServiceContent(); void setRoot(const eServiceReference &ref); + void getCurrent(eServiceReference &ref); + + /* 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); + + enum { + visModeSimple, + visModeComplex + }; + + void setVisualMode(int mode); + + /* only in complex mode: */ + enum { + celServiceName, + celServiceNumber, + celIcon, + celServiceInfo, // "now" event + celElements + }; + + void setElementPosition(int element, eRect where); + void setElementFont(int element, gFont *font); + protected: void cursorHome(); void cursorEnd(); @@ -30,6 +63,11 @@ protected: /* 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 m_element_font[celElements]; private: typedef std::list list; @@ -43,6 +81,11 @@ private: ePtr m_service_center; eServiceReference m_root; + + /* support for marked services */ + std::set m_marked; + + std::set::const_iterator m_marked_iterator; }; #endif