X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/d9ee52e4f0fbe9a1ae00d0e66f9e6f0a07fa319f..786a5a906d13ec5832fbecf5c4fa5421f2cac790:/lib/service/listboxservice.h diff --git a/lib/service/listboxservice.h b/lib/service/listboxservice.h index 45e5ba71..5228a2f2 100644 --- a/lib/service/listboxservice.h +++ b/lib/service/listboxservice.h @@ -1,18 +1,93 @@ #ifndef __lib_service_listboxservice_h #define __lib_service_listboxservice_h +#include #include #include - -class eServiceCenter; +#include class eListboxServiceContent: public virtual iListboxContent { - DECLARE_REF; + DECLARE_REF(eListboxServiceContent); public: eListboxServiceContent(); - void setRoot(const eServiceReference &ref); + void addService(const eServiceReference &ref, bool beforeCurrent=false); + void removeCurrent(); + void FillFinished(); + + void setIgnoreService( const eServiceReference &service ); + void setRoot(const eServiceReference &ref, bool justSet=false); + void getCurrent(eServiceReference &ref); + + int getNextBeginningWithChar(char c); + int getPrevMarkerPos(); + int getNextMarkerPos(); + + /* 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 { + celServiceNumber, + celMarkerPixmap, + celFolderPixmap, + celServiceName, + celServiceTypePixmap, + celServiceInfo, // "now" event + celElements + }; + + enum { + picDVB_S, + picDVB_T, + picDVB_C, + picServiceGroup, + picFolder, + picMarker, + picElements + }; + + void setElementPosition(int element, eRect where); + void setElementFont(int element, gFont *font); + void setPixmap(int type, ePtr &pic); + + void sort(); + + int setCurrentMarked(bool); + + void setNumberOffset(int offset) { m_numberoffset = offset; } + + int getItemHeight() { return m_itemheight; } + void setItemHeight(int height); + + enum { + markedForeground, + markedForegroundSelected, + markedBackground, + markedBackgroundSelected, + serviceNotAvail, + colorElements + }; + + void setColor(int color, gRGB &col); protected: void cursorHome(); void cursorEnd(); @@ -20,7 +95,7 @@ protected: int cursorValid(); int cursorSet(int n); int cursorGet(); - + void cursorSave(); void cursorRestore(); int size(); @@ -30,6 +105,14 @@ 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]; + ePtr m_pixmaps[picElements]; + gRGB m_color[colorElements]; + bool m_color_set[colorElements]; private: typedef std::list list; @@ -40,9 +123,23 @@ private: int m_size; eSize m_itemsize; - ePtr m_service_center; + ePtr m_service_center; + ePtr m_lst; eServiceReference m_root; + + /* support for marked services */ + std::set m_marked; + std::set::const_iterator m_marked_iterator; + + /* support for movemode */ + bool m_current_marked; + + int m_numberoffset; + + eServiceReference m_is_playable_ignore; + + int m_itemheight; }; #endif