fixes bug #556
authorStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 22 Jul 2010 17:37:35 +0000 (19:37 +0200)
committerStefan Pluecken <stefan.pluecken@multimedia-labs.de>
Thu, 22 Jul 2010 17:42:47 +0000 (19:42 +0200)
- fixes adding timers from inside the movie player: the .ts service was added as channel
- fixes a small bug in ConfigSelection to allow empty strings inside the ChoicesList

RecordTimer.py
ServiceReference.py
lib/python/Components/config.py
lib/python/Screens/TimerEntry.py

index 1608caa..def7568 100755 (executable)
@@ -102,7 +102,10 @@ class RecordTimerEntry(timer.TimerEntry, object):
                
                assert isinstance(serviceref, ServiceReference)
                
-               self.service_ref = serviceref
+               if serviceref.getType() == eServiceReference.idDVB and serviceref.getPath() == "":
+                       self.service_ref = serviceref
+               else:
+                       self.service_ref = ServiceReference(None)
                self.eit = eit
                self.dontSave = False
                self.name = name
index 11e2878..5d11ae7 100644 (file)
@@ -20,3 +20,9 @@ class ServiceReference(eServiceReference):
 
        def list(self):
                return self.serviceHandler.list(self.ref)
+       
+       def getType(self):
+               return self.ref.type
+       
+       def getPath(self):
+               return self.ref.getPath()
index d7506e3..08dd374 100755 (executable)
@@ -179,7 +179,7 @@ class choicesList(object): # XXX: we might want a better name for this
 
        def __list__(self):
                if self.type == choicesList.LIST_TYPE_LIST:
-                       ret = [not isinstance(x, tuple) and x or x[0] for x in self.choices]
+                       ret = [not isinstance(x, tuple) and x or len(x) > 0 and x[0] or len(x) == 0 and x for x in self.choices]
                else:
                        ret = self.choices.keys()
                return ret or [""]
index 64fa9f1..62faf9b 100644 (file)
@@ -13,8 +13,9 @@ from Components.UsageConfig import defaultMoviePath
 from Screens.MovieSelection import getPreferredTagEditor
 from Screens.LocationBox import MovieLocationBox
 from Screens.ChoiceBox import ChoiceBox
+from Screens.MessageBox import MessageBox
 from RecordTimer import AFTEREVENT
-from enigma import eEPGCache
+from enigma import eEPGCache, eServiceReference
 from time import localtime, mktime, time, strftime
 from datetime import datetime
 
@@ -245,7 +246,7 @@ class TimerEntry(Screen, ConfigListScreen):
                        self.timerentry_service_ref = ServiceReference(args[0])
                        self.timerentry_service.setCurrentText(self.timerentry_service_ref.getServiceName())
                        self["config"].invalidate(self.channelEntry)
-
+                       
        def getTimestamp(self, date, mytime):
                d = localtime(date)
                dt = datetime(d.tm_year, d.tm_mon, d.tm_mday, mytime[0], mytime[1])
@@ -264,7 +265,22 @@ class TimerEntry(Screen, ConfigListScreen):
                        end += 86400
                return begin, end
 
-       def keyGo(self):
+       def selectChannelSelector(self, *args):
+               self.session.openWithCallback(
+                               self.finishedChannelSelectionCorrection,
+                               ChannelSelection.SimpleChannelSelection,
+                               _("Select channel to record from")
+                       )
+
+       def finishedChannelSelectionCorrection(self, *args):
+               if args:
+                       self.finishedChannelSelection(*args)
+                       self.keyGo()
+
+       def keyGo(self, result = None):
+               if self.timerentry_service_ref.getType() != eServiceReference.idDVB or self.timerentry_service_ref.getPath() != "":
+                       self.session.openWithCallback(self.selectChannelSelector, MessageBox, _("You didn't select a channel to record from."), MessageBox.TYPE_ERROR)
+                       return
                self.timer.name = self.timerentry_name.value
                self.timer.description = self.timerentry_description.value
                self.timer.justplay = self.timerentry_justplay.value == "zap"