X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/91d875c1fe21ae2333475c74d46215b2ad3063cd..54e57557c7867d3d492ce9bd658ec2d672cd0168:/lib/service/event.cpp diff --git a/lib/service/event.cpp b/lib/service/event.cpp index e76ea315..81a8d4bb 100644 --- a/lib/service/event.cpp +++ b/lib/service/event.cpp @@ -6,9 +6,11 @@ #include #include #include +#include #include DEFINE_REF(eServiceEvent); +DEFINE_REF(eComponentData); const char MAX_LANG = 37; /* OSD language (see /share/locales/locales) to iso639 conversion table */ @@ -109,18 +111,30 @@ bool eServiceEvent::loadLanguage(Event *evt, std::string lang, int tsidonid) { switch ((*desc)->getTag()) { + case COMPONENT_DESCRIPTOR: + { + const ComponentDescriptor *cp = (ComponentDescriptor*)*desc; + eComponentData data; + data.m_streamContent = cp->getStreamContent(); + data.m_componentType = cp->getComponentType(); + data.m_componentTag = cp->getComponentTag(); + data.m_iso639LanguageCode = cp->getIso639LanguageCode(); + data.m_text = convertDVBUTF8(cp->getText()); + m_component_data.push_back(data); + break; + } case LINKAGE_DESCRIPTOR: { const LinkageDescriptor *ld = (LinkageDescriptor*)*desc; if ( ld->getLinkageType() == 0xB0 ) { linkage_service s; - s.onid = ld->getOriginalNetworkId(); - s.tsid = ld->getTransportStreamId(); - s.sid = ld->getServiceId(); + s.m_onid = ld->getOriginalNetworkId(); + s.m_tsid = ld->getTransportStreamId(); + s.m_sid = ld->getServiceId(); const PrivateDataByteVector *privateData = ld->getPrivateDataBytes(); - s.description.assign((const char*)&((*privateData)[0]), privateData->size()); + s.m_description.assign((const char*)&((*privateData)[0]), privateData->size()); m_linkage_services.push_back(s); } break; @@ -158,7 +172,7 @@ RESULT eServiceEvent::parseFrom(Event *evt, int tsidonid) return 0; } -std::string eServiceEvent::getBeginTimeString() +std::string eServiceEvent::getBeginTimeString() const { tm t; localtime_r(&m_begin, &t); @@ -169,4 +183,20 @@ std::string eServiceEvent::getBeginTimeString() return std::string(tmp, 12); } +RESULT eServiceEvent::getComponentData(ePtr &dest, int tagnum) const +{ + std::list::const_iterator it = + m_component_data.begin(); + for(;it != m_component_data.end(); ++it) + { + if ( it->m_componentTag == tagnum ) + { + dest=new eComponentData(*it); + return 0; + } + } + dest=0; + return -1; +} + DEFINE_REF(eDebugClass);