04e2a08095108b7eb93168fb88bb80a9d445ef4d
[vuplus_dvbapp] / lib / python / Plugins / SystemPlugins / LEDBrightnessSetup / plugin.py
1 from Screens.Screen import Screen
2 from Components.ConfigList import ConfigListScreen
3 from Components.config import config, getConfigListEntry, ConfigSubsection, ConfigSlider
4 from Components.ActionMap import ActionMap
5 from Components.Sources.StaticText import StaticText
6 from Components.Label import Label
7 from Plugins.Plugin import PluginDescriptor
8 from Screens.MessageBox import MessageBox
9 from Tools.Directories import fileExists
10 from enigma import eTimer
11 from enigma import eDBoxLCD
12
13 config.plugins.brightnesssetup = ConfigSubsection()
14 config.plugins.brightnesssetup.brightness = ConfigSlider(default = 1, increment = 1, limits = (0,15))
15 config.plugins.brightnesssetup.brightnessdeepstandby = ConfigSlider(default = 5, increment = 1, limits = (0,15))
16 config.plugins.brightnesssetup.blinkingtime = ConfigSlider(default = 5, increment = 1, limits = (0,15))
17
18 class LEDOption:
19         BRIGHTNESS = 0
20         DEEPSTANDBY = 1
21         BLINKINGTIME = 2
22
23 class LEDBrightnessSetupStandby:
24         def __init__(self):
25                 self.initLEDSetup()
26
27         def initLEDSetup(self):
28                 brightness = int(config.plugins.brightnesssetup.brightness.value)
29                 brightnessstandby = int(config.plugins.brightnesssetup.brightnessdeepstandby.value)
30                 blinkingtime = int(config.plugins.brightnesssetup.blinkingtime.value)
31                 eDBoxLCD.getInstance().setLEDDefault(brightness, brightnessstandby, blinkingtime)
32
33 class LEDBrightnessSetup(Screen,ConfigListScreen):
34         skin = """
35                         <screen name="LEDBrightnessSetup" position="center,center" size="560,300" title="LED Brightness Setup">
36                         <ePixmap pixmap="Vu_HD/buttons/red.png" position="10,10" size="25,25" alphatest="on" />
37                         <ePixmap pixmap="Vu_HD/buttons/green.png" position="195,10" size="25,25" alphatest="on" />
38                         <ePixmap pixmap="Vu_HD/buttons/yellow.png" position="380,10" size="25,25" alphatest="on" />
39                         <widget source="key_red" render="Label" position="30,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
40                         <widget source="key_green" render="Label" position="215,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
41                         <widget source="key_yellow" render="Label" position="400,10" zPosition="1" size="140,25" font="Regular;20" halign="center" valign="center" transparent="1" />
42                         <widget name="config" zPosition="2" position="5,50" size="550,200" scrollbarMode="showOnDemand" transparent="1"/>
43                         <widget name="current_entry" position="130,240" size="300,30" font="Regular;18" halign="center" valign="center"/>
44                         </screen>"""
45
46         def __init__(self,session):
47                 Screen.__init__(self,session)
48                 self.session = session
49                 self["shortcuts"] = ActionMap(["ShortcutActions", "SetupActions" ],
50                 {
51                         "ok": self.keySave,
52                         "cancel": self.keyCancel,
53                         "red": self.keyCancel,
54                         "green": self.keySave,
55                         "yellow": self.keyDefault,
56                 }, -2)
57                 self.list = []
58                 ConfigListScreen.__init__(self, self.list,session = self.session)
59                 self["key_red"] = StaticText(_("Cancel"))
60                 self["key_green"] = StaticText(_("Ok"))
61                 self["key_yellow"] = StaticText(_("Defalut"))
62                 self["current_entry"]=Label("")
63                 self.createSetup()
64                 self.onLayoutFinish.append(self.checkModel)
65                 self.checkModelTimer = eTimer()
66                 self.checkModelTimer.callback.append(self.invalidmodel)
67                 if not self.displayText in self["config"].onSelectionChanged:
68                         self["config"].onSelectionChanged.append(self.displayText)
69
70         def displayText(self):
71                 if self["config"].getCurrent() == self.brightness:
72                         self["current_entry"].setText("Touch LED Brightness at Normal state")
73                 elif self["config"].getCurrent() == self.brightness_deepstandby:
74                         self["current_entry"].setText("Touch LED Brightness at Deep Standby")
75                 elif self["config"].getCurrent() == self.blinkingtime:
76                         self["current_entry"].setText("Touch LED Blinking time")
77                 self.setCurrentValue()
78
79         def getModel(self):
80                 if fileExists("/proc/stb/info/vumodel"):
81                         vumodel = open("/proc/stb/info/vumodel")
82                         info=vumodel.read().strip()
83                         vumodel.close()
84                         if info == "ultimo":
85                                 return True
86                         else:
87                                 return False
88                 else:
89                         return False
90
91         def checkModel(self):
92                 if not self.getModel():
93                         self.checkModelTimer.start(100,True)
94
95         def invalidmodel(self):
96                         self.session.openWithCallback(self.close, MessageBox, _("This Plugin only support for ULTIMO"), MessageBox.TYPE_ERROR, timeout = 30)
97
98         def createSetup(self):
99                 self.list = []
100                 self.brightness = getConfigListEntry(_("Normal state"), config.plugins.brightnesssetup.brightness)
101                 self.brightness_deepstandby = getConfigListEntry(_("Deep Standby"), config.plugins.brightnesssetup.brightnessdeepstandby)
102                 self.blinkingtime = getConfigListEntry(_("Blinking time"), config.plugins.brightnesssetup.blinkingtime)
103                 self.list.append( self.brightness )
104                 self.list.append( self.brightness_deepstandby )
105                 self.list.append( self.blinkingtime )
106                 self["config"].list = self.list
107                 self["config"].l.setList(self.list)
108
109         def setCurrentValue(self):
110                 if self["config"].getCurrent() == self.blinkingtime:
111                         eDBoxLCD.getInstance().setLED(1 ,LEDOption.BRIGHTNESS)
112                         eDBoxLCD.getInstance().setLED(self["config"].getCurrent()[1].value ,LEDOption.BLINKINGTIME)
113                 else:
114                         eDBoxLCD.getInstance().setLED(self["config"].getCurrent()[1].value ,LEDOption.BRIGHTNESS)
115
116         def keyLeft(self):
117                 ConfigListScreen.keyLeft(self)
118                 self.setCurrentValue()
119
120         def keyRight(self):
121                 ConfigListScreen.keyRight(self)
122                 self.setCurrentValue()
123
124         def saveLEDSetup(self):
125                 brightness = config.plugins.brightnesssetup.brightness.value
126                 brightnessstandby = config.plugins.brightnesssetup.brightnessdeepstandby.value
127                 blinkingtime = config.plugins.brightnesssetup.blinkingtime.value
128                 eDBoxLCD.getInstance().setLED(brightness ,LEDOption.BRIGHTNESS)
129                 eDBoxLCD.getInstance().setLED(brightnessstandby ,LEDOption.DEEPSTANDBY)
130                 eDBoxLCD.getInstance().setLED(blinkingtime ,LEDOption.BLINKINGTIME)
131
132         def keySave(self):
133                 if self["config"].isChanged():
134                         self.saveLEDSetup()
135                 ConfigListScreen.keySave(self)
136
137         def keyDefault(self):
138                 config.plugins.brightnesssetup.brightness.setValue(1)
139                 config.plugins.brightnesssetup.brightnessdeepstandby.setValue(5)
140                 config.plugins.brightnesssetup.blinkingtime.setValue(5)
141                 for entry in self["config"].getList():
142                         self["config"].l.invalidateEntry(self["config"].getList().index(entry))
143
144         def cancelConfirm(self, result):
145                 if not result:
146                         return
147                 for x in self["config"].list:
148                         x[1].cancel()
149                 self.saveLEDSetup()
150                 self.close()
151
152 def main(session, **kwargs):
153         session.open(LEDBrightnessSetup)
154
155 def Plugins(**kwargs):
156         return [PluginDescriptor(name=_("LED Brightness Setup"), description="Setup LED brightness and blink interval", where = PluginDescriptor.WHERE_PLUGINMENU, needsRestart = False, fnc=main)]
157
158 ledbrightnesssetupstandby = LEDBrightnessSetupStandby()