X-Git-Url: http://code.vuplus.com/gitweb/?a=blobdiff_plain;f=main%2Fenigma.cpp;h=29469eab72f29813b050c866ce1e6f9324d66232;hb=636a782d8920b4b52a881a4565c46c06f68785b5;hp=7543e451496d36ce5d6a8e88badf8afcf97f775f;hpb=d63d2c3c6cbbd574dda4f8b00ebe6c661735edd5;p=vuplus_dvbapp diff --git a/main/enigma.cpp b/main/enigma.cpp index 7543e45..29469ea 100644 --- a/main/enigma.cpp +++ b/main/enigma.cpp @@ -14,6 +14,7 @@ #include #include +#include class eMain: public eApplication, public Object { @@ -24,6 +25,9 @@ class eMain: public eApplication, public Object ePtr m_dvbdb; ePtr m_playservice; + ePtr m_nav; + ePtr m_conn_event; + ePtr m_serviceInformation; public: eMain() { @@ -35,6 +39,9 @@ public: ePtr service_center; eServiceCenter::getInstance(service_center); + assert(service_center); + m_nav = new eNavigation(service_center); +#if 0 if (service_center) { eServiceReference ref("2:0:1:0:0:0:0:0:0:0:/"); @@ -52,22 +59,79 @@ public: eDebug("%s", i->toString().c_str()); } } +#endif + m_nav->connectEvent(slot(*this, &eMain::event), m_conn_event); - eServiceReference ref("1:0:1:6de2:44d:1:c00000:0:0:0:"); +// eServiceReference ref("1:0:1:6de2:44d:1:c00000:0:0:0:"); + eServiceReference ref("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp3"); + eServiceReference ref1("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp31"); + eServiceReference ref2("4097:47:0:0:0:0:0:0:0:0:/sine_60s_100.mp32"); - if (service_center) + if (m_nav->enqueueService(ref)) + eDebug("play sucked around!"); + else + eDebug("play r00lz!"); + + m_nav->enqueueService(ref1); + m_nav->enqueueService(ref2); + m_nav->enqueueService(ref1); + } + + void event(eNavigation *nav, int ev) + { + assert(nav); + + ePtr playlist; + nav->getPlaylist(playlist); + if (playlist) { - if (service_center->play(ref, m_playservice)) - eDebug("play sucked around!"); - else - eDebug("play r00lz!"); - } else - eDebug("no service center: no play."); + eDebug("PLAYLIST:"); + ePlaylist::iterator i; + for (i=playlist->begin(); i != playlist->end(); ++i) + eDebug("%s %s", i == playlist->m_current ? "-->" : " ", i->toString().c_str()); + } + + switch (ev) + { + case eNavigation::evStopService: + /* very important: the old service should be deallocated, so clear *all* references to it */ + m_serviceInformation = 0; + eDebug("STOP service!"); + break; + case eNavigation::evNewService: + { + ePtr service; + nav->getCurrentService(service); + if (!service) + { + eDebug("no running service!"); + break; + } + if (service->getIServiceInformation(m_serviceInformation)) + { + eDebug("failed to get iserviceinformation"); + break; + } + eString name; + m_serviceInformation->getName(name); + eDebug("NEW running service: %s", name.c_str()); + break; + } + case eNavigation::evPlayFailed: + eDebug("play failed!"); + break; + case eNavigation::evPlaylistDone: + eDebug("playlist done"); + quit(); + break; + default: + eDebug("Navigation event %d", ev); + break; + } } ~eMain() { - } }; @@ -81,10 +145,13 @@ void object_dump() #endif int main() -{ +{ #ifdef OBJECT_DEBUG atexit(object_dump); #endif + eMain app; - return app.exec(); + int res = app.exec(); + eDebug("after exec"); + return res; }