2 from Components.MenuList import MenuList
3 from Components.ActionMap import ActionMap
4 from Components.ActionMap import NumberActionMap
5 from Components.Header import Header
6 from Components.Button import Button
7 from Components.Label import Label
9 from Components.HTMLComponent import *
10 from Components.GUIComponent import *
11 from Components.config import *
16 def addEntry(self, list, entry):
17 if entry[0] == "TEXT": #handle every item (text / pin only?)
18 list.append( (entry[1], entry[2]) )
22 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "-")))
25 x = configElement_nonSave("", configSequence, [1234], configsequencearg.get("PINCODE", (entry[1], "")))
27 self.pin = getConfigListEntry(entry[2],x)
28 list.append( self.pin )
30 def okbuttonClick(self):
32 if self.tag == "WAIT":
33 print "do nothing - wait"
34 elif self.tag == "MENU":
36 eDVBCI_UI.getInstance().answerMenu(self.slotid, self["entries"].getCurrent()[1])
38 elif self.tag == "LIST":
40 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
49 if self.tag == "WAIT":
51 elif self.tag == "MENU":
52 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
54 elif self.tag == "LIST":
55 eDVBCI_UI.getInstance().answerMenu(self.slotid, 0)
58 print "give cancel action to ci"
60 def keyNumberGlobal(self, number):
61 self["entries"].handleKey(config.key[str(number)])
64 self["entries"].handleKey(config.key["prevElement"])
67 self["entries"].handleKey(config.key["nextElement"])
69 def updateList(self, list):
70 self["entries"].list = list
71 self["entries"].l.setList(list)
75 self["title"].setText("")
76 self["subtitle"].setText("")
77 self["bottom"].setText("")
79 list.append( ("wait for ci...", 0) )
83 screen = eDVBCI_UI.getInstance().getMMIScreen(self.slotid)
87 self.tag = screen[0][0]
90 if entry[0] == "TITLE":
91 self["title"].setText(entry[1])
92 elif entry[0] == "SUBTITLE":
93 self["subtitle"].setText(entry[1])
94 elif entry[0] == "BOTTOM":
95 self["bottom"].setText(entry[1])
96 elif entry[0] == "TEXT":
97 self.addEntry(list, entry)
98 elif entry[0] == "PIN":
99 self.addEntry(list, entry)
101 self.updateList(list)
103 def TimerCheck(self):
105 if self.action == 0: #reset
107 if self.action == 1: #init
110 #module still there ?
111 if eDVBCI_UI.getInstance().getState(self.slotid) != 2:
114 #mmi session still active ?
115 if eDVBCI_UI.getInstance().getMMIState(self.slotid) != 1:
118 #new screen available?
119 if eDVBCI_UI.getInstance().availableMMI(self.slotid) == 1:
122 #FIXME: check for mmi-session closed
124 def __init__(self, session, slotid, action):
125 Screen.__init__(self, session)
127 print "ciMMI with action" + str(action)
131 self.Timer = eTimer()
132 self.Timer.timeout.get().append(self.TimerCheck)
133 self.Timer.start(1000)
135 #else the skins fails
136 self["title"] = Label("")
137 self["subtitle"] = Label("")
138 self["bottom"] = Label("")
139 self["entries"] = MenuList([ ])
141 self["actions"] = NumberActionMap(["SetupActions"],
143 "ok": self.okbuttonClick,
144 "cancel": self.keyCancel,
146 "left": self.keyLeft,
147 "right": self.keyRight,
148 "1": self.keyNumberGlobal,
149 "2": self.keyNumberGlobal,
150 "3": self.keyNumberGlobal,
151 "4": self.keyNumberGlobal,
152 "5": self.keyNumberGlobal,
153 "6": self.keyNumberGlobal,
154 "7": self.keyNumberGlobal,
155 "8": self.keyNumberGlobal,
156 "9": self.keyNumberGlobal,
157 "0": self.keyNumberGlobal
162 if action == 0: #reset
163 eDVBCI_UI.getInstance().setReset(self.slotid)
165 elif action == 1: #init
168 elif action == 2: #start MMI
169 eDVBCI_UI.getInstance().startMMI(self.slotid)
171 elif action == 3: #mmi already there (called from infobar)
174 class CiSelection(Screen):
175 def createMenu(self):
177 self.list.append( ("Reset", 0) )
178 self.list.append( ("Init", 1) )
180 self.state = eDVBCI_UI.getInstance().getState(0)
181 if self.state == 0: #no module
182 self.list.append( ("no module found", 2) )
183 elif self.state == 1: #module in init
184 self.list.append( ("init module", 2) )
185 elif self.state == 2: #module ready
187 appname = eDVBCI_UI.getInstance().getAppName(0)
188 self.list.append( (appname, 2) )
190 self["entries"] .list = self.list
191 self["entries"] .l.setList(self.list)
193 def TimerCheck(self):
194 state = eDVBCI_UI.getInstance().getState(0)
195 if self.state != state:
196 #print "something happens"
200 def okbuttonClick(self):
204 self.session.open(CiMmi, 0, self["entries"].getCurrent()[1])
206 #generate menu / list
208 #list.append( ("TEXT", "CA-Info") )
209 #list.append( ("TEXT", "Card Status") )
210 #list.append( ("PIN", 6, "Card Pin", 1) )
211 #self.session.open(CiMmi, 0, 0, "Wichtiges CI", "Mainmenu", "Footer", list)
217 def __init__(self, session):
218 #FIXME support for one ci only
219 Screen.__init__(self, session)
221 self["actions"] = ActionMap(["OkCancelActions"],
223 "ok": self.okbuttonClick,
224 "cancel": self.cancel
228 self["entries"] = MenuList(list)
231 self.Timer = eTimer()
232 self.Timer.timeout.get().append(self.TimerCheck)
233 self.Timer.start(1000)