<map context="MovieSelectionActions">
<key id="KEY_MENU" mapto="contextMenu" flags="m" />
+ <key id="KEY_INFO" mapto="showEventInfo" flags="m" />
</map>
<map context="InfobarMovieListActions">
def getCurrentIndex(self):
return self.instance.getCurrentIndex()
+ def getCurrentEvent(self):
+ l = self.l.getCurrentSelection()
+ return l and l[0] and l[1] and l[1].getEvent(l[0])
+
def getCurrent(self):
l = self.l.getCurrentSelection()
return l and l[0]
def __init__(self, session, csel, service):
self.csel = csel
self.service = service
-
+
menu = [(_("back"), self.close), (_("delete..."), self.delete)]
-
+
for p in plugins.getPlugins(PluginDescriptor.WHERE_MOVIELIST):
menu.append((p.description, boundFunction(self.execPlugin, p)))
-
+
FixedMenu.__init__(self, session, _("Movie Menu"), menu)
self.skinName = "Menu"
-
+
def execPlugin(self, plugin):
plugin(session=self.session, service=self.service)
{
"cancel": self.abort,
"ok": self.movieSelected,
+ "showEventInfo": self.showEventInformation,
"contextMenu": self.doContext,
})
self["actions"].csel = self
self.lengthTimer = eTimer()
self.lengthTimer.timeout.get().append(self.updateLengthData)
-
+
+ def showEventInformation(self):
+ from Screens.EventView import EventViewSimple
+ from ServiceReference import ServiceReference
+ evt = self["list"].getCurrentEvent()
+ if evt:
+ self.session.open(EventViewSimple, evt, ServiceReference(self.getCurrent()))
+
def go(self):
# ouch. this should redraw our "Please wait..."-text.
# this is of course not the right way to do this.
#include <dvbsi++/component_descriptor.h>
#include <dvbsi++/descriptor_tag.h>
+#include <sys/types.h>
+#include <fcntl.h>
+
// static members / methods
std::string eServiceEvent::m_language = "de_DE";
return 0;
}
+RESULT eServiceEvent::parseFrom(const std::string filename, int tsidonid)
+{
+ if (!filename.empty())
+ {
+ int fd = ::open( filename.c_str(), O_RDONLY );
+ if ( fd > -1 )
+ {
+ __u8 buf[4096];
+ int rd = ::read(fd, buf, 4096);
+ ::close(fd);
+ if ( rd > 12 /*EIT_LOOP_SIZE*/ )
+ {
+ Event ev(buf);
+ parseFrom(&ev, tsidonid);
+ return 0;
+ }
+ }
+ }
+ return -1;
+}
+
std::string eServiceEvent::getBeginTimeString() const
{
tm t;
public:
#ifndef SWIG
RESULT parseFrom(Event *evt, int tsidonid=0);
+ RESULT parseFrom(const std::string filename, int tsidonid=0);
#endif
static void setEPGLanguage( const std::string language );
time_t getBeginTime() const { return m_begin; }
Hide the result only if there is another way to check for failure! */
+TEMPLATE_TYPEDEF(ePtr<eServiceEvent>, eServiceEventPtr);
+
class iStaticServiceInformation: public iObject
{
#ifdef SWIG
TEMPLATE_TYPEDEF(ePtr<iStaticServiceInformation>, iStaticServiceInformationPtr);
-TEMPLATE_TYPEDEF(ePtr<eServiceEvent>, eServiceEventPtr);
-
class iServiceInformation: public iObject
{
#ifdef SWIG
#include <byteswap.h>
#include <netinet/in.h>
-#include <dvbsi++/event_information_section.h>
-
#define INTERNAL_TELETEXT
#ifndef BYTE_ORDER
eStaticServiceDVBPVRInformation(const eServiceReference &ref);
RESULT getName(const eServiceReference &ref, std::string &name);
int getLength(const eServiceReference &ref);
-
+ RESULT getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &SWIG_OUTPUT, time_t start_time);
+
int getInfo(const eServiceReference &ref, int w);
std::string getInfoString(const eServiceReference &ref,int w);
};
}
}
+RESULT eStaticServiceDVBPVRInformation::getEvent(const eServiceReference &ref, ePtr<eServiceEvent> &evt, time_t start_time)
+{
+ if (!ref.path.empty())
+ {
+ ePtr<eServiceEvent> event = new eServiceEvent;
+ std::string filename = ref.path;
+ filename.erase(filename.length()-2, 2);
+ filename+="eit";
+ if (!event->parseFrom(filename, (m_parser.m_ref.getTransportStreamID().get()<<16)|m_parser.m_ref.getOriginalNetworkID().get()))
+ {
+ evt = event;
+ return 0;
+ }
+ }
+ evt = 0;
+ return -1;
+}
+
class eDVBPVRServiceOfflineOperations: public iServiceOfflineOperations
{
DECLARE_REF(eDVBPVRServiceOfflineOperations);
std::string filename = service.path;
filename.erase(filename.length()-2, 2);
filename+="eit";
- int fd = ::open( filename.c_str(), O_RDONLY );
- if ( fd > -1 )
+ ePtr<eServiceEvent> event = new eServiceEvent;
+ if (!event->parseFrom(filename, (service.getTransportStreamID().get()<<16)|service.getOriginalNetworkID().get()))
{
- __u8 buf[4096];
- int rd = ::read(fd, buf, 4096);
- ::close(fd);
- if ( rd > 12 /*EIT_LOOP_SIZE*/ )
- {
- Event ev(buf);
- ePtr<eServiceEvent> event = new eServiceEvent;
- ePtr<eServiceEvent> empty;
- event->parseFrom(&ev, (service.getTransportStreamID().get()<<16)|service.getOriginalNetworkID().get());
- m_event_handler.inject(event, 0);
- m_event_handler.inject(empty, 1);
- eDebug("injected");
- }
+ ePtr<eServiceEvent> empty;
+ m_event_handler.inject(event, 0);
+ m_event_handler.inject(empty, 1);
}
}
-
+
if (m_is_pvr)
loadCuesheet();