|
1 function EmulatorMenu() { |
|
2 this.is_menu_visible = false; // true/false |
|
3 this.is_softkeys_visible = false; // true : only when MenuItem's are |
|
4 // displayed |
|
5 this.softkeys_visibility = true; // true/false : for hide/show SFK's |
|
6 this.is_dimmed = false; |
|
7 this.is_rsk_overridden = false; |
|
8 this.log_counter = 1; |
|
9 this.enable_log = false; |
|
10 this.rsk_label = ''; |
|
11 this.rsk_event = false; |
|
12 this.highlighted_item = null; |
|
13 } |
|
14 |
|
15 EmulatorMenu.prototype.hide = function() { |
|
16 $("#MenuItemsArea").fadeIn("slow"); |
|
17 |
|
18 // Hide the SFK's If user hidden them from his code |
|
19 if (NOKIA.menu.softkeys_visibility) |
|
20 $("#SoftKeysArea").fadeIn("slow"); |
|
21 |
|
22 NOKIA.menu.is_softkeys_visible = false; |
|
23 }; |
|
24 |
|
25 EmulatorMenu.prototype.log = function(str) { |
|
26 if (!this.enable_log) |
|
27 return false; |
|
28 NOKIA.layout.log("log", NOKIA.menu.log_counter + ' ' + str); |
|
29 NOKIA.layout.log("log", 'is_rsk_overridden: ' |
|
30 + NOKIA.menu.is_rsk_overridden); |
|
31 NOKIA.layout.log("log", 'rsk_label: ' + NOKIA.menu.rsk_label); |
|
32 NOKIA.layout.log("log", 'rsk_event: ' + NOKIA.menu.rsk_event); |
|
33 |
|
34 NOKIA.menu.log_counter++; |
|
35 }; |
|
36 |
|
37 EmulatorMenu.prototype.show = function() { |
|
38 if (NOKIA.menu.is_dimmed) |
|
39 return false; |
|
40 |
|
41 NOKIA.menu.showSoftKeys(); |
|
42 |
|
43 NOKIA.menu.is_menu_visible = true; |
|
44 $("#MenuItemsArea").show(); |
|
45 |
|
46 NOKIA.menu.highlighted_item = $("#MenuItemsArea > ul > li")[0]; |
|
47 NOKIA.menu.highlighted_item.className = 'active'; |
|
48 |
|
49 $("#MenuItemsArea > ul > li").mouseover(function() { |
|
50 if (NOKIA.menu.highlighted_item != null) { |
|
51 NOKIA.menu.highlighted_item.className = ''; |
|
52 NOKIA.menu.highlighted_item = null; |
|
53 } |
|
54 |
|
55 NOKIA.menu.highlighted_item = this; |
|
56 NOKIA.menu.highlighted_item.className = 'active'; |
|
57 }); |
|
58 |
|
59 $("#SoftKeysArea").mouseout(function() { |
|
60 if (!NOKIA.menu.is_menu_visible) { |
|
61 return false; |
|
62 } |
|
63 |
|
64 if (NOKIA.helper.intervalId) { |
|
65 clearInterval(NOKIA.helper.intervalId); |
|
66 } |
|
67 NOKIA.helper.intervalId = setTimeout(function() { |
|
68 NOKIA.menu.cancel(); |
|
69 }, 500); |
|
70 }); |
|
71 |
|
72 // Change the label "Options" to "Select" to LSK |
|
73 $("#LskLabel > a")[0].innerHTML = "Select"; |
|
74 NOKIA.menu.setLsk(NOKIA.menu.selectMenu); |
|
75 |
|
76 // Change the label "Exit" to "Cancel" to RSK |
|
77 $("#RskLabel > a")[0].innerHTML = 'Cancel'; |
|
78 NOKIA.menu.setRsk(NOKIA.menu.cancel); |
|
79 |
|
80 NOKIA.emulator.setMenuItemsStyle(); |
|
81 |
|
82 }; |
|
83 |
|
84 EmulatorMenu.prototype.selectMenu = function() { |
|
85 try { |
|
86 if (typeof NOKIA.menu.highlighted_item.onclick != 'undefined') { |
|
87 eval(NOKIA.menu.highlighted_item.onclick)(); |
|
88 } |
|
89 } catch (e) { |
|
90 |
|
91 } |
|
92 // NOKIA.menu.cancel(); |
|
93 }; |
|
94 |
|
95 EmulatorMenu.prototype.cancel = function() { |
|
96 if (NOKIA.menu.is_dimmed) |
|
97 return false; |
|
98 |
|
99 NOKIA.menu.hideSoftKeys(); |
|
100 |
|
101 NOKIA.menu.is_menu_visible = false; |
|
102 $("#MenuItemsArea").hide(); |
|
103 |
|
104 // Reset the "OPTION" label to LSK |
|
105 $("#LskLabel > a")[0].innerHTML = 'Options'; |
|
106 NOKIA.menu.setLsk(NOKIA.emulator.child.menu.show); |
|
107 |
|
108 // Change the label "CANCEL" to "EXIT" to RSK |
|
109 if (!NOKIA.menu.is_rsk_overridden) { |
|
110 $("#RskLabel > a")[0].innerHTML = 'Exit'; |
|
111 NOKIA.menu.setRsk(NOKIA.menu.exit); |
|
112 } else { |
|
113 $("#RskLabel > a")[0].innerHTML = NOKIA.menu.rsk_label; |
|
114 NOKIA.menu.setRsk(NOKIA.menu.rsk_event); |
|
115 } |
|
116 |
|
117 }; |
|
118 |
|
119 EmulatorMenu.prototype.exit = function() { |
|
120 if (NOKIA.menu.is_dimmed) |
|
121 return false; |
|
122 |
|
123 if (NOKIA.helper.setHomeScreen()) |
|
124 return false; |
|
125 |
|
126 // clear the Menu Settings |
|
127 NOKIA.menu.cancel(); |
|
128 NOKIA.emulator.child.menu.setRightSoftkeyLabel('', null); |
|
129 NOKIA.emulator.child.menu.items = []; |
|
130 NOKIA.menu.softkeys_visibility = false; |
|
131 |
|
132 // Hide Widget DIV |
|
133 NOKIA.menu.hideSoftKeys(); |
|
134 NOKIA.menu.setLsk(function() { |
|
135 }); |
|
136 NOKIA.menu.setRsk(function() { |
|
137 }); |
|
138 |
|
139 $("#WidgetArea").hide(); |
|
140 |
|
141 // Show Icon |
|
142 var style = NOKIA.deviceList[NOKIA.currentDevice][NOKIA.mode]['style']; |
|
143 $('#IconArea').css( { |
|
144 'width' : '100%', |
|
145 'height' : style['widget']['height'] + 'px', |
|
146 'float' : style['widget']['float'] |
|
147 }); |
|
148 |
|
149 $('#IconArea')[0].className = NOKIA.mode + NOKIA.currentDevice; |
|
150 |
|
151 var img = document.createElement('img'); |
|
152 img.src = NOKIA.emulator.iconFile; |
|
153 img.border = 0; |
|
154 |
|
155 var div = document.createElement('div'); |
|
156 var p = document.createElement('p'); |
|
157 |
|
158 if (NOKIA.emulator.plist.DisplayName.length <= 12) |
|
159 p.innerHTML = NOKIA.emulator.plist.DisplayName; |
|
160 else |
|
161 p.innerHTML = NOKIA.emulator.plist.DisplayName.substr(0, 11) + '...'; |
|
162 |
|
163 div.className = 'IconFile'; |
|
164 div.style.marginTop = parseInt(parseInt(style['widget']['height'] / 2) - 80) |
|
165 + 'px'; |
|
166 div.appendChild(img); |
|
167 img.onclick = function() { |
|
168 |
|
169 // close the console DIV |
|
170 NOKIA.layout._console_enabled = false; |
|
171 NOKIA.layout.render(); |
|
172 |
|
173 $("#loaderDiv").html("Widget is loading. Please wait..."); |
|
174 $("#loaderDiv")[0].className = 'green'; |
|
175 $("#loaderDiv").show(); |
|
176 window.setTimeout(function() { |
|
177 document.location = document.location; |
|
178 }, 3000); |
|
179 |
|
180 }; |
|
181 |
|
182 div.appendChild(p); |
|
183 |
|
184 $("#loaderDiv").html("Click on Icon to Launch Widget"); |
|
185 $("#loaderDiv").show(); |
|
186 $("#loaderDiv")[0].className = 'yellow'; |
|
187 |
|
188 $('#IconArea').append(div); |
|
189 $('#IconArea').show(); |
|
190 |
|
191 NOKIA.menu.is_dimmed = true; |
|
192 |
|
193 }; |
|
194 |
|
195 EmulatorMenu.prototype.setLsk = function(func) { |
|
196 // for RSK |
|
197 $('#LskArea')[0].onclick = function() { |
|
198 if (!NOKIA.menu.is_dimmed) |
|
199 func(); |
|
200 }; |
|
201 |
|
202 $('#LskLabel > a')[0].onclick = function() { |
|
203 if (!NOKIA.menu.is_dimmed) |
|
204 func(); |
|
205 }; |
|
206 |
|
207 return true; |
|
208 }; |
|
209 |
|
210 EmulatorMenu.prototype.setRsk = function(func) { |
|
211 // for RSK |
|
212 $('#RskArea')[0].onclick = function() { |
|
213 if (!NOKIA.menu.is_dimmed) |
|
214 func(); |
|
215 }; |
|
216 |
|
217 $('#RskLabel > a')[0].onclick = function() { |
|
218 if (!NOKIA.menu.is_dimmed) |
|
219 func(); |
|
220 }; |
|
221 |
|
222 return true; |
|
223 }; |
|
224 |
|
225 EmulatorMenu.prototype.triggerLsk = function(event) { |
|
226 var callback; |
|
227 if (NOKIA.mode == 'portrait') |
|
228 callback = NOKIA.menu.lsk_event; |
|
229 else if ((NOKIA.mode == 'landscape') && (event.id == 'LskLabel')) |
|
230 callback = NOKIA.menu.lsk_event; |
|
231 else |
|
232 callback = NOKIA.menu.rsk_event; |
|
233 |
|
234 if (typeof callback == 'function' && !NOKIA.menu.is_dimmed) { |
|
235 callback(); |
|
236 } |
|
237 }; |
|
238 |
|
239 EmulatorMenu.prototype.triggerRsk = function(event) { |
|
240 var callback; |
|
241 if (NOKIA.mode == 'portrait') |
|
242 callback = NOKIA.menu.rsk_event; |
|
243 else if ((NOKIA.mode == 'landscape') && (event.id == 'RskLabel')) |
|
244 callback = NOKIA.menu.rsk_event; |
|
245 else |
|
246 callback = NOKIA.menu.lsk_event; |
|
247 |
|
248 if (typeof callback == 'function') { |
|
249 if (!NOKIA.menu.is_dimmed) { |
|
250 callback(); |
|
251 NOKIA.menu.cancel(); |
|
252 } |
|
253 } |
|
254 }; |
|
255 |
|
256 EmulatorMenu.prototype.render = function() { |
|
257 if (!NOKIA.menu.softkeys_visibility) |
|
258 NOKIA.menu.hideSoftKeys(); |
|
259 else |
|
260 NOKIA.menu.showSoftKeys(); |
|
261 |
|
262 NOKIA.emulator.setWidgetStyle(); |
|
263 }; |
|
264 |
|
265 EmulatorMenu.prototype.init = function() { |
|
266 NOKIA.menu.render(); |
|
267 }; |
|
268 |
|
269 EmulatorMenu.prototype.createSFKArea = function() { |
|
270 var a = $('#SoftKeys > a'); |
|
271 a.html(''); |
|
272 |
|
273 var preferences = NOKIA.deviceList[NOKIA.currentDevice][NOKIA.mode]; |
|
274 |
|
275 var lsk = document.createElement('img'); |
|
276 lsk.border = "0"; |
|
277 lsk.id = "LskArea"; |
|
278 lsk.name = "LskArea"; |
|
279 lsk.src = "preview/images/TransperantImage.png"; |
|
280 lsk.style.width = preferences.style.softkeysImg.width; |
|
281 lsk.style.height = preferences.style.softkeysImg.height; |
|
282 |
|
283 var rsk = document.createElement('img'); |
|
284 rsk.border = 0; |
|
285 rsk.id = "RskArea"; |
|
286 rsk.name = "RskArea"; |
|
287 rsk.src = "preview/images/TransperantImage.png"; |
|
288 rsk.style.width = preferences.style.softkeysImg.width; |
|
289 rsk.style.height = preferences.style.softkeysImg.height; |
|
290 |
|
291 if (NOKIA.mode == 'portrait') { |
|
292 lsk.onclick = function() { |
|
293 $("#LskLabel > a").trigger('click'); |
|
294 }; |
|
295 a[0].appendChild(lsk); |
|
296 |
|
297 rsk.onclick = function() { |
|
298 $("#RskLabel > a").trigger('click'); |
|
299 }; |
|
300 a[1].appendChild(rsk); |
|
301 |
|
302 } else { |
|
303 |
|
304 rsk.onclick = function() { |
|
305 $("#RskLabel > a").trigger('click'); |
|
306 }; |
|
307 a[0].appendChild(rsk); |
|
308 |
|
309 lsk.onclick = function() { |
|
310 $("#LskLabel > a").trigger('click'); |
|
311 }; |
|
312 a[1].appendChild(lsk); |
|
313 } |
|
314 |
|
315 }; |
|
316 |
|
317 EmulatorMenu.prototype.showSoftKeys = function() { |
|
318 NOKIA.menu.is_softkeys_visible = true; |
|
319 |
|
320 NOKIA.emulator.setWidgetStyle(); |
|
321 $("#SoftKeysArea").show(); |
|
322 }; |
|
323 |
|
324 EmulatorMenu.prototype.hideSoftKeys = function() { |
|
325 // Hide the SFK's If user hidden them from his code |
|
326 if (!NOKIA.menu.softkeys_visibility) |
|
327 $("#SoftKeysArea").hide(); |
|
328 |
|
329 NOKIA.menu.is_softkeys_visible = false; |
|
330 |
|
331 NOKIA.emulator.setWidgetStyle(); |
|
332 }; |