FreeCalypso > hg > tcs211-c139
comparison g23m/condat/ms/src/bmi/mmiwindow.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:509db1a7b7b8 |
---|---|
1 | |
2 /******************************************************************************* | |
3 | |
4 TI (Shanghai) | |
5 | |
6 ******************************************************************************** | |
7 | |
8 This software product is the property of TI (Shanghai) Ltd and may not be | |
9 disclosed to any third party without the express permission of the owner. | |
10 | |
11 ******************************************************************************** | |
12 | |
13 $Project name: TISHMMI Project | |
14 $Project code: BMI (6349) | |
15 $Module: MMI | |
16 $File: MmiWindow.c | |
17 $Revision: 1.0 | |
18 | |
19 $Author: Yan Bin(bin-yan@ti.com) | |
20 $Date: 28/08/03 | |
21 | |
22 ******************************************************************************** | |
23 | |
24 Description: | |
25 | |
26 This module provides definitions of the types and | |
27 constants which are shared across the MMI window | |
28 application modules. | |
29 | |
30 ******************************************************************************** | |
31 $History: MmiWindow.c | |
32 | |
33 CRR 23959: xpradipg 26 Aug 2004 | |
34 Description: List not updated after deleting the messages in Unsent/Inbox folder | |
35 Solution: The list is refreshed everytime the user returns from the options menu | |
36 | |
37 13 Aug 2004 xreddymn: Extended MFW to support Suspend and Resume of third-party applications | |
38 28/08/03 Original TI(Shanghai) BMI version. | |
39 | |
40 $End | |
41 | |
42 *******************************************************************************/ | |
43 #define MMI_MMIWINDOW_C | |
44 | |
45 #define ENTITY_MFW | |
46 | |
47 /* includes */ | |
48 #include <string.h> | |
49 #include <stdio.h> | |
50 #include <stdlib.h> | |
51 #include <stdarg.h> | |
52 | |
53 #if defined (NEW_FRAME) | |
54 | |
55 #include "typedefs.h" | |
56 #include "vsi.h" | |
57 #include "pei.h" | |
58 #include "custom.h" | |
59 #include "gsm.h" | |
60 | |
61 #else | |
62 | |
63 #include "STDDEFS.H" | |
64 #include "custom.h" | |
65 #include "gsm.h" | |
66 #include "vsi.h" | |
67 | |
68 #endif | |
69 #include "prim.h" | |
70 | |
71 | |
72 #include "mfw_mfw.h" | |
73 #include "mfw_win.h" | |
74 #include "mfw_kbd.h" | |
75 #include "mfw_edt.h" | |
76 #include "mfw_tim.h" | |
77 #include "mfw_phb.h" | |
78 #include "ksd.h" | |
79 #include "psa.h" | |
80 #include "mfw_sms.h" | |
81 #include "mfw_smsi.h" | |
82 #include "mfw_icn.h" | |
83 #include "mfw_mnu.h" | |
84 #include "mfw_lng.h" | |
85 #include "mfw_sat.h" | |
86 #include "mfw_kbd.h" | |
87 #include "mfw_nm.h" | |
88 | |
89 #include "psa_util.h" | |
90 | |
91 #include "dspl.h" | |
92 // #include "unicode_types.h" | |
93 | |
94 #include "MmiMain.h" | |
95 #include "MmiDummy.h" | |
96 //#include "MmiLists.h" | |
97 #include "MmiMmi.h" | |
98 #include "mmiCall.h"//GW 29/11/01 for 'callNumber' | |
99 | |
100 #include "MmiDialogs.h" | |
101 #include "MmiLists.h" | |
102 #include "MmiMenu.h" | |
103 #include "MmiSoftKeys.h" | |
104 //#include "MmiEditor.h" | |
105 #include "MmiBookShared.h" // MZ | |
106 #include "mfw_ffs.h" | |
107 #include "mmiwindow.h" | |
108 | |
109 #include "cus_aci.h" | |
110 | |
111 #include "prim.h" | |
112 #ifndef PCM_2_FFS | |
113 #include "pcm.h" | |
114 #endif | |
115 | |
116 | |
117 #include "aci_cmh.h" //GW 29/11/01 added for types in aci_fd.h | |
118 #include "aci_fd.h" //GW 29/11/01 added for types in 'cmh.h' | |
119 #include "cmh.h" //GW 29/11/01 added for types in 'cmh_phb.h' | |
120 #include "cmh_phb.h" //GW 29/11/01 added for cmhPHB_getAdrStr | |
121 | |
122 #include "mmiColours.h" | |
123 | |
124 //GW 29/11/01 - added header file - removed extern void callNumber(UBYTE* number); | |
125 extern MfwWin* getWinData( MfwHnd win); | |
126 | |
127 /********************************************************************* | |
128 | |
129 DYNAMIC MENU WINDOW. DECLARATION | |
130 | |
131 **********************************************************************/ | |
132 //CRR 23959 - xpradipg 26 Aug 2004 | |
133 //moved the structure declaration to mmiwindow.h | |
134 | |
135 static T_MMIWINDOW* getUserData_T_MMIWINDOW( T_MFW_WIN *win) | |
136 { | |
137 if (win == NULL) | |
138 return (NULL); | |
139 return((T_MMIWINDOW *)win->user); | |
140 } | |
141 | |
142 | |
143 /******************************************************************************* | |
144 | |
145 $Function: MMIWindow_win_cb | |
146 | |
147 $Description: Window callback function of the MMI window | |
148 | |
149 $Returns: none | |
150 | |
151 $Arguments: w - mfw window handler | |
152 e - mfw event | |
153 | |
154 *******************************************************************************/ | |
155 | |
156 static int MMIWindow_win_cb (MfwEvt e, MfwWin *w) | |
157 { | |
158 T_MMIWINDOW* data = (T_MMIWINDOW *)w->user; | |
159 TRACE_FUNCTION ("MMIWindow_win_cb()"); | |
160 switch (e) | |
161 { | |
162 case MfwWinVisible: /* window is visible */ | |
163 SEND_EVENT(data->win,MWM_ONDRAW,0,0 ); | |
164 break; | |
165 | |
166 /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) | |
167 * Implemented suspend and resume functionality for MFW windows | |
168 * The following code posts SUSPEND event | |
169 */ | |
170 case MfwWinSuspend: /* window is suspended */ | |
171 SEND_EVENT(data->win,MWM_SUSPEND,0,0 ); | |
172 break; | |
173 | |
174 /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) | |
175 * Implemented suspend and resume functionality for MFW windows | |
176 * The following code posts RESUME event | |
177 */ | |
178 case MfwWinResume: /* window is resumed */ | |
179 SEND_EVENT(data->win,MWM_RESUME,0,0 ); | |
180 break; | |
181 | |
182 case MfwWinFocussed: /* input focus / selected */ | |
183 case MfwWinDelete: /* window will be deleted */ | |
184 default: | |
185 return MFW_EVENT_REJECTED; | |
186 } | |
187 return MFW_EVENT_CONSUMED; | |
188 } | |
189 | |
190 | |
191 /******************************************************************************* | |
192 | |
193 $Function: MMIWindow_kbd_cb | |
194 | |
195 $Description: keyboard callback function for the MMI window | |
196 | |
197 $Returns: execution status | |
198 | |
199 $Arguments: e - event id | |
200 k - keyboard info | |
201 *******************************************************************************/ | |
202 | |
203 int MMIWindow_kbd_cb (MfwEvt e, MfwKbd *k) | |
204 /* SmsRead_R_OPT keyboard event handler */ | |
205 { | |
206 T_MFW_HND win = mfwParent(mfw_header()); | |
207 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
208 T_MMIWINDOW * data = (T_MMIWINDOW *)win_data->user; | |
209 | |
210 TRACE_FUNCTION ("MMIWindow_kbd_cb()"); | |
211 | |
212 if (e & KEY_LONG) | |
213 { | |
214 switch (k->code) | |
215 { | |
216 case KCD_HUP: /* back to previous menu */ | |
217 mnuEscape(data->menu); | |
218 break; | |
219 case KCD_RIGHT: /* Power Down */ | |
220 return MFW_EVENT_REJECTED; /* handled by idle */ | |
221 default: /* no response to all other keys */ | |
222 return MFW_EVENT_CONSUMED; | |
223 } | |
224 } | |
225 else | |
226 { | |
227 switch (k->code) | |
228 { | |
229 case KCD_MNUUP: /* highlight previous entry */ | |
230 mnuUp(data->menu); | |
231 break; | |
232 case KCD_MNUDOWN: /* highlight next entry */ | |
233 mnuDown(data->menu); | |
234 break; | |
235 case KCD_MNUSELECT: | |
236 case KCD_LEFT: /* activate this entry */ | |
237 mnuSelect(data->menu); | |
238 break; | |
239 case KCD_HUP: /* back to previous menu */ | |
240 case KCD_RIGHT: /* back to previous menu */ | |
241 mnuEscape(data->menu); | |
242 break; | |
243 default: /* no response to all other keys */ | |
244 return MFW_EVENT_CONSUMED; | |
245 } | |
246 } | |
247 return MFW_EVENT_CONSUMED; | |
248 } | |
249 | |
250 | |
251 | |
252 /******************************************************************************* | |
253 | |
254 $Function: MMIWindow_mnu_cb | |
255 | |
256 $Description: Menu callback function for the MMI window | |
257 | |
258 $Returns: none | |
259 | |
260 $Arguments: e - event id | |
261 m - menu handle | |
262 *******************************************************************************/ | |
263 | |
264 static int MMIWindow_mnu_cb (MfwEvt e, MfwMnu *m) | |
265 | |
266 { | |
267 T_MFW_HND win = mfwParent(mfw_header()); | |
268 T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data; | |
269 T_MMIWINDOW * data = (T_MMIWINDOW *)win_data->user; | |
270 | |
271 TRACE_FUNCTION ("MMIWindow_mnu_cb()"); | |
272 | |
273 switch (e) | |
274 { | |
275 case E_MNU_ESCAPE: /* back to previous menu */ | |
276 MMI_DestoryWindow(data->win); | |
277 break; | |
278 default: /* in mnuCreate() only E_MNU_ESCAPE has been enabled! */ | |
279 return MFW_EVENT_REJECTED; | |
280 } | |
281 return MFW_EVENT_CONSUMED; | |
282 } | |
283 | |
284 | |
285 GLOBAL_EXT T_MFW_HND MMI_CreateWindow(T_MFW_HND hWinParent, | |
286 T_DIALOG_FUNC win_exec_cb, | |
287 void * parameter, | |
288 MfwCb kbd_cb, | |
289 MfwMnuAttr *pMnuAttr, | |
290 unsigned long dwStyle) | |
291 { | |
292 T_MMIWINDOW* data = (T_MMIWINDOW *)ALLOC_MEMORY (sizeof (T_MMIWINDOW)); | |
293 T_MFW_WIN * win; | |
294 | |
295 TRACE_FUNCTION ("MMI_CreateWindow()"); | |
296 | |
297 memset(data,0,sizeof (T_MMIWINDOW)); | |
298 /* | |
299 * Create window handler | |
300 */ | |
301 | |
302 /* xreddymn Aug-09-2004, MMI-SPR-23964 (TII_MMS33) | |
303 * Implemented suspend and resume functionality for MFW windows | |
304 * Subscribed for MfwWinSuspend and MfwWinResume events | |
305 */ | |
306 data->win =win_create (hWinParent, 0, E_WIN_VISIBLE|MfwWinSuspend|MfwWinResume, (T_MFW_CB)MMIWindow_win_cb); | |
307 if (data->win EQ NULL) | |
308 { | |
309 return NULL; | |
310 } | |
311 /* | |
312 * connect the dialog data to the MFW-window | |
313 */ | |
314 | |
315 data->mmi_control.dialog = (T_DIALOG_FUNC)win_exec_cb; | |
316 data->mmi_control.data = data; | |
317 win = getWinData(data->win); | |
318 win->user = (void *)data; | |
319 | |
320 data->parent = hWinParent; | |
321 data->id = 0; | |
322 data->info_win=0; | |
323 | |
324 if(pMnuAttr) | |
325 { | |
326 //CRR 23959: xpradipg 26 Aug 2004 | |
327 //Do not create the default kbd handler if there is one specified | |
328 if(!kbd_cb) | |
329 { | |
330 data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)MMIWindow_kbd_cb); | |
331 data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)MMIWindow_kbd_cb); | |
332 } | |
333 data->menu = mnuCreate(data->win,pMnuAttr, E_MNU_ESCAPE, (MfwCb)MMIWindow_mnu_cb); | |
334 mnuLang(data->menu,mainMmiLng); | |
335 /* put the (new) dialog window on top of the window stack */ | |
336 mnuUnhide(data->menu); | |
337 } | |
338 //CRR 23959: xpradipg 26 Aug 2004 | |
339 //check for the keyboard handler irrespective of the menu attribute presence | |
340 if(kbd_cb) | |
341 { | |
342 data->kbd = kbdCreate(data->win,KEY_ALL, (MfwCb)kbd_cb); | |
343 data->kbd_long = kbdCreate(data->win,KEY_ALL|KEY_LONG,(MfwCb)kbd_cb); | |
344 } | |
345 | |
346 | |
347 if (data->win NEQ NULL) | |
348 { | |
349 SEND_EVENT (data->win, MWM_CREATE, 0, (void *)parameter); | |
350 } | |
351 | |
352 winShow(data->win); | |
353 return data->win; | |
354 | |
355 } | |
356 GLOBAL_EXT T_MFW_HND MMI_DestoryWindow(T_MFW_HND hWin) | |
357 { | |
358 T_MFW_WIN * win_data; | |
359 T_MMIWINDOW* data; | |
360 USHORT i; | |
361 | |
362 TRACE_FUNCTION ("MMI_DestoryWindow()"); | |
363 | |
364 if (hWin) | |
365 { | |
366 win_data = getWinData(hWin); | |
367 data = getUserData_T_MMIWINDOW(win_data); | |
368 SEND_EVENT (data->win, MWM_DESTORY, 0, (void *)0); | |
369 if (data) | |
370 { | |
371 /* | |
372 * Delete WIN handler | |
373 */ | |
374 | |
375 if (data->info_win) | |
376 { | |
377 SEND_EVENT(data->info_win,DIALOG_DESTROY,0,0 ); | |
378 data->info_win = 0; | |
379 } | |
380 if (data->list_win){ | |
381 SEND_EVENT(data->list_win,DIALOG_DESTROY,0,0 ); | |
382 data->list_win = 0; | |
383 } | |
384 if (data->kbd) | |
385 { | |
386 kbd_delete(data->kbd); | |
387 data->kbd = 0; | |
388 } | |
389 if (data->kbd_long) | |
390 { | |
391 kbd_delete(data->kbd_long); | |
392 data->kbd_long = 0; | |
393 } | |
394 if (data->menu){ | |
395 mnuDelete(data->menu); | |
396 data->menu=0; | |
397 } | |
398 | |
399 win_delete (data->win); | |
400 FREE_MEMORY ((void *)data, sizeof (T_MMIWINDOW)); | |
401 | |
402 }else | |
403 { | |
404 TRACE_EVENT ("MMSBox_destory() called twice"); | |
405 } | |
406 } | |
407 } | |
408 | |
409 GLOBAL_EXT T_MFW_HND MMI_ParentWindow(T_MFW_HND hWin) | |
410 { | |
411 T_MFW_WIN * win_data; | |
412 T_MMIWINDOW* data; | |
413 | |
414 TRACE_FUNCTION ("MMI_ParentWindow()"); | |
415 | |
416 if (hWin) | |
417 { | |
418 win_data = getWinData(hWin); | |
419 data = getUserData_T_MMIWINDOW(win_data); | |
420 return data->parent; | |
421 } | |
422 return NULL; | |
423 } | |
424 | |
425 #undef MMI_MMIWINDOW_C | |
426 | |
427 |