else:
return service
- def enqueueService(self, ref):
- return self.pnav.enqueueService(ref)
-
def getCurrentService(self):
service = self.pnav.getCurrentService()
def stopService(self):
self.pnav.stopService()
- def getPlaylist(self):
- playlist = ePlaylistPtr()
- if self.pnav.getPlaylist(playlist):
- return None
- return playlist
-
def pause(self, p):
return self.pnav.pause(p)
noinst_LIBRARIES = libenigma_nav.a
libenigma_nav_a_SOURCES = \
- core.cpp playlist.cpp pcore.cpp
+ core.cpp pcore.cpp
}
switch (event)
- {
+ {
case iPlayableService::evEnd:
- assert(m_playlist); /* we need to have a playlist */
-
- /* at first, kill the running service */
- stopService();
-
- /* our running main service stopped. identify what to do next. */
-
- /* unless the playlist current position is invalid (because there was */
- /* playlist, for example when the service was engaged with playService */
- if (m_playlist->m_current != m_playlist->end())
- ++m_playlist->m_current;
-
- /* was the current service the last one? */
- if (m_playlist->m_current == m_playlist->end())
- {
- m_event(this, evPlaylistDone);
- break;
- }
-
- /* there is another service in the playlist. play it. */
- RESULT res;
- res = playService(*m_playlist->m_current);
- if (res)
- m_event(this, evPlayFailed);
+// m_event(this, ev);
break;
case iPlayableService::evStart:
m_event(this, evNewService);
return res;
}
-RESULT eNavigation::enqueueService(const eServiceReference &service)
-{
- assert(m_playlist);
- /* check if we need to play after the service was enqueued. */
- int doplay = m_playlist->m_current == m_playlist->end();
-
- /* add the service to the playlist. the playlist's m_current */
- /* points either to a service before the last or 'doplay' is set. */
- m_playlist->push_back(service);
-
- if (doplay)
- {
- m_playlist->m_current = m_playlist->end();
- --m_playlist->m_current;
- return playService(*m_playlist->m_current);
- }
- return 0;
-}
-
RESULT eNavigation::connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection)
{
connection = new eConnection(this, m_event.connect(event));
return 0;
}
-RESULT eNavigation::getPlaylist(ePtr<ePlaylist> &playlist)
-{
- if (!m_playlist)
- return -1;
- playlist = m_playlist;
- return 0;
-}
-
RESULT eNavigation::stopService(void)
{
/* check if there is a running service... */
{
assert(serviceHandler);
m_servicehandler = serviceHandler;
- m_playlist = new ePlaylist;
-
- /* start with no current selection */
- m_playlist->m_current = m_playlist->end();
}
eNavigation::~eNavigation()
#include <lib/base/object.h>
#include <lib/service/iservice.h>
-#include <lib/nav/playlist.h>
#include <connection.h>
class eNavigation: public iObject, public Object
Signal2<void,eNavigation*,int> m_event;
ePtr<eConnection> m_service_event_conn;
void serviceEvent(iPlayableService* service, int event);
-
- ePtr<ePlaylist> m_playlist;
public:
enum
{
evStopService, /** the "current" service was just stopped and likes to be deallocated (clear refs!) */
evNewService, /** a new "current" service was just started */
evPlayFailed, /** the next service (in playlist) or the one given in playService failed to play */
- evPlaylistDone, /** the last service in the playlist was just played */
evUpdatedEventInfo, /** the "currently running" event info was updated */
evUpdatedInfo /** the program info of this service was updated */
};
RESULT playService(const eServiceReference &service);
- RESULT enqueueService(const eServiceReference &service);
RESULT connectEvent(const Slot2<void,eNavigation*,int> &event, ePtr<eConnection> &connection);
/* int connectServiceEvent(const Slot1<void,iPlayableService*,int> &event, ePtr<eConnection> &connection); */
RESULT getCurrentService(ePtr<iPlayableService> &service);
- RESULT getPlaylist(ePtr<ePlaylist> &playlist);
RESULT stopService(void);
RESULT recordService(const eServiceReference &ref, ePtr<iRecordableService> &service);
return m_core->recordService(ref, service);
}
-RESULT pNavigation::enqueueService(const eServiceReference &service)
-{
- return m_core->enqueueService(service);
-}
-
RESULT pNavigation::getCurrentService(ePtr<iPlayableService> &service)
{
return m_core->getCurrentService(service);
}
-RESULT pNavigation::getPlaylist(ePtr<ePlaylist> &playlist)
-{
- return m_core->getPlaylist(playlist);
-}
-
RESULT pNavigation::pause(int p)
{
return m_core->pause(p);
case eNavigation::evPlayFailed:
m_event(evPlayFailed);
break;
- case eNavigation::evPlaylistDone:
- m_event(evPlaylistDone);
- break;
case eNavigation::evUpdatedEventInfo:
m_event(evUpdatedEventInfo);
break;
evStopService, /** the "current" service was just stopped and likes to be deallocated (clear refs!) */
evNewService, /** a new "current" service was just started */
evPlayFailed, /** the next service (in playlist) or the one given in playService failed to play */
- evPlaylistDone, /** the last service in the playlist was just played */
evUpdatedEventInfo, /** the "currently running" event info was updated */
evUpdatedInfo, /** the program info of this service was updated */
};
RESULT playService(const eServiceReference &service);
SWIG_VOID(RESULT) recordService(const eServiceReference &ref, ePtr<iRecordableService> &SWIG_OUTPUT);
- RESULT enqueueService(const eServiceReference &service);
SWIG_VOID(RESULT) getCurrentService(ePtr<iPlayableService> &SWIG_OUTPUT);
- SWIG_VOID(RESULT) getPlaylist(ePtr<ePlaylist> &SWIG_OUTPUT);
RESULT stopService();
RESULT pause(int p);