Support focus animation for listbox
[vuplus_dvbapp] / lib / gui / elistbox.h
index 62461e1..17fce5c 100644 (file)
@@ -15,7 +15,7 @@ public:
                /* indices go from 0 to size().
                   the end is reached when the cursor is on size(), 
                   i.e. one after the last entry (this mimics 
-                  stl behaviour)
+                  stl behavior)
                   
                   cursors never invalidate - they can become invalid
                   when stuff is removed. Cursors will always try
@@ -26,6 +26,7 @@ public:
 protected:
        iListboxContent();
        friend class eListbox;
+       virtual void updateClip(gRegion &){ };
        virtual void cursorHome()=0;
        virtual void cursorEnd()=0;
        virtual int cursorMove(int count=1)=0;
@@ -54,12 +55,13 @@ protected:
 #endif
 };
 
+#ifndef SWIG
 struct eListboxStyle
 {
        ePtr<gPixmap> m_background, m_selection;
        int m_transparent_background;
-       gRGB m_background_color, m_foreground_color;
-       int m_background_color_set, m_foreground_color_set;
+       gRGB m_background_color, m_background_color_selected, m_foreground_color, m_foreground_color_selected;
+       int m_background_color_set, m_foreground_color_set, m_background_color_selected_set, m_foreground_color_selected_set;
 
                /*
                        {m_transparent_background m_background_color_set m_background}
@@ -69,7 +71,9 @@ struct eListboxStyle
                        {1 x 0} use transparent background
                        {1 x p} use transparent background picture
                */
+       ePtr<gFont> m_font;
 };
+#endif
 
 class eListbox: public eWidget
 {
@@ -99,7 +103,7 @@ public:
        }; */
 
        int getCurrentIndex();
-       void moveSelection(int how);
+       void moveSelection(long how);
        void moveSelectionTo(int index);
        void moveToEnd();
        bool atBegin();
@@ -119,13 +123,16 @@ public:
        void setSelectionEnable(int en);
 
        void setBackgroundColor(gRGB &col);
+       void setBackgroundColorSelected(gRGB &col);
        void setForegroundColor(gRGB &col);
-       void setTransparent(int t);
-       void setBackgroundPicture(gPixmap *pm);
-       void setSelectionPicture(gPixmap *pm);
+       void setForegroundColorSelected(gRGB &col);
+       void setBackgroundPicture(ePtr<gPixmap> &pixmap);
+       void setSelectionPicture(ePtr<gPixmap> &pixmap);
+       void setFont(gFont *font);
 
-       struct eListboxStyle *getLocalStyle(void);
 #ifndef SWIG
+       struct eListboxStyle *getLocalStyle(void);
+
                /* entryAdded: an entry was added *before* the given index. it's index is the given number. */
        void entryAdded(int index);
                /* entryRemoved: an entry with the given index was removed. */
@@ -135,6 +142,8 @@ public:
                /* the complete list changed. you should not attemp to keep the current index. */
        void entryReset(bool cursorHome=true);
 
+       int getEntryTop();
+       void invalidate(const gRegion &region = gRegion::invalidRegion());
 protected:
        int event(int event, void *data=0, void *data2=0);
        void recalcSize();
@@ -151,6 +160,9 @@ private:
        ePtr<iListboxContent> m_content;
        eSlider *m_scrollbar;
        eListboxStyle m_style;
+#ifdef USE_LIBVUGLES2
+       long m_dir;
+#endif
 #endif
 };