Merge branch 'bug_414_spinner_recording_paths' into experimental
[enigma2.git] / lib / python / Screens / InfoBarGenerics.py
index 805b0f27867738a607e9564477840bc0d07afbee..f2aff6c6af6bb5ac948afdc8874cf416c7d1fa7b 100644 (file)
@@ -51,22 +51,20 @@ class InfoBarDish:
 class InfoBarUnhandledKey:
        def __init__(self):
                self.unhandledKeyDialog = self.session.instantiateDialog(UnhandledKey)
-               self.hideTimer = eTimer()
-               self.hideTimer.callback.append(self.unhandledKeyDialog.hide)
+               self.hideUnhandledKeySymbolTimer = eTimer()
+               self.hideUnhandledKeySymbolTimer.callback.append(self.unhandledKeyDialog.hide)
                self.checkUnusedTimer = eTimer()
                self.checkUnusedTimer.callback.append(self.checkUnused)
                self.onLayoutFinish.append(self.unhandledKeyDialog.hide)
                eActionMap.getInstance().bindAction('', -0x7FFFFFFF, self.actionA) #highest prio
                eActionMap.getInstance().bindAction('', 0x7FFFFFFF, self.actionB) #lowest prio
-               self.key = -1;
-               self.flags = 0;
+               self.flags = (1<<1);
                self.uflags = 0;
 
        #this function is called on every keypress!
        def actionA(self, key, flag):
                if flag != 4:
-                       if self.key != key:
-                               self.key = key
+                       if self.flags & (1<<1):
                                self.flags = self.uflags = 0
                        self.flags |= (1<<flag)
                        if flag == 1: # break
@@ -81,7 +79,7 @@ class InfoBarUnhandledKey:
        def checkUnused(self):
                if self.flags == self.uflags:
                        self.unhandledKeyDialog.show()
-                       self.hideTimer.start(2000, True)
+                       self.hideUnhandledKeySymbolTimer.start(2000, True)
 
 class InfoBarShowHide:
        """ InfoBar show/hide control, accepts toggleShow and hide actions, might start
@@ -600,6 +598,7 @@ class InfoBarEPG:
 
                if list:
                        list.append((_("show single service EPG..."), self.openSingleServiceEPG))
+                       list.append((_("Multi EPG"), self.openMultiServiceEPG))
                        self.session.openWithCallback(self.EventInfoPluginChosen, ChoiceBox, title=_("Please choose an extension..."), list = list, skin_name = "EPGExtensionsList")
                else:
                        self.openSingleServiceEPG()
@@ -727,6 +726,7 @@ class InfoBarSeek:
                                iPlayableService.evEOF: self.__evEOF,
                                iPlayableService.evSOF: self.__evSOF,
                        })
+               self.fast_winding_hint_message_showed = False
 
                class InfoBarSeekActionMap(HelpableActionMap):
                        def __init__(self, screen, *args, **kwargs):
@@ -853,6 +853,7 @@ class InfoBarSeek:
 #                      print "seekable"
 
        def __serviceStarted(self):
+               self.fast_winding_hint_message_showed = False
                self.seekstate = self.SEEK_STATE_PLAY
                self.__seekableStatusChanged()
 
@@ -943,6 +944,13 @@ class InfoBarSeek:
                        self.showAfterSeek()
 
        def seekFwd(self):
+               seek = self.getSeek()
+               if seek and not (seek.isCurrentlySeekable() & 2):
+                       if not self.fast_winding_hint_message_showed and (seek.isCurrentlySeekable() & 1):
+                               self.session.open(MessageBox, _("No fast winding possible yet.. but you can use the number buttons to skip forward/backward!"), MessageBox.TYPE_INFO, timeout=10)
+                               self.fast_winding_hint_message_showed = True
+                               return
+                       return 0 # trade as unhandled action
                if self.seekstate == self.SEEK_STATE_PLAY:
                        self.setSeekState(self.makeStateForward(int(config.seek.enter_forward.value)))
                elif self.seekstate == self.SEEK_STATE_PAUSE:
@@ -972,6 +980,13 @@ class InfoBarSeek:
                        self.setSeekState(self.makeStateSlowMotion(speed))
 
        def seekBack(self):
+               seek = self.getSeek()
+               if seek and not (seek.isCurrentlySeekable() & 2):
+                       if not self.fast_winding_hint_message_showed and (seek.isCurrentlySeekable() & 1):
+                               self.session.open(MessageBox, _("No fast winding possible yet.. but you can use the number buttons to skip forward/backward!"), MessageBox.TYPE_INFO, timeout=10)
+                               self.fast_winding_hint_message_showed = True
+                               return
+                       return 0 # trade as unhandled action
                seekstate = self.seekstate
                if seekstate == self.SEEK_STATE_PLAY:
                        self.setSeekState(self.makeStateBackward(int(config.seek.enter_backward.value)))