{
eServiceReference tmp = *i;
std::string str = tmp.path;
- if ( (i->flags&eServiceReference::flagDirectory) == eServiceReference::flagDirectory )
+ if ( i->flags&eServiceReference::canDescent )
{
unsigned int p1 = str.find("FROM BOUQUET \"");
if (p1 == std::string::npos)
eDebug("only DVB Bouquets supported");
continue;
}
- if ( (tmp.flags&eServiceReference::flagDirectory) == eServiceReference::flagDirectory )
+ if ( tmp.flags&eServiceReference::canDescent )
{
unsigned int pos = tmp.path.rfind('/');
if ( pos != std::string::npos )
void eDVBDB::reloadBouquets()
{
m_bouquets.clear();
+ loadBouquet("groups.tv");
+ loadBouquet("groups.radio");
loadBouquet("bouquets.tv");
loadBouquet("bouquets.radio");
// create default bouquets when missing
int eDVBResourceManager::canAllocateChannel(const eDVBChannelID &channelid, const eDVBChannelID& ignore)
{
- int ret=3000;
+ int ret=30000;
if (m_cached_channel)
{
eDVBChannel *cache_chan = (eDVBChannel*)&(*m_cached_channel);
if ( di_param.m_diseqc_mode == eDVBSatelliteDiseqcParameters::V1_2 ) // ROTOR
rotor = true;
- ret = 1000;
+ ret=10000;
+ if (rotor && curRotorPos != -1)
+ ret -= abs(curRotorPos-sat.orbital_position);
}
else
{
csw = band;
- ret = 2000;
+ ret = 15000;
}
while (linked_prev_ptr != -1) // check for linked tuners..
if not csel.bouquet_mark_edit and not csel.movemode:
if not inBouquetRootList:
- if (csel.getCurrentSelection().flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory:
+ flags = csel.getCurrentSelection().flags
+ isPlayable = not ((flags & eServiceReference.isMarker) or (flags & eServiceReference.isDirectory))
+ if isPlayable:
if config.ParentalControl.configured.value:
if parentalControl.getProtectionLevel(csel.getCurrentSelection().toCompareString()) == -1:
menu.append((_("add to parental protection"), boundFunction(self.addParentalProtection, csel.getCurrentSelection())))
if not bouquetIterator.valid(): #end of list
break
self.bouquetNumOffsetCache[bouquetIterator.toString()]=offsetCount
- if ((bouquetIterator.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory):
+ if not (bouquetIterator.flags & eServiceReference.isDirectory):
continue
servicelist = serviceHandler.list(bouquetIterator)
if not servicelist is None:
s = list.getNext()
if not s.valid():
break
- if (s.flags & eServiceReference.isGroup):
- continue
- if (s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory:
+ if s.flags & eServiceReference.isDirectory:
info = serviceHandler.info(s)
if info:
bouquets.append((info.getName(s), s))
s = list.getNext()
if not s.valid():
break
- if (s.flags & eServiceReference.isGroup) and (s.flags & eServiceReference.flagDirectory) == eServiceReference.flagDirectory:
+ if (s.flags & eServiceReference.isGroup) and (s.flags & eServiceReference.mustDescent):
info = serviceHandler.info(s)
if info:
groups.append((info.getName(s), s))
bouquet = self.servicelist.appendDVBTypes(bouquetlist.getNext())
if not bouquet.valid(): #check end of list
break
- if (bouquet.flags & eServiceReference.flagDirectory) != eServiceReference.flagDirectory:
+ if not (bouquet.flags & eServiceReference.isDirectory):
continue
service, number = self.searchNumberHelper(serviceHandler, number, bouquet)
if not service is None:
ePtr<iStaticServiceInformation> service_info;
m_service_center->info(*m_cursor, service_info);
eServiceReference ref = *m_cursor;
- bool checkPlayable =
- (ref.flags & eServiceReference::flagDirectory) != eServiceReference::flagDirectory ||
- (ref.flags & eServiceReference::isGroup);
+ bool isPlayable = !(ref.flags & eServiceReference::isDirectory || ref.flags & eServiceReference::isMarker);
- if (checkPlayable && m_is_playable_ignore.valid() && service_info && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
+ if (isPlayable && m_is_playable_ignore.valid() && service_info && !service_info->isPlayable(*m_cursor, m_is_playable_ignore))
painter.setForegroundColor(gRGB(0xbbbbbb));
int xoffset=0; // used as offset when painting the folder/marker symbol
eRect area = m_element_position[p];
int correction = (area.height() - pixmap_size.height()) / 2;
- if (m_cursor->flags & eServiceReference::flagDirectory)
+ if (isPlayable)
+ {
+ if (e != celServiceTypePixmap)
+ continue;
+ m_element_position[celServiceInfo] = area;
+ m_element_position[celServiceInfo].setLeft(area.left() + pixmap_size.width() + 8);
+ m_element_position[celServiceInfo].setWidth(area.width() - pixmap_size.width() - 8);
+ }
+ else if (m_cursor->flags & eServiceReference::isDirectory)
{
if (e != celFolderPixmap)
continue;
continue;
}
else
- {
- if (e != celServiceTypePixmap)
- continue;
- m_element_position[celServiceInfo] = area;
- m_element_position[celServiceInfo].setLeft(area.left() + pixmap_size.width() + 8);
- m_element_position[celServiceInfo].setWidth(area.width() - pixmap_size.width() - 8);
- }
+ eFatal("unknown service type in listboxservice");
area.moveBy(offset);
painter.clip(area);
((const eServiceReferenceDVB&)ignore).getChannelID(chid_ignore);
for (std::list<eServiceReference>::iterator it(bouquet->m_services.begin()); it != bouquet->m_services.end(); ++it)
{
- int tmp=res->canAllocateChannel(chid, chid_ignore);
((const eServiceReferenceDVB&)*it).getChannelID(chid);
+ int tmp=res->canAllocateChannel(chid, chid_ignore);
+ eDebug("%d %s", tmp, it->toString().c_str());
if (tmp > cur)
{
m_playable_service = *it;
RESULT eDVBServiceList::startEdit(ePtr<iMutableServiceList> &res)
{
- if (m_parent.flags & eServiceReference::flagDirectory) // bouquet
+ if (m_parent.flags & eServiceReference::canDescent) // bouquet
{
ePtr<iDVBChannelList> db;
ePtr<eDVBResourceManager> resm;
RESULT eServiceFactoryDVB::info(const eServiceReference &ref, ePtr<iStaticServiceInformation> &ptr)
{
/* is a listable service? */
- if ((ref.flags & eServiceReference::flagDirectory) == eServiceReference::flagDirectory) // bouquet
+ if (ref.flags & eServiceReference::canDescent) // bouquet
{
if ( !ref.name.empty() ) // satellites or providers list
ptr = m_StaticServiceDVBInfo;