Support fast channel change.
[vuplus_dvbapp] / lib / service / listboxservice.cpp
index cc8c32b..7944503 100644 (file)
@@ -99,6 +99,48 @@ void eListboxServiceContent::getCurrent(eServiceReference &ref)
                ref = eServiceReference();
 }
 
+void eListboxServiceContent::getPrev(eServiceReference &ref)
+{
+       if (cursorValid())
+       {
+               list::iterator cursor(m_cursor);
+               if (cursor == m_list.begin())
+               {
+                       cursor = m_list.end();
+               }
+               ref = *(--cursor);
+       }
+       else
+               ref = eServiceReference();
+}
+
+void eListboxServiceContent::getNext(eServiceReference &ref)
+{
+       if (cursorValid())
+       {
+               list::iterator cursor(m_cursor);
+               cursor++;
+               if (cursor == m_list.end())
+               {
+                       cursor = m_list.begin();
+               }
+               ref = *(cursor);
+       }
+       else
+               ref = eServiceReference();
+}
+
+PyObject *eListboxServiceContent::getList()
+{
+       ePyObject result = PyList_New(m_list.size());
+       int pos=0;
+       for (list::iterator it(m_list.begin()); it != m_list.end(); ++it)
+       {
+               PyList_SET_ITEM(result, pos++, NEW_eServiceReference(*it));
+       }
+       return result;
+}
+
 int eListboxServiceContent::getNextBeginningWithChar(char c)
 {
 //     printf("Char: %c\n", c);