show current running event title in favourites service list
[enigma2.git] / lib / service / listboxservice.h
index 36bb5bb4fb8da71711893f32737c3d13f2738604..1d5dc2a200b11e0b4bf6bbc643bd59866b36b105 100644 (file)
@@ -3,30 +3,56 @@
 
 #include <lib/gui/elistbox.h>
 #include <lib/service/iservice.h>
-
 #include <set>
-class eServiceCenter;
+
+class eEPGCache;
 
 class eListboxServiceContent: public virtual iListboxContent
 {
        DECLARE_REF(eListboxServiceContent);
+       eEPGCache *epgcache;
 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);
+       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();
@@ -34,7 +60,7 @@ protected:
        int cursorValid();
        int cursorSet(int n);
        int cursorGet();
-       
+
        void cursorSave();
        void cursorRestore();
        int size();
@@ -44,6 +70,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<gFont> m_element_font[celElements];
 private:
        typedef std::list<eServiceReference> list;
        
@@ -54,14 +85,18 @@ private:
        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;
 };
 
 #endif