Merge branch 'bug_538_ignore_global_actions_in_standby'
[enigma2.git] / lib / service / listboxservice.h
index 234cd39..589afba 100644 (file)
@@ -1,6 +1,7 @@
 #ifndef __lib_service_listboxservice_h
 #define __lib_service_listboxservice_h
 
+#include <lib/gdi/gpixmap.h>
 #include <lib/gui/elistbox.h>
 #include <lib/service/iservice.h>
 #include <set>
@@ -11,7 +12,8 @@ class eListboxServiceContent: public virtual iListboxContent
 public:
        eListboxServiceContent();
 
-       void addService(const eServiceReference &ref);
+       void addService(const eServiceReference &ref, bool beforeCurrent=false);
+       void removeCurrent();
        void FillFinished();
 
        void setIgnoreService( const eServiceReference &service );
@@ -19,7 +21,9 @@ public:
        void getCurrent(eServiceReference &ref);
        
        int getNextBeginningWithChar(char c);
-
+       int getPrevMarkerPos();
+       int getNextMarkerPos();
+       
                /* support for marked services */
        void initMarked();
        void addMarked(const eServiceReference &ref);
@@ -42,21 +46,56 @@ public:
        
                /* only in complex mode: */
        enum {
-               celIcon,
                celServiceNumber,
+               celMarkerPixmap,
+               celFolderPixmap,
+               celServiceEventProgressbar,
                celServiceName,
+               celServiceTypePixmap,
                celServiceInfo, // "now" event
                celElements
        };
-       
+
+       enum {
+               picDVB_S,
+               picDVB_T,
+               picDVB_C,
+               picServiceGroup,
+               picFolder,
+               picMarker,
+               picServiceEventProgressbar,
+               picElements
+       };
+
        void setElementPosition(int element, eRect where);
        void setElementFont(int element, gFont *font);
+       void setPixmap(int type, ePtr<gPixmap> &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,
+               serviceEventProgressbarColor,
+               serviceEventProgressbarColorSelected,
+               serviceEventProgressbarBorderColor,
+               serviceEventProgressbarBorderColorSelected,
+               serviceDescriptionColor,
+               serviceDescriptionColorSelected,
+               colorElements
+       };
+       
+       void setColor(int color, gRGB &col);
 protected:
        void cursorHome();
        void cursorEnd();
@@ -79,6 +118,9 @@ protected:
                /* for complex mode */
        eRect m_element_position[celElements];
        ePtr<gFont> m_element_font[celElements];
+       ePtr<gPixmap> m_pixmaps[picElements];
+       gRGB m_color[colorElements];
+       bool m_color_set[colorElements];
 private:
        typedef std::list<eServiceReference> list;
        
@@ -90,6 +132,7 @@ private:
        
        eSize m_itemsize;
        ePtr<iServiceHandler> m_service_center;
+       ePtr<iListableService> m_lst;
        
        eServiceReference m_root;
 
@@ -103,6 +146,8 @@ private:
        int m_numberoffset;
 
        eServiceReference m_is_playable_ignore;
+
+       int m_itemheight;
 };
 
 #endif