recording service events now working
[enigma2.git] / lib / nav / core.h
1 #ifndef __nav_core_h
2 #define __nav_core_h
3
4 #include <lib/base/object.h>
5 #include <lib/service/iservice.h>
6 #include <connection.h>
7 #include <map>
8
9 class eNavigation: public iObject, public Object
10 {
11         DECLARE_REF(eNavigation);
12 private:
13         ePtr<iServiceHandler> m_servicehandler;
14
15         ePtr<iPlayableService> m_runningService;
16         Signal1<void,int> m_event;
17         ePtr<eConnection> m_service_event_conn;
18         void serviceEvent(iPlayableService* service, int event);
19
20         std::map<ePtr<iRecordableService>, ePtr<eConnection>, std::less<iRecordableService*> > m_recordings;
21         Signal2<void,ePtr<iRecordableService>,int> m_record_event;
22         void recordEvent(iRecordableService* service, int event);
23 public:
24         
25         RESULT playService(const eServiceReference &service);
26         RESULT connectEvent(const Slot1<void,int> &event, ePtr<eConnection> &connection);
27         RESULT connectRecordEvent(const Slot2<void,ePtr<iRecordableService>,int> &event, ePtr<eConnection> &connection);
28 /*      int connectServiceEvent(const Slot1<void,iPlayableService*,int> &event, ePtr<eConnection> &connection); */
29         RESULT getCurrentService(ePtr<iPlayableService> &service);
30         RESULT stopService(void);
31         
32         RESULT recordService(const eServiceReference &ref, ePtr<iRecordableService> &service);
33         RESULT stopRecordService(ePtr<iRecordableService> &service);
34         PyObject *getRecordings(void);
35         
36         RESULT pause(int p);
37         eNavigation(iServiceHandler *serviceHandler);
38         virtual ~eNavigation();
39 };
40
41 #endif