Support focus animation for listbox
[vuplus_dvbapp] / lib / gui / elistbox.cpp
index e8a0dad..f241e6f 100644 (file)
@@ -2,6 +2,9 @@
 #include <lib/gui/elistboxcontent.h>
 #include <lib/gui/eslider.h>
 #include <lib/actions/action.h>
+#ifdef USE_LIBVUGLES2
+#include "vuplus_gles.h"
+#endif
 
 eListbox::eListbox(eWidget *parent) :
        eWidget(parent), m_scrollbar_mode(showNever), m_prev_scrollbar_page(-1),
@@ -105,6 +108,9 @@ void eListbox::moveSelection(long dir)
        int oldtop = m_top;
        int oldsel = m_selected;
                /* first, move cursor */
+#ifdef USE_LIBVUGLES2
+       m_dir = dir;
+#endif
        switch (dir)
        {
        case moveUp:
@@ -302,7 +308,7 @@ int eListbox::event(int event, void *data, void *data2)
                
                if (!m_content)
                        return eWidget::event(event, data, data2);
-               assert(m_content);
+               ASSERT(m_content);
                
                getStyle(style);
                
@@ -323,6 +329,14 @@ int eListbox::event(int event, void *data, void *data2)
 
                        if (!entry_clip_rect.empty())
                                m_content->paint(painter, *style, ePoint(0, y), m_selected == m_content->cursorGet() && m_content->size() && m_selection_enabled);
+#ifdef USE_LIBVUGLES2
+                       if (m_selected == m_content->cursorGet() && m_content->size() && m_selection_enabled) {
+                               ePoint pos = getAbsolutePosition();
+                               painter.sendShowItem(m_dir, ePoint(pos.x(), pos.y() + y), eSize(m_scrollbar && m_scrollbar->isVisible() ? size().width() - m_scrollbar->size().width() : size().width(), m_itemheight));
+                               gles_set_animation_listbox_current(pos.x(), pos.y() + y, m_scrollbar && m_scrollbar->isVisible() ? size().width() - m_scrollbar->size().width() : size().width(), m_itemheight);
+                               m_dir = justCheck;
+                       }
+#endif
 
                                /* (we could clip with entry_clip_rect, but 
                                   this shouldn't change the behavior of any
@@ -480,6 +494,11 @@ void eListbox::entryReset(bool selectionHome)
        invalidate();
 }
 
+void eListbox::setFont(gFont *font)
+{
+       m_style.m_font = font;
+}
+
 void eListbox::setBackgroundColor(gRGB &col)
 {
        m_style.m_background_color = col;