return false;
}
-
-class eStaticServiceDVBBouquetInformation: public iStaticServiceInformation
-{
- DECLARE_REF(eStaticServiceDVBBouquetInformation);
-public:
- eServiceReference m_playable_service;
- RESULT getName(const eServiceReference &ref, std::string &name);
- int getLength(const eServiceReference &ref);
- int isPlayable(const eServiceReference &ref, const eServiceReference &ignore);
-};
-
DEFINE_REF(eStaticServiceDVBBouquetInformation);
RESULT eStaticServiceDVBBouquetInformation::getName(const eServiceReference &ref, std::string &name)
if (eDVBResourceManager::getInstance(res))
{
eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. no resource manager!");
- return false;
+ return 0;
}
if (res->getChannelList(db))
{
eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. no channel list!");
- return false;
+ return 0;
}
eBouquet *bouquet=0;
if (db->getBouquet(ref, bouquet))
{
eDebug("eStaticServiceDVBBouquetInformation::isPlayable failed.. getBouquet failed!");
- return false;
+ return 0;
}
+ int cur=0;
eDVBChannelID chid, chid_ignore;
((const eServiceReferenceDVB&)ignore).getChannelID(chid_ignore);
for (std::list<eServiceReference>::iterator it(bouquet->m_services.begin()); it != bouquet->m_services.end(); ++it)
{
- m_playable_service = *it;
((const eServiceReferenceDVB&)*it).getChannelID(chid);
- if (res->canAllocateChannel(chid, chid_ignore))
- return true;
+ int tmp=res->canAllocateChannel(chid, chid_ignore);
+ if (tmp > cur)
+ {
+ m_playable_service = *it;
+ cur = tmp;
+ }
}
+ if (cur)
+ return cur;
}
m_playable_service = eServiceReference();
- return false;
+ return 0;
}
int eStaticServiceDVBBouquetInformation::getLength(const eServiceReference &ref)
return -1;
}
+#include <lib/dvb/epgcache.h>
+
+RESULT eStaticServiceDVBBouquetInformation::getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &ptr, time_t start_time)
+{
+ return eEPGCache::getInstance()->lookupEventTime(ref, start_time, ptr);
+}
+
class eStaticServiceDVBPVRInformation: public iStaticServiceInformation
{
DECLARE_REF(eStaticServiceDVBPVRInformation);
RESULT getName(const eServiceReference &ref, std::string &name);
int getLength(const eServiceReference &ref);
RESULT getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &SWIG_OUTPUT, time_t start_time);
-
+ int isPlayable(const eServiceReference &ref, const eServiceReference &ignore) { return 1; }
int getInfo(const eServiceReference &ref, int w);
std::string getInfoString(const eServiceReference &ref,int w);
};
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;