add FileList component for browsing files and directories
[enigma2.git] / lib / python / Screens / EventView.py
index 275b8952008cad50d6aa3a7e17cd3ae475238a92..31e97fa6290e9b5b11788eecb271a3fc4f277412 100644 (file)
@@ -1,19 +1,26 @@
 from Screen import Screen
 from Components.ActionMap import ActionMap
 from Screen import Screen
 from Components.ActionMap import ActionMap
+from Components.Button import Button
 from Components.Label import Label
 from Components.ScrollLabel import ScrollLabel
 from enigma import eServiceEventPtr
 from ServiceReference import ServiceReference
 from Components.Label import Label
 from Components.ScrollLabel import ScrollLabel
 from enigma import eServiceEventPtr
 from ServiceReference import ServiceReference
+from RecordTimer import RecordTimerEntry, parseEvent
+from TimerEntry import TimerEntry
 
 
-class EventView(Screen):
-       def __init__(self, session, Event, Ref, callback=None):
-               Screen.__init__(self, session)
+class EventViewBase:
+       def __init__(self, Event, Ref, callback=None):
                self.cbFunc = callback
                self.cbFunc = callback
-               self.currentService=None
+               self.currentService=Ref
+               self.event = Event
                self["epg_description"] = ScrollLabel()
                self["datetime"] = Label()
                self["channel"] = Label()
                self["duration"] = Label()
                self["epg_description"] = ScrollLabel()
                self["datetime"] = Label()
                self["channel"] = Label()
                self["duration"] = Label()
+               self["key_red"] = Button("")
+               self["key_green"] = Button(_("Add Timer"))
+               self["key_yellow"] = Button("")
+               self["key_blue"] = Button("")
                self["actions"] = ActionMap(["OkCancelActions", "EventViewActions"],
                        {
                                "cancel": self.close,
                self["actions"] = ActionMap(["OkCancelActions", "EventViewActions"],
                        {
                                "cancel": self.close,
@@ -21,18 +28,32 @@ class EventView(Screen):
                                "pageUp": self.pageUp,
                                "pageDown": self.pageDown,
                                "prevEvent": self.prevEvent,
                                "pageUp": self.pageUp,
                                "pageDown": self.pageDown,
                                "prevEvent": self.prevEvent,
-                               "nextEvent": self.nextEvent
+                               "nextEvent": self.nextEvent,
+                               "timerAdd": self.timerAdd
                        })
                        })
-               self.setEvent(Event)
-               self.setService(Ref)
+               self.onShown.append(self.onCreate)
+
+       def onCreate(self):
+               self.setEvent(self.event)
+               self.setService(self.currentService)
 
        def prevEvent(self):
                if self.cbFunc is not None:
 
        def prevEvent(self):
                if self.cbFunc is not None:
-                       self.cbFunc(self.setEvent, -1)
+                       self.cbFunc(self.setEvent, self.setService, -1)
 
        def nextEvent(self):
                if self.cbFunc is not None:
 
        def nextEvent(self):
                if self.cbFunc is not None:
-                       self.cbFunc(self.setEvent, +1)
+                       self.cbFunc(self.setEvent, self.setService, +1)
+
+       def timerAdd(self):
+               newEntry = RecordTimerEntry(self.currentService, *parseEvent(self.event))
+               self.session.openWithCallback(self.timerEditFinished, TimerEntry, newEntry)
+
+       def timerEditFinished(self, answer):
+               if (answer[0]):
+                       self.session.nav.RecordTimer.record(answer[1])
+               else:
+                       print "Timeredit aborted"
 
        def setService(self, service):
                self.currentService=service
 
        def setService(self, service):
                self.currentService=service
@@ -40,21 +61,45 @@ class EventView(Screen):
                if name is not None:
                        self["channel"].setText(name)
                else:
                if name is not None:
                        self["channel"].setText(name)
                else:
-                       self["channel"].setText("unknown service")
+                       self["channel"].setText(_("unknown service"))
 
        def setEvent(self, event):
 
        def setEvent(self, event):
-#              FIXME .. how to set eWindow titlebar?
-#              self.instance.setTitle(event.getEventName())
-               text = event.getShortDescription()
-               if len(text) > 0:
-                       text = text + '\n\n'
-               text = text + event.getExtendedDescription()
+               self.event = event
+               text = event.getEventName()
+               short = event.getShortDescription()
+               ext = event.getExtendedDescription()
+               if len(short) > 0 and short != text:
+                       text = text + '\n\n' + short
+               if len(ext) > 0:
+                       if len(text) > 0:
+                               text = text + '\n\n'
+                       text = text + ext
+               self.session.currentDialog.instance.setTitle(event.getEventName())
                self["epg_description"].setText(text)
                self["datetime"].setText(event.getBeginTimeString())
                self["epg_description"].setText(text)
                self["datetime"].setText(event.getBeginTimeString())
-               self["duration"].setText("%d min"%(event.getDuration()/60))
+               self["duration"].setText(_("%d min")%(event.getDuration()/60))
 
        def pageUp(self):
                self["epg_description"].pageUp()
 
        def pageUp(self):
                self["epg_description"].pageUp()
-       
+
        def pageDown(self):
                self["epg_description"].pageDown()
        def pageDown(self):
                self["epg_description"].pageDown()
+
+class EventViewSimple(Screen, EventViewBase):
+       def __init__(self, session, Event, Ref, callback=None):
+               Screen.__init__(self, session)
+               self.skinName = "EventView"
+               EventViewBase.__init__(self, Event, Ref, callback)
+
+class EventViewEPGSelect(Screen, EventViewBase):
+       def __init__(self, session, Event, Ref, callback=None, singleEPGCB=None, multiEPGCB=None):
+               Screen.__init__(self, session)
+               self.skinName = "EventView"
+               EventViewBase.__init__(self, Event, Ref, callback)
+               self["key_yellow"].setText(_("Single EPG"))
+               self["key_blue"].setText(_("Multi EPG"))
+               self["epgactions"] = ActionMap(["EventViewEPGActions"],
+                       {
+                               "openSingleServiceEPG": singleEPGCB,
+                               "openMultiServiceEPG": multiEPGCB
+                       })