From 0afd2995239e9c831b4e73ba27ec97302337db01 Mon Sep 17 00:00:00 2001 From: Stefan Pluecken Date: Fri, 23 Dec 2005 11:54:53 +0000 Subject: [PATCH] hold red or blue key in movie player to seek x minutes forward or backward --- data/keymap.xml | 11 ++- data/skin.xml | 3 + lib/python/Screens/InfoBarGenerics.py | 128 ++++++++++++++++++-------- lib/python/Screens/Makefile.am | 2 +- lib/python/Screens/MinuteInput.py | 53 +++++++++++ 5 files changed, 157 insertions(+), 40 deletions(-) create mode 100644 lib/python/Screens/MinuteInput.py diff --git a/data/keymap.xml b/data/keymap.xml index 2462ef6e..ab058568 100644 --- a/data/keymap.xml +++ b/data/keymap.xml @@ -66,6 +66,13 @@ + + + + + + + @@ -141,8 +148,10 @@ + - + + diff --git a/data/skin.xml b/data/skin.xml index e8e8a9ec..4be94751 100644 --- a/data/skin.xml +++ b/data/skin.xml @@ -210,6 +210,9 @@ + + + diff --git a/lib/python/Screens/InfoBarGenerics.py b/lib/python/Screens/InfoBarGenerics.py index 96d85877..f8ac8fda 100644 --- a/lib/python/Screens/InfoBarGenerics.py +++ b/lib/python/Screens/InfoBarGenerics.py @@ -21,6 +21,7 @@ from Screens.Mute import Mute from Screens.Dish import Dish from Screens.Standby import Standby from Screens.EventView import EventView +from Screens.MinuteInput import MinuteInput from Components.Harddisk import harddiskmanager from Tools import Notifications @@ -477,8 +478,10 @@ class InfoBarPVR: "unPauseService": (self.unPauseService, "continue"), "seekFwd": (self.seekFwd, "skip forward"), + "seekFwdUp": (self.seekFwdUp, "skip forward"), "seekBack": (self.seekBack, "skip backward"), - + "seekBackUp": (self.seekBackUp, "skip backward"), + "up": (self.showMovies, "movie list"), "down": (self.showMovies, "movie list") }) @@ -488,6 +491,14 @@ class InfoBarPVR: self.seekTimer.timeout.get().append(self.seekTimerFired) self.skipinterval = 500 # 500ms skip interval self.onClose.append(self.delSeekTimer) + + self.fwdtimer = False + self.fwdKeyTimer = eTimer() + self.fwdKeyTimer.timeout.get().append(self.fwdTimerFire) + + self.rwdtimer = False + self.rwdKeyTimer = eTimer() + self.rwdKeyTimer.timeout.get().append(self.rwdTimerFire) def up(self): pass @@ -565,44 +576,85 @@ class InfoBarPVR: seekable.seekTo(90 * seektime) def seekFwd(self): - lookup = { - self.SEEK_STATE_PLAY: self.SEEK_STATE_FF_2X, - self.SEEK_STATE_PAUSE: self.SEEK_STATE_SM_EIGHTH, - self.SEEK_STATE_FF_2X: self.SEEK_STATE_FF_4X, - self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_8X, - self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_32X, - self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_64X, - self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_128X, - self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_128X, - self.SEEK_STATE_BACK_4X: self.SEEK_STATE_PLAY, - self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_4X, - self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_32X, - self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_64X, - self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_HALF, - self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_HALF, - self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_SM_QUARTER - } - self.setSeekState(lookup[self.seekstate]); - + print "start fwd timer" + self.fwdtimer = True + self.fwdKeyTimer.start(500) + def seekBack(self): - lookup = { - self.SEEK_STATE_PLAY: self.SEEK_STATE_BACK_4X, - self.SEEK_STATE_PAUSE: self.SEEK_STATE_PAUSE, - self.SEEK_STATE_FF_2X: self.SEEK_STATE_PLAY, - self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_2X, - self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_4X, - self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_8X, - self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_32X, - self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_64X, - self.SEEK_STATE_BACK_4X: self.SEEK_STATE_BACK_32X, - self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_64X, - self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_128X, - self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_128X, - self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_QUARTER, - self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_EIGHTH, - self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_PAUSE - } - self.setSeekState(lookup[self.seekstate]); + print "start rewind timer" + self.rwdtimer = True + self.rwdKeyTimer.start(500) + + def seekFwdUp(self): + if self.fwdtimer: + self.fwdKeyTimer.stop() + self.fwdtimer = False + lookup = { + self.SEEK_STATE_PLAY: self.SEEK_STATE_FF_2X, + self.SEEK_STATE_PAUSE: self.SEEK_STATE_SM_EIGHTH, + self.SEEK_STATE_FF_2X: self.SEEK_STATE_FF_4X, + self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_8X, + self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_32X, + self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_64X, + self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_128X, + self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_128X, + self.SEEK_STATE_BACK_4X: self.SEEK_STATE_PLAY, + self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_4X, + self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_32X, + self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_64X, + self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_HALF, + self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_HALF, + self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_SM_QUARTER + } + self.setSeekState(lookup[self.seekstate]); + + def seekBackUp(self): + if self.rwdtimer: + self.rwdKeyTimer.stop() + self.rwdtimer = False + + lookup = { + self.SEEK_STATE_PLAY: self.SEEK_STATE_BACK_4X, + self.SEEK_STATE_PAUSE: self.SEEK_STATE_PAUSE, + self.SEEK_STATE_FF_2X: self.SEEK_STATE_PLAY, + self.SEEK_STATE_FF_4X: self.SEEK_STATE_FF_2X, + self.SEEK_STATE_FF_8X: self.SEEK_STATE_FF_4X, + self.SEEK_STATE_FF_32X: self.SEEK_STATE_FF_8X, + self.SEEK_STATE_FF_64X: self.SEEK_STATE_FF_32X, + self.SEEK_STATE_FF_128X: self.SEEK_STATE_FF_64X, + self.SEEK_STATE_BACK_4X: self.SEEK_STATE_BACK_32X, + self.SEEK_STATE_BACK_32X: self.SEEK_STATE_BACK_64X, + self.SEEK_STATE_BACK_64X: self.SEEK_STATE_BACK_128X, + self.SEEK_STATE_BACK_128X: self.SEEK_STATE_BACK_128X, + self.SEEK_STATE_SM_HALF: self.SEEK_STATE_SM_QUARTER, + self.SEEK_STATE_SM_QUARTER: self.SEEK_STATE_SM_EIGHTH, + self.SEEK_STATE_SM_EIGHTH: self.SEEK_STATE_PAUSE + } + self.setSeekState(lookup[self.seekstate]); + + def fwdTimerFire(self): + print "Display seek fwd" + self.fwdKeyTimer.stop() + self.fwdtimer = False + self.session.openWithCallback(self.fwdSeekTo, MinuteInput) + + def fwdSeekTo(self, minutes): + print "Seek", minutes, "minutes forward" + service = self.session.nav.getCurrentService() + if service is None: + return + seekable = service.seek() + if seekable is None: + return + seekable.seekRelative(1, minutes * 60 * 90000) + + def rwdTimerFire(self): + self.rwdKeyTimer.stop() + self.rwdtimer = False + self.session.openWithCallback(self.rwdSeekTo, MinuteInput) + + def rwdSeekTo(self, minutes): + self.fwdSeekTo(0 - minutes) from RecordTimer import parseEvent diff --git a/lib/python/Screens/Makefile.am b/lib/python/Screens/Makefile.am index d191a5ba..03c01e9e 100644 --- a/lib/python/Screens/Makefile.am +++ b/lib/python/Screens/Makefile.am @@ -8,4 +8,4 @@ install_PYTHON = \ EpgSelection.py EventView.py Mute.py Standby.py ServiceInfo.py \ AudioSelection.py InfoBarGenerics.py HelpMenu.py Wizard.py __init__.py \ Dish.py SubserviceSelection.py LanguageSelection.py StartWizard.py \ - TutorialWizard.py PluginBrowser.py + TutorialWizard.py PluginBrowser.py MinuteInput.py diff --git a/lib/python/Screens/MinuteInput.py b/lib/python/Screens/MinuteInput.py new file mode 100644 index 00000000..68909b61 --- /dev/null +++ b/lib/python/Screens/MinuteInput.py @@ -0,0 +1,53 @@ +from Screen import Screen +from Components.ActionMap import NumberActionMap +from Components.Label import Label +from Components.Button import Button +from Components.Pixmap import Pixmap +from Components.MenuList import MenuList +from enigma import eSize, ePoint + +class MinuteInput(Screen): + def __init__(self, session, basemins = 5): + Screen.__init__(self, session) + + self["minutes"] = Label() + self.updateValue(basemins) + + self["actions"] = NumberActionMap([ "NumberZapActions", "MinuteInputActions" ], + { + "1": self.keyNumberGlobal, + "2": self.keyNumberGlobal, + "3": self.keyNumberGlobal, + "4": self.keyNumberGlobal, + "5": self.keyNumberGlobal, + "6": self.keyNumberGlobal, + "7": self.keyNumberGlobal, + "8": self.keyNumberGlobal, + "9": self.keyNumberGlobal, + "0": self.keyNumberGlobal, + "up": self.up, + "down": self.down, + "ok": self.ok, + "cancel": self.cancel + }) + + def updateValue(self, minutes): + self.minutes = minutes + self["minutes"].setText(str(self.minutes) + _(" mins")) + + def keyNumberGlobal(self, number): + #self.updateValue(self.minutes * 10 + number) + pass + + def up(self): + self.updateValue(self.minutes + 1) + + def down(self): + if self.minutes > 0: + self.updateValue(self.minutes - 1) + + def ok(self): + self.close(self.minutes) + + def cancel(self): + self.close(0) \ No newline at end of file -- 2.30.2