X-Git-Url: http://code.vuplus.com/gitweb/?p=vuplus_dvbapp;a=blobdiff_plain;f=lib%2Fservice%2Flistboxservice.cpp;h=074b8cd061ebad70a59b2ba2798b4cb666870971;hp=f8ac0ff2ee904ecefb90e7cd70c886168153a6ba;hb=74f5884fdc5a23465cf40c27b5c069ff7d882746;hpb=ecb8af1618dc7f2b2be41ca2bd1667aa693d777a diff --git a/lib/service/listboxservice.cpp b/lib/service/listboxservice.cpp index f8ac0ff..074b8cd 100644 --- a/lib/service/listboxservice.cpp +++ b/lib/service/listboxservice.cpp @@ -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); @@ -531,12 +573,15 @@ void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const bool paintProgress = false; ePtr evt; + bool serviceAvail = true; + if (!marked && isPlayable && service_info && m_is_playable_ignore.valid() && !service_info->isPlayable(*m_cursor, m_is_playable_ignore)) { if (m_color_set[serviceNotAvail]) painter.setForegroundColor(m_color[serviceNotAvail]); else painter.setForegroundColor(gRGB(0xbbbbbb)); + serviceAvail = false; } if (selected && local_style && local_style->m_selection) @@ -582,6 +627,9 @@ void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const { if (service_info) service_info->getName(*m_cursor, text); +#ifdef USE_LIBVUGLES2 + painter.setFlush(text == ""); +#endif break; } case celServiceInfo: @@ -592,6 +640,13 @@ void eListboxServiceContent::paint(gPainter &painter, eWindowStyle &style, const if (!name.length()) continue; text = '(' + evt->getEventName() + ')'; + if (serviceAvail) + { + if (!selected && m_color_set[serviceDescriptionColor]) + painter.setForegroundColor(m_color[serviceDescriptionColor]); + else if (selected && m_color_set[serviceDescriptionColorSelected]) + painter.setForegroundColor(m_color[serviceDescriptionColorSelected]); + } } else continue;