1 #include <lib/nav/core.h>
2 #include <lib/base/eerror.h>
4 void eNavigation::serviceEvent(iPlayableService* service, int event)
6 if (service != m_runningService)
8 eDebug("nav: event for other service");
14 case iPlayableService::evEnd:
17 case iPlayableService::evStart:
18 m_event(this, evNewService);
20 case iPlayableService::evUpdatedEventInfo:
21 m_event(this, evUpdatedEventInfo);
23 case iPlayableService::evUpdatedInfo:
24 m_event(this, evUpdatedInfo);
26 case iPlayableService::evSeekableStatusChanged:
27 m_event(this, evSeekableStatusChanged);
34 RESULT eNavigation::playService(const eServiceReference &service)
38 assert(m_servicehandler);
39 RESULT res = m_servicehandler->play(service, m_runningService);
42 m_runningService->connectEvent(slot(*this, &eNavigation::serviceEvent), m_service_event_conn);
43 res = m_runningService->start();
48 RESULT eNavigation::connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection)
50 connection = new eConnection(this, m_event.connect(event));
54 RESULT eNavigation::getCurrentService(ePtr<iPlayableService> &service)
56 service = m_runningService;
60 RESULT eNavigation::stopService(void)
62 /* check if there is a running service... */
63 if (!m_runningService)
66 m_event(this, evStopService);
70 m_service_event_conn = 0;
74 RESULT eNavigation::recordService(const eServiceReference &ref, ePtr<iRecordableService> &service)
76 assert(m_servicehandler);
77 RESULT res = m_servicehandler->record(ref, service);
78 eDebug("record: %d", res);
84 RESULT eNavigation::pause(int dop)
86 if (!m_runningService)
88 ePtr<iPauseableService> p;
89 if (m_runningService->pause(p))
97 eNavigation::eNavigation(iServiceHandler *serviceHandler)
99 assert(serviceHandler);
100 m_servicehandler = serviceHandler;
103 eNavigation::~eNavigation()
107 DEFINE_REF(eNavigation);