1 #include <lib/nav/core.h>
3 void eNavigation::serviceEvent(iPlayableService* service, int event)
5 if (service != m_runningService)
7 eDebug("nav: event for other service");
13 case iPlayableService::evEnd:
14 /* our running main service stopped. */
15 if (!m_playlist.empty())
16 m_playlist.erase(m_playlist.begin());
17 if (!m_playlist.empty())
20 res = playService(m_playlist.front());
22 m_event(this, evPlayFailed);
24 m_event(this, evPlaylistDone);
26 case iPlayableService::evStart:
27 m_event(this, evNewService);
34 RESULT eNavigation::playService(const eServiceReference &service)
36 RESULT res = m_servicehandler->play(service, m_runningService);
39 m_runningService->connectEvent(slot(*this, &eNavigation::serviceEvent), m_service_event_conn);
40 res = m_runningService->start();
45 RESULT eNavigation::enqueueService(const eServiceReference &service)
47 int doplay = m_playlist.empty();
48 m_playlist.push_back(service);
50 return playService(m_playlist.front());
54 RESULT eNavigation::connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection)
56 connection = new eConnection(m_event.connect(event));
60 RESULT eNavigation::getCurrentService(ePtr<iPlayableService> &service)
62 service = m_runningService;
66 RESULT eNavigation::pause(int dop)
68 if (!m_runningService)
70 ePtr<iPauseableService> p;
71 if (m_runningService->getIPausableService(p))
79 eNavigation::eNavigation(iServiceHandler *serviceHandler)
81 m_servicehandler = serviceHandler;
84 eNavigation::~eNavigation()
88 DEFINE_REF(eNavigation);