From 244459c4b2588ac9ca4b3fcbac05a2f8a7ee1641 Mon Sep 17 00:00:00 2001 From: Felix Domke Date: Fri, 29 Jul 2005 15:33:27 +0000 Subject: - split out meta parser - movie selection works now - service information for pvr services work --- lib/service/servicedvb.cpp | 47 +++++++++++++++++++++++++++++++++++++++------- lib/service/servicefs.cpp | 17 ++++++++++------- 2 files changed, 50 insertions(+), 14 deletions(-) (limited to 'lib/service') diff --git a/lib/service/servicedvb.cpp b/lib/service/servicedvb.cpp index 5bd25f67..92e26cfa 100644 --- a/lib/service/servicedvb.cpp +++ b/lib/service/servicedvb.cpp @@ -10,6 +10,31 @@ #include #include +#include + +class eStaticServiceDVBPVRInformation: public iStaticServiceInformation +{ + DECLARE_REF(eStaticServiceDVBPVRInformation); + eServiceReference m_ref; + eDVBMetaParser m_parser; +public: + eStaticServiceDVBPVRInformation(const eServiceReference &ref); + RESULT getName(const eServiceReference &ref, std::string &name); +}; + +DEFINE_REF(eStaticServiceDVBPVRInformation); + +eStaticServiceDVBPVRInformation::eStaticServiceDVBPVRInformation(const eServiceReference &ref) +{ + m_ref = ref; + m_parser.parseFile(ref.path); +} + +RESULT eStaticServiceDVBPVRInformation::getName(const eServiceReference &ref, std::string &name) +{ + ASSERT(ref == m_ref); + name = m_parser.m_name.size() ? m_parser.m_name : ref.path; +} DEFINE_REF(eServiceFactoryDVB) @@ -109,13 +134,21 @@ RESULT eServiceFactoryDVB::list(const eServiceReference &ref, ePtr &ptr) { - ePtr service; - int r = lookupService(service, ref); - if (r) - return r; - /* eDVBService has the iStaticServiceInformation interface, so we pass it here. */ - ptr = service; - return 0; + /* do we have a PVR service? */ + if (ref.path.size()) + { + ptr = new eStaticServiceDVBPVRInformation(ref); + return 0; + } else + { + ePtr service; + int r = lookupService(service, ref); + if (r) + return r; + /* eDVBService has the iStaticServiceInformation interface, so we pass it here. */ + ptr = service; + return 0; + } } RESULT eServiceFactoryDVB::lookupService(ePtr &service, const eServiceReference &ref) diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp index 739dd0a6..b0d53922 100644 --- a/lib/service/servicefs.cpp +++ b/lib/service/servicefs.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -121,13 +122,15 @@ RESULT eServiceFS::getContent(std::list &list) list.push_back(service); } else { - eServiceReference service(eServiceFactoryFS::id, - eServiceReference::isDirectory| - eServiceReference::canDescent|eServiceReference::mustDescent| - eServiceReference::shouldSort|eServiceReference::sort1, - filename); - service.data[0] = 0; - list.push_back(service); + /* FIIIIIX ME */ + if (filename.substr(filename.size()-3) == ".ts") + { + eServiceReference service(eServiceFactoryDVB::id, + 0, + filename); + service.data[0] = 0; + list.push_back(service); + } } } return 0; -- cgit v1.2.3