d05eef19c70475a541d3ecf30478e2f9f7dbe7a6
[vuplus_dvbapp] / lib / service / servicefs.h
1 #ifndef __servicefs_h
2 #define __servicefs_h
3
4 #include <lib/service/iservice.h>
5
6 class eServiceFactoryFS: public iServiceHandler
7 {
8 DECLARE_REF(eServiceFactoryFS);
9 public:
10         eServiceFactoryFS();
11         virtual ~eServiceFactoryFS();
12         enum { id = 0x2 };
13
14                 // iServiceHandler
15         RESULT play(const eServiceReference &, ePtr<iPlayableService> &ptr);
16         RESULT record(const eServiceReference &, ePtr<iRecordableService> &ptr);
17         RESULT list(const eServiceReference &, ePtr<iListableService> &ptr);
18         RESULT info(const eServiceReference &, ePtr<iStaticServiceInformation> &ptr);
19         RESULT offlineOperations(const eServiceReference &, ePtr<iServiceOfflineOperations> &ptr);
20 private:
21         ePtr<iStaticServiceInformation> m_service_information;
22 };
23
24 class eServiceFS: public iListableService
25 {
26 DECLARE_REF(eServiceFS);
27 private:
28         std::string path;
29         friend class eServiceFactoryFS;
30         eServiceFS(const char *path, const char *additional_extensions=0);
31         std::map<int, std::list<std::string> > m_additional_extensions;
32         
33         int m_list_valid;
34         std::list<eServiceReference> m_list;
35         int getServiceTypeForExtension(const char *str);
36         int getServiceTypeForExtension(const std::string &str);
37 public:
38         virtual ~eServiceFS();
39
40         RESULT getContent(std::list<eServiceReference> &list, bool sorted=false);
41         PyObject *getContent(const char *format, bool sorted=false);
42         RESULT getNext(eServiceReference &ptr);
43         int compareLessEqual(const eServiceReference &, const eServiceReference &);
44         RESULT startEdit(ePtr<iMutableServiceList> &);
45 };
46
47 #endif