remove never used playlist stuff
[enigma2.git] / lib / nav / core.cpp
1 #include <lib/nav/core.h>
2 #include <lib/base/eerror.h>
3
4 void eNavigation::serviceEvent(iPlayableService* service, int event)
5 {
6         if (service != m_runningService)
7         {
8                 eDebug("nav: event for other service");
9                 return;
10         }
11
12         switch (event)
13         {       
14         case iPlayableService::evEnd:
15 //              m_event(this, ev);
16                 break;
17         case iPlayableService::evStart:
18                 m_event(this, evNewService);
19                 break;
20         case iPlayableService::evUpdatedEventInfo:
21                 m_event(this, evUpdatedEventInfo);
22                 break;
23         case iPlayableService::evUpdatedInfo:
24                 m_event(this, evUpdatedInfo);
25                 break;
26         default:
27                 break;
28         }
29 }
30
31 RESULT eNavigation::playService(const eServiceReference &service)
32 {
33         stopService();
34         
35         assert(m_servicehandler);
36         RESULT res = m_servicehandler->play(service, m_runningService);
37         if (m_runningService)
38         {
39                 m_runningService->connectEvent(slot(*this, &eNavigation::serviceEvent), m_service_event_conn);
40                 res = m_runningService->start();
41         }
42         return res;
43 }
44
45 RESULT eNavigation::connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection)
46 {
47         connection = new eConnection(this, m_event.connect(event));
48         return 0;
49 }
50
51 RESULT eNavigation::getCurrentService(ePtr<iPlayableService> &service)
52 {
53         service = m_runningService;
54         return 0;
55 }
56
57 RESULT eNavigation::stopService(void)
58 {
59                 /* check if there is a running service... */
60         if (!m_runningService)
61                 return 1;
62                         /* send stop event */
63         m_event(this, evStopService);
64
65                 /* kill service. */
66         m_runningService = 0;
67         m_service_event_conn = 0;
68         return 0;
69 }
70
71 RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordableService> &service)
72 {
73         assert(m_servicehandler);
74         RESULT res = m_servicehandler->record(ref, service);
75         eDebug("record: %d", res);
76         if (res)
77                 service = 0;
78         return res;
79 }
80
81 RESULT eNavigation::pause(int dop)
82 {
83         if (!m_runningService)
84                 return -1;
85         ePtr<iPauseableService> p;
86         if (m_runningService->pause(p))
87                 return -2;
88         if (dop)
89                 return p->pause();
90         else
91                 return p->unpause();
92 }
93
94 eNavigation::eNavigation(iServiceHandler *serviceHandler)
95 {
96         assert(serviceHandler);
97         m_servicehandler = serviceHandler;
98 }
99
100 eNavigation::~eNavigation()
101 {
102 }
103
104 DEFINE_REF(eNavigation);