#include <lib/service/service.h>
#include <lib/gdi/font.h>
#include <lib/dvb/epgcache.h>
+#include <lib/dvb/pmt.h>
void eListboxServiceContent::setRoot(const eServiceReference &root)
{
m_service_center->info(*i, service_info);
service_info->getName(*i, text);
// printf("%c\n", text.c_str()[0]);
- if (text.c_str()[0] == c)
- return index;
+ int idx=0;
+ int len=text.length();
+ while ( idx <= len )
+ {
+ char cc = text[idx++];
+ if ( cc >= 33 && cc < 127)
+ {
+ if (cc == c)
+ return index;
+ break;
+ }
+ }
}
return 0;
}
void eListboxServiceContent::sort()
{
ePtr<iListableService> lst;
- if (!m_service_center->list(m_root, lst))
- {
+ if (!m_service_center->list(m_root, lst))
+ {
m_list.sort(iListableServiceCompare(lst));
/* FIXME: is this really required or can we somehow keep the current entry? */
cursorHome();
DEFINE_REF(eListboxServiceContent);
eListboxServiceContent::eListboxServiceContent()
- :epgcache(eEPGCache::getInstance()), m_visual_mode(visModeSimple), m_size(0), m_current_marked(false), m_numberoffset(0)
+ :m_visual_mode(visModeSimple), m_size(0), m_current_marked(false), m_numberoffset(0)
{
cursorHome();
eServiceCenter::getInstance(m_service_center);
{
cursorHome();
cursorMove(n);
-
return 0;
}
{
painter.clip(eRect(offset, m_itemsize));
+ bool tuneable=true;
+
+#if 0
+ if (m_res_mgr && cursorValid() && !((m_cursor->flags & eServiceReference::flagDirectory) == eServiceReference::flagDirectory))
+ {
+ eServiceReferenceDVB &ref = (eServiceReferenceDVB&) *m_cursor;
+ eDVBChannelID chid;
+ ref.getChannelID(chid);
+ tuneable = m_res_mgr->canAllocateChannel(chid);
+ }
+#endif
+
if (m_current_marked && selected)
style.setStyle(painter, eWindowStyle::styleListboxMarked);
else if (cursorValid() && isMarked(*m_cursor))
style.setStyle(painter, eWindowStyle::styleListboxMarked);
else
+ {
style.setStyle(painter, selected ? eWindowStyle::styleListboxSelected : eWindowStyle::styleListboxNormal);
+ if (!tuneable)
+ painter.setForegroundColor(gRGB(0xbbbbbb));
+ }
painter.clear();
if (cursorValid())
case celServiceInfo:
{
ePtr<eServiceEvent> evt;
- time_t t=-1;
- if ( !epgcache->lookupEventTime(*m_cursor, t, evt) )
+ if ( !service_info->getEvent(*m_cursor, evt) )
text = '(' + evt->getEventName() + ')';
else
continue;