X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ddc3964ed95d01e72229dc9af968a327cd84e56c..defa1a765f48ec880b36b14a247b89649553c2ec:/lib/service/servicefs.cpp diff --git a/lib/service/servicefs.cpp b/lib/service/servicefs.cpp index f4a9b737..b0d53922 100644 --- a/lib/service/servicefs.cpp +++ b/lib/service/servicefs.cpp @@ -4,6 +4,7 @@ #include #include #include +#include #include #include #include @@ -11,6 +12,21 @@ #include #include + +class eStaticServiceFSInformation: public iStaticServiceInformation +{ + DECLARE_REF(eStaticServiceFSInformation); +public: + RESULT getName(const eServiceReference &ref, std::string &name); +}; + +DEFINE_REF(eStaticServiceFSInformation); + +RESULT eStaticServiceFSInformation::getName(const eServiceReference &ref, std::string &name) +{ + name = ref.path; +} + // eServiceFactoryFS eServiceFactoryFS::eServiceFactoryFS() @@ -20,6 +36,8 @@ eServiceFactoryFS::eServiceFactoryFS() eServiceCenter::getInstance(sc); if (sc) sc->addServiceFactory(eServiceFactoryFS::id, this); + + m_service_information = new eStaticServiceFSInformation(); } eServiceFactoryFS::~eServiceFactoryFS() @@ -52,12 +70,19 @@ RESULT eServiceFactoryFS::list(const eServiceReference &ref, ePtr &ptr) +{ + ptr = m_service_information; + return 0; +} + // eServiceFS DEFINE_REF(eServiceFS); eServiceFS::eServiceFS(const char *path): path(path) { + m_list_valid = 0; } eServiceFS::~eServiceFS() @@ -97,16 +122,36 @@ 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; } +RESULT eServiceFS::getNext(eServiceReference &ptr) +{ + if (!m_list_valid) + { + m_list_valid = 1; + int res = getContent(m_list); + if (res) + return res; + } + + if (!m_list.size()) + return -ERANGE; + + ptr = m_list.front(); + m_list.pop_front(); + return 0; +} + eAutoInitPtr init_eServiceFactoryFS(eAutoInitNumbers::service+1, "eServiceFactoryFS");