fix lcd font sizes
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 954e9d1fcb2e59fe4cd523af58a6a897d22ed632..34a4821ed692ab75639d10c0f5aecda70877ba93 100644 (file)
@@ -11,12 +11,15 @@ from Components.Pixmap import Pixmap, PixmapConditional
 from Components.BlinkingPixmap import BlinkingPixmapConditional
 from Components.ServiceName import ServiceName
 from Components.EventInfo import EventInfo, EventInfoProgress
+from Components.Clock import Clock
+from Components.Input import Input
 
 from ServiceReference import ServiceReference
 from EpgSelection import EPGSelection
 
 from Screens.MessageBox import MessageBox
 from Screens.ChoiceBox import ChoiceBox
+from Screens.InputBox import InputBox
 from Screens.Dish import Dish
 from Screens.Standby import Standby
 from Screens.EventView import EventViewEPGSelect, EventViewSimple
@@ -748,7 +751,7 @@ class InfoBarSeek:
                if self.seekstate == self.SEEK_STATE_PAUSE:
                        seekable = self.getSeek()
                        if seekable is not None:
-                               seekable.seekRelative(-1, 2)
+                               seekable.seekRelative(-1, 3)
 
        def fwdTimerFire(self):
                print "Display seek fwd"
@@ -1005,29 +1008,36 @@ class InfoBarInstantRecord:
                
                # try to get event info
                event = None
-               if limitEvent:
-                       try:
-                               service = self.session.nav.getCurrentService()
-                               epg = eEPGCache.getInstance()
-                               event = epg.lookupEventTime(serviceref, -1, 0)
-                               if event is None:
-                                       info = service.info()
-                                       ev = info.getEvent(0)
-                                       event = ev
-                       except:
-                               pass
+               try:
+                       service = self.session.nav.getCurrentService()
+                       epg = eEPGCache.getInstance()
+                       event = epg.lookupEventTime(serviceref, -1, 0)
                        if event is None:
-                               self.session.open(MessageBox, _("No event info found, recording indefinitely."), MessageBox.TYPE_INFO)
+                               info = service.info()
+                               ev = info.getEvent(0)
+                               event = ev
+               except:
+                       pass
 
+               begin = time.time()
+               end = time.time() + 3600 * 10
+               name = "instant record"
+               description = ""
+               eventid = None
+               
                if event is not None:
-                       data = parseEvent(event)
-                       begin = time.time()
-                       end = begin + 3600 * 10
-                       data = (begin, end, data[2], data[3], data[4])
+                       curEvent = parseEvent(event)
+                       name = curEvent[2]
+                       description = curEvent[3]
+                       eventid = curEvent[4]
+                       if limitEvent:
+                               end = curEvent[1]
                else:
-                       data = (time.time(), time.time() + 3600 * 10, "instant record", "", None)
+                       if limitEvent:
+                               self.session.open(MessageBox, _("No event info found, recording indefinitely."), MessageBox.TYPE_INFO)
+                               
+               data = (begin, end, name, description, eventid)
                
-               # fix me, description. 
                self.recording = self.session.nav.recordWithTimer(serviceref, *data)
                self.recording.dontSave = True
                
@@ -1044,13 +1054,25 @@ class InfoBarInstantRecord:
                        return
                
                if self.isInstantRecordRunning():
-                       self.stopCurrentRecording()
+                       if answer[1] == "manualduration":
+                               self.session.openWithCallback(self.inputCallback, InputBox, title=_("How many minutes do you want to record?"), text="5", maxSize=False, type=Input.NUMBER)                             
+                       else:
+                               self.stopCurrentRecording()
                else:
                        limitEvent = False
                        if answer[1] == "event":
                                limitEvent = True
+                       if answer[1] == "manualduration":
+                               self.session.openWithCallback(self.inputCallback, InputBox, title=_("How many minutes do you want to record?"), text="5", maxSize=False, type=Input.NUMBER)
                        self.startInstantRecording(limitEvent = limitEvent)
 
+       def inputCallback(self, value):
+               if value is not None:
+                       print "stopping recording after", int(value), "minutes."
+                       if self.recording is not None:
+                               self.recording.end = time.time() + 60 * int(value)
+                               self.session.nav.RecordTimer.timeChanged(self.recording)
+
        def instantRecord(self):
                try:
                        stat = os.stat(resolveFilename(SCOPE_HDD))
@@ -1059,10 +1081,10 @@ class InfoBarInstantRecord:
                        return
        
                if self.isInstantRecordRunning():
-                       self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("Do you want to stop the current\n(instant) recording?"), list=[(_("yes"), "yes"), (_("no"), "no")])
+                       self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("A recording is currently running.\nWhat do you want to do?"), list=[(_("stop recording"), "yes"), (_("enter recording duration"), "manualduration"), (_("do nothing"), "no")])
 #                      self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Do you want to stop the current\n(instant) recording?"))
                else:
-                       self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("Do you want to stop the current\n(instant) recording?"), list=[(_("record indefinitely"), "indefinitely"), (_("stop after current event"), "event"), (_("don't record"), "no")])
+                       self.session.openWithCallback(self.recordQuestionCallback, ChoiceBox, title=_("Start recording?"), list=[(_("record indefinitely"), "indefinitely"), (_("stop after current event"), "event"), (_("enter recording duration"), "manualduration"),(_("don't record"), "no")])
                        #self.session.openWithCallback(self.recordQuestionCallback, MessageBox, _("Start recording?"))
 
 from Screens.AudioSelection import AudioSelection
@@ -1349,3 +1371,22 @@ class InfoBarCueSheetSupport:
                        print "upload failed, no cuesheet interface"
                        return
                self.cut_list = cue.getCutList()
+
+class InfoBarSummary(Screen):
+       skin = """
+       <screen position="0,0" size="132,64">
+               <widget name="Clock" position="50,46" size="82,18" font="Regular;16" />
+               <widget name="CurrentService" position="0,4" size="132,42" font="Regular;18" />
+       </screen>"""
+
+       def __init__(self, session, parent):
+               Screen.__init__(self, session)
+               self["CurrentService"] = ServiceName(self.session.nav)
+               self["Clock"] = Clock()
+
+class InfoBarSummarySupport:
+       def __init__(self):
+               pass
+       
+       def createSummary(self):
+               return InfoBarSummary