user argument to set current service
[enigma2.git] / lib / python / Screens / InfoBar.py
index 9702eed7172abd68cb1c3f5e035b3ace21e68764..319ecbe4d705f2dc8b180acf845b116fd8163e5b 100644 (file)
@@ -1,16 +1,20 @@
 from Screen import Screen
 from Screen import Screen
+from EpgSelection import EPGSelection
 from ChannelSelection import ChannelSelection
 from Components.Clock import Clock
 from Components.ActionMap import ActionMap
 from ChannelSelection import ChannelSelection
 from Components.Clock import Clock
 from Components.ActionMap import ActionMap
+from Components.ActionMap import NumberActionMap
 from Components.Button import Button
 from Components.ServiceName import ServiceName
 from Components.EventInfo import EventInfo
 from Components.ServicePosition import ServicePosition
 from Components.config import configfile
 from Components.Button import Button
 from Components.ServiceName import ServiceName
 from Components.EventInfo import EventInfo
 from Components.ServicePosition import ServicePosition
 from Components.config import configfile
+from Components.Label import Label
 
 from Screens.MessageBox import MessageBox
 from Screens.MovieSelection import MovieSelection
 from Screens.Volume import Volume
 
 from Screens.MessageBox import MessageBox
 from Screens.MovieSelection import MovieSelection
 from Screens.Volume import Volume
+from Screens.Mute import Mute
 
 from enigma import *
 
 
 from enigma import *
 
@@ -19,6 +23,48 @@ import time
 # hack alert!
 from Menu import MainMenu, mdom
 
 # hack alert!
 from Menu import MainMenu, mdom
 
+class NumberZap(Screen):
+       def quit(self):
+               self.Timer.stop()
+               self.close()
+
+       def keyOK(self):
+               self.Timer.stop()
+               print "do the action here"
+               self.close()
+
+       def keyNumberGlobal(self, number):
+               self.Timer.start(3000)          #reset timer
+               self.field = self.field + str(number)
+               self["number"].setText(self.field)
+
+       def __init__(self, session, number):
+               Screen.__init__(self, session)
+               self.field = str(number)
+               
+               self["number"] = Label(self.field)
+
+               self["actions"] = NumberActionMap( [ "SetupActions" ], 
+                       {
+                               "cancel": self.quit,
+                               "ok": self.keyOK,
+                               "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
+                       })
+
+               self.Timer = eTimer()
+               self.Timer.timeout.get().append(self.keyOK)
+               self.Timer.start(3000)
+
+
 class InfoBar(Screen):
        STATE_HIDDEN = 0
        STATE_HIDING = 1
 class InfoBar(Screen):
        STATE_HIDDEN = 0
        STATE_HIDING = 1
@@ -34,13 +80,17 @@ class InfoBar(Screen):
                self.state = self.STATE_HIDDEN
                
                self.volumeDialog = self.session.instantiateDialog(Volume)
                self.state = self.STATE_HIDDEN
                
                self.volumeDialog = self.session.instantiateDialog(Volume)
+               self.muteDialog = self.session.instantiateDialog(Mute)
                
                self.hideTimer = eTimer()
                self.hideTimer.timeout.get().append(self.doTimerHide)
                #self.hideTimer.start(1000)
                
                self.hideTimer = eTimer()
                self.hideTimer.timeout.get().append(self.doTimerHide)
                #self.hideTimer.start(1000)
+               
+               self.hideVolTimer = eTimer()
+               self.hideVolTimer.timeout.get().append(self.volHide)
 
 
-
-               self["actions"] = ActionMap( [ "InfobarActions" ], 
+               #self["actions"] = ActionMap( [ "InfobarActions" ], 
+               self["actions"] = NumberActionMap( [ "InfobarActions" ], 
                        {
                                "switchChannelUp": self.switchChannelUp,
                                "switchChannelDown": self.switchChannelDown,
                        {
                                "switchChannelUp": self.switchChannelUp,
                                "switchChannelDown": self.switchChannelDown,
@@ -54,7 +104,18 @@ class InfoBar(Screen):
                                "hide": self.hide,
                                "toggleShow": self.toggleShow,
                                "showMovies": self.showMovies,
                                "hide": self.hide,
                                "toggleShow": self.toggleShow,
                                "showMovies": self.showMovies,
-                               "quit": self.quit
+                               "quit": self.quit,
+                               "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,
+                               "showEPGList": self.showEPGList
                        })
 #              self["okbutton"] = Button("mainMenu", [self.mainMenu])
                
                        })
 #              self["okbutton"] = Button("mainMenu", [self.mainMenu])
                
@@ -80,6 +141,10 @@ class InfoBar(Screen):
                assert menu.tagName == "menu", "root element in menu must be 'menu'!"
                self.session.open(MainMenu, menu, menu.childNodes)
 
                assert menu.tagName == "menu", "root element in menu must be 'menu'!"
                self.session.open(MainMenu, menu, menu.childNodes)
 
+       def keyNumberGlobal(self, number):
+               print "You pressed number " + str(number)
+               self.session.open(NumberZap, number)
+
        def switchChannelUp(self):      
                self.servicelist.moveUp()
                self.session.execDialog(self.servicelist)
        def switchChannelUp(self):      
                self.servicelist.moveUp()
                self.session.execDialog(self.servicelist)
@@ -120,19 +185,13 @@ class InfoBar(Screen):
        def     volUp(self):
                eDVBVolumecontrol.getInstance().volumeUp()
                self.volumeDialog.instance.show()
        def     volUp(self):
                eDVBVolumecontrol.getInstance().volumeUp()
                self.volumeDialog.instance.show()
-               # FIXME: help wanted :)
-               self.volumeDialog.instance.setValue(eDVBVolumecontrol.getInstance().getVolume())
-               self.hideVolTimer = eTimer()
-               self.hideVolTimer.timeout.get().append(self.volHide)
+               self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
                self.hideVolTimer.start(3000)
 
        def     volDown(self):
                eDVBVolumecontrol.getInstance().volumeDown()
                self.volumeDialog.instance.show()
                self.hideVolTimer.start(3000)
 
        def     volDown(self):
                eDVBVolumecontrol.getInstance().volumeDown()
                self.volumeDialog.instance.show()
-               # FIXME: help wanted :)
                self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
                self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
-               self.hideVolTimer = eTimer()
-               self.hideVolTimer.timeout.get().append(self.volHide)
                self.hideVolTimer.start(3000)
                
        def volHide(self):
                self.hideVolTimer.start(3000)
                
        def volHide(self):
@@ -148,9 +207,19 @@ class InfoBar(Screen):
 
        def     volMute(self):
                eDVBVolumecontrol.getInstance().volumeToggleMute()
 
        def     volMute(self):
                eDVBVolumecontrol.getInstance().volumeToggleMute()
-               self.volumeBar.setValue(eDVBVolumecontrol.getInstance().getVolume())
+               self.volumeDialog.setValue(eDVBVolumecontrol.getInstance().getVolume())
+               
+               if (eDVBVolumecontrol.getInstance().isMuted()):
+                       self.muteDialog.instance.show()
+               else:
+                       self.muteDialog.instance.hide()
+
+       def showEPGList(self):
+# TODO hier irgendwie EPGSelection benutzen und setRoot benutzen um nen service zu uebergeben
+# self.session.nav.getCurrentlyPlayingServiceReference() sollte das wohl sein
+               self.session.open(EPGSelection, self.session.nav.getCurrentlyPlayingServiceReference())
 
 
-       def     quit(self):
+       def quit(self):
                configfile.save()
                quitMainloop()
        
                configfile.save()
                quitMainloop()