FreeCalypso > hg > leo2moko-debug
comparison g23m/condat/ms/src/bmi/MmiBookDetailsWindow.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 CONDAT (UK) | |
4 | |
5 ******************************************************************************** | |
6 | |
7 This software product is the property of Condat (UK) Ltd and may not be | |
8 disclosed to any third party without the express permission of the owner. | |
9 | |
10 ******************************************************************************** | |
11 | |
12 $Project name: Basic MMI | |
13 $Project code: BMI (6349) | |
14 $Module: PhoneBook | |
15 $File: MmiBookDetailsWindow.h | |
16 $Revision: 1.0 | |
17 | |
18 $Author: Condat(UK) | |
19 $Date: 25/10/00 | |
20 | |
21 ******************************************************************************** | |
22 | |
23 Description: | |
24 | |
25 Provides the details handlig for the phone book | |
26 | |
27 | |
28 ******************************************************************************** | |
29 $History: MmiBookDetailsWindow.h | |
30 | |
31 25/10/00 Original Condat(UK) BMI version. | |
32 | |
33 $End | |
34 | |
35 *******************************************************************************/ | |
36 | |
37 | |
38 | |
39 | |
40 /******************************************************************************* | |
41 | |
42 Include Files | |
43 | |
44 *******************************************************************************/ | |
45 #define ENTITY_MFW | |
46 | |
47 /* includes */ | |
48 #include <string.h> | |
49 #include <stdio.h> | |
50 #include <stdlib.h> | |
51 | |
52 #if defined (NEW_FRAME) | |
53 | |
54 #include "typedefs.h" | |
55 #include "vsi.h" | |
56 #include "pei.h" | |
57 #include "custom.h" | |
58 #include "gsm.h" | |
59 | |
60 #else | |
61 | |
62 #include "STDDEFS.H" | |
63 #include "custom.h" | |
64 #include "gsm.h" | |
65 #include "vsi.h" | |
66 | |
67 #endif | |
68 | |
69 #include "mfw_sys.h" | |
70 | |
71 #include "mfw_mfw.h" | |
72 #include "mfw_win.h" | |
73 #include "mfw_kbd.h" | |
74 #include "mfw_lng.h" | |
75 /* SPR#1428 - SH - New Editor changes */ | |
76 #ifndef NEW_EDITOR | |
77 #include "mfw_edt.h" | |
78 #endif | |
79 #include "mfw_icn.h" | |
80 #include "mfw_mnu.h" | |
81 #include "mfw_tim.h" | |
82 | |
83 #include "mfw_sim.h" | |
84 #include "mfw_cm.h" | |
85 #include "mfw_nm.h" | |
86 #include "mfw_phb.h" | |
87 #include "mfw_mme.h" | |
88 #include "mfw_sat.h" | |
89 #include "mfw_sms.h" | |
90 | |
91 #include "dspl.h" | |
92 | |
93 #include "ksd.h" | |
94 #include "psa.h" | |
95 | |
96 #include "MmiMain.h" | |
97 #include "MmiBookController.h" | |
98 #include "MmiDummy.h" | |
99 #include "MmiDialogs.h" | |
100 #include "MmiLists.h" | |
101 | |
102 | |
103 | |
104 #include "MmiMenu.h" | |
105 #include "mmiCall.h" | |
106 #include "Mmiicons.h" | |
107 #include "MmiIdle.h" | |
108 | |
109 #include "MmiSoftKeys.h" | |
110 #include "MmiSounds.h" | |
111 #include "MmiIdle.h" | |
112 #include "MmiNetwork.h" | |
113 #include "mmiSat_i.h" | |
114 #include "MmiAoc.h" | |
115 | |
116 #include "gdi.h" | |
117 #include "audio.h" | |
118 | |
119 #include "cus_aci.h" | |
120 #include "mfw_ffs.h" | |
121 #include "MmiTimers.h" | |
122 | |
123 #include "MmiBookShared.h" | |
124 | |
125 #include "mmiColours.h" | |
126 | |
127 | |
128 | |
129 /******************************************************************************* | |
130 | |
131 Private Methods | |
132 | |
133 *******************************************************************************/ | |
134 | |
135 | |
136 /******************************************************************************* | |
137 | |
138 $Function: bookDetailsDialog | |
139 | |
140 $Description: Dialog function for the details window, doesn't currently do | |
141 anything | |
142 | |
143 $Returns: None | |
144 | |
145 $Arguments: win, window handle | |
146 event, event to be handled | |
147 value, not used | |
148 parameter, not used | |
149 | |
150 *******************************************************************************/ | |
151 | |
152 static void bookDetailsDialog ( T_MFW_HND win, USHORT event, SHORT value, void *parameter ) | |
153 { | |
154 T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; | |
155 tBookStandard *data = (tBookStandard *)win_data->user; | |
156 T_MFW_PHB_ENTRY *entry; | |
157 /* SPR#1428 - SH - New Editor changes | |
158 * Insert the ascii or unicode name into the buffer */ | |
159 #ifdef NEW_EDITOR | |
160 T_ATB_TEXT nameText; | |
161 T_ATB_TEXT numberText; | |
162 | |
163 TRACE_FUNCTION("bookDetailsDialog"); | |
164 | |
165 entry = &data->phbk->current.entry[ data->phbk->current.selectedName ]; | |
166 /*SPR 2175, no need to do any GSM->ASCII conversions, removed conversion code*/ | |
167 | |
168 | |
169 numberText.dcs = ATB_DCS_ASCII; | |
170 numberText.data = entry->number; | |
171 ATB_string_Length(&numberText); | |
172 | |
173 if ( entry->name.data[0] ==0x80) | |
174 { | |
175 | |
176 /* UNICODE */ | |
177 TRACE_EVENT("***UNICODE OUTPUT***"); | |
178 nameText.dcs = ATB_DCS_UNICODE; | |
179 nameText.data = &entry->name.data[2]; | |
180 } | |
181 else | |
182 { | |
183 nameText.dcs = ATB_DCS_ASCII; | |
184 nameText.data = entry->name.data; | |
185 } | |
186 | |
187 ATB_string_Length(&nameText); | |
188 | |
189 ATB_edit_ResetMode(data->editor, ED_MODE_READONLY); /* Switch off read only to add text */ | |
190 ATB_edit_InsertString(data->editor, &nameText); /* Insert name string */ | |
191 ATB_edit_Char(data->editor, ctrlEnter, FALSE); /* Insert carriage return */ | |
192 ATB_edit_InsertString(data->editor, &numberText); /* Insert number string */ | |
193 ATB_edit_SetMode(data->editor, ED_MODE_READONLY); /* Switch on read only again */ | |
194 | |
195 /* Text has changed, so refresh word wrap */ | |
196 ATB_edit_Refresh(data->editor); | |
197 | |
198 win_show(data->win); | |
199 | |
200 #endif /* NEW_EDITOR */ | |
201 | |
202 } | |
203 | |
204 | |
205 | |
206 | |
207 /******************************************************************************* | |
208 | |
209 $Function: bookDetailsWindowCB | |
210 | |
211 $Description: Window event handler | |
212 | |
213 $Returns: MFW_EVENT_CONSUMED for the window visible event, | |
214 MFW_EVENT_PASSED otherwise | |
215 | |
216 $Arguments: e, event, w, window handle | |
217 | |
218 *******************************************************************************/ | |
219 | |
220 static int bookDetailsWindowCB ( MfwEvt e, MfwWin *w ) | |
221 { | |
222 tBookStandard *data = (tBookStandard *)w->user; | |
223 T_MFW_PHB_ENTRY *ptr; // dat; | |
224 // char debug[50]; // RAVI | |
225 | |
226 TRACE_FUNCTION("bookDetailsWindowCB"); | |
227 switch( e ) | |
228 { | |
229 case MfwWinVisible: | |
230 { | |
231 /* handle the visible event, start by shoing the default information | |
232 */ | |
233 MmiBookShowDefault(); | |
234 | |
235 /* SPR#1428 - SH - New Editor: display editor here rather than filling up the information. Do that in | |
236 * dialog function above. */ | |
237 | |
238 #ifdef NEW_EDITOR | |
239 ATB_edit_Show(data->editor); | |
240 resources_setTitleColour(COLOUR_EDITOR); | |
241 | |
242 /* TITLE */ | |
243 | |
244 dspl_Clear(0,0, SCREEN_SIZE_X-1, data->editor->attr->win_size.py-1); | |
245 PROMPT(0,0,0,TxtDetails); | |
246 #else /* NEW_EDITOR */ | |
247 /* Build and show the editor | |
248 */ | |
249 ptr = &data->phbk->current.entry[ data->phbk->current.selectedName ]; | |
250 #ifdef NO_ASCIIZ | |
251 | |
252 #ifdef EASY_TEXT_ENABLED | |
253 /*MC SPR 1242, changed macros to function calls e.g FIRST_LINE_CHINESE->Mmi_layout_first_line()*/ | |
254 if ( ptr->name.data[0] ==0x80)//if unicode | |
255 { | |
256 TRACE_EVENT("***UNICODE OUTPUT***"); | |
257 dspl_TextOut(0,0,DSPL_TXTATTR_UNICODE,(char *)&ptr->name.data[2]); | |
258 if ((ptr->name.data[MAX_LINE+2] != 0) && ptr->name.data[MAX_LINE+3] != 0) | |
259 dspl_TextOut(0,Mmi_layout_line(1),DSPL_TXTATTR_UNICODE,(char *)&(ptr->name.data[MAX_LINE+2])); | |
260 dspl_TextOut(0,Mmi_layout_line(2),0,(char *)ptr->number); | |
261 if (strlen((char*)ptr->number) > MAX_LINE) | |
262 dspl_TextOut(0,Mmi_layout_line(1)+numberLineHeight(),0, (char*)&ptr->number[MAX_LINE]); | |
263 } | |
264 else | |
265 #endif /* EASY_TEXT_ENABLED */ | |
266 { | |
267 // convert from GSM to Alpha characters | |
268 bookGsm2Alpha( (UBYTE *) ptr->name.data ); | |
269 | |
270 sprintf( data->edtBuf,"%s%s%s", (char *) ptr->name.data, "\n", (char *) ptr->number); | |
271 edtShow(data->edt); | |
272 } | |
273 #else /* NO_ASCIIZ */ | |
274 { | |
275 sprintf( data->edtBuf,"%s%s%s", (char *) ptr->name, "\n", (char *) ptr->number); | |
276 edtShow(data->edt); | |
277 } | |
278 #endif /* NO_ASCIIZ */ | |
279 #endif /* NEW_EDITOR */ | |
280 /* pop up the soft keys | |
281 */ | |
282 displaySoftKeys( TxtSoftCall, /* TxtSoftOptions */ TxtSoftBack ); | |
283 } | |
284 break; | |
285 | |
286 default: | |
287 { | |
288 /* default handler just indicate event not handled | |
289 */ | |
290 return MFW_EVENT_PASSED; | |
291 } | |
292 } | |
293 | |
294 return MFW_EVENT_CONSUMED; | |
295 } | |
296 | |
297 | |
298 /******************************************************************************* | |
299 | |
300 $Function: bookDetailsKbdCB | |
301 | |
302 $Description: Keyboard handler | |
303 | |
304 $Returns: MFW_EVENT_CONSUMED always | |
305 | |
306 $Arguments: e, event, k, key handle | |
307 | |
308 *******************************************************************************/ | |
309 | |
310 static int bookDetailsKbdCB ( MfwEvt e, MfwKbd *k ) | |
311 { | |
312 T_MFW_HND win = mfwParent( mfw_header() ); | |
313 T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data; | |
314 tBookStandard *data = (tBookStandard *) win_data->user; | |
315 tMmiPhbData *Current = &data->phbk->current; | |
316 | |
317 TRACE_FUNCTION("bookDetailsKbdCB()"); | |
318 | |
319 /* Handle the key events | |
320 */ | |
321 switch (k->code) | |
322 { | |
323 case KCD_MNUUP: | |
324 break; | |
325 | |
326 case KCD_MNUDOWN: | |
327 break; | |
328 | |
329 case KCD_MNUSELECT: | |
330 case KCD_CALL: | |
331 case KCD_LEFT: | |
332 { | |
333 /* select to make the call | |
334 */ | |
335 callNumber( Current->entry[ Current->selectedName ].number ); | |
336 bookPhonebookDestroy( data->phbk->win ); | |
337 } | |
338 break; | |
339 | |
340 case KCD_RIGHT: | |
341 { | |
342 /* start up the options menu | |
343 */ | |
344 //Cancel this screen | |
345 bookDetailsDestroy( data->win ); | |
346 } | |
347 break; | |
348 | |
349 case KCD_HUP: | |
350 { | |
351 /* Cancel this menu | |
352 */ | |
353 bookDetailsDestroy( data->win ); | |
354 } | |
355 break; | |
356 | |
357 default: | |
358 { | |
359 /* default handling is to get us out of here | |
360 */ | |
361 memset( data->edtBuf, '\0', sizeof( data->edtBuf ) ); | |
362 sprintf( data->edtBuf, "%s%c", (char *) Current->entry[ Current->selectedName ].number, editControls[ k->code ] ); | |
363 idleDialBuffer( data->edtBuf ); | |
364 bookPhonebookDestroy( data->phbk->win ); | |
365 } | |
366 break; | |
367 } | |
368 | |
369 return MFW_EVENT_CONSUMED; | |
370 } | |
371 | |
372 | |
373 /******************************************************************************* | |
374 | |
375 $Function: bookDetailsKbdLongCB | |
376 | |
377 $Description: Keyboard Long Press event handler | |
378 | |
379 $Returns: MFW_EVENT_CONSUMED always | |
380 | |
381 $Arguments: e, event, k, keyboard handle | |
382 | |
383 *******************************************************************************/ | |
384 | |
385 static int bookDetailsKbdLongCB( MfwEvt e, MfwKbd *k ) | |
386 { | |
387 T_MFW_HND win = mfwParent( mfw_header() ); | |
388 T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; | |
389 tBookStandard *data = (tBookStandard *) win_data->user; | |
390 | |
391 /* hand a long clear event only | |
392 */ | |
393 if ( ( e & KEY_CLEAR ) && ( e & KEY_LONG ) ) | |
394 bookDetailsDestroy( data->win ); | |
395 | |
396 return MFW_EVENT_CONSUMED; | |
397 } | |
398 | |
399 | |
400 | |
401 | |
402 /******************************************************************************* | |
403 | |
404 $Function: bookDetailsCreate | |
405 | |
406 $Description: create an instance of the details window | |
407 | |
408 $Returns: handle of newly created window, or NULL if we fail to create | |
409 | |
410 $Arguments: parent, handle of parent window | |
411 | |
412 *******************************************************************************/ | |
413 | |
414 static T_MFW_HND bookDetailsCreate(MfwHnd parent) | |
415 { | |
416 T_MFW_WIN *parent_win_data = ( (T_MFW_HDR *) parent )->data; | |
417 T_phbk *phbk = (T_phbk *)parent_win_data->user; | |
418 T_MFW_WIN *win_data; | |
419 tBookStandard *data; | |
420 | |
421 TRACE_FUNCTION ("bookDetailsCreate()"); | |
422 | |
423 /* allocate memory for our control block | |
424 */ | |
425 if ( ( data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) ) ) == NULL ) | |
426 return NULL; | |
427 | |
428 /* Create the window if we can | |
429 */ | |
430 if ( ( data->win = win_create( parent, 0, E_WIN_VISIBLE, (T_MFW_CB) bookDetailsWindowCB ) ) == NULL ) | |
431 { | |
432 FREE_MEMORY( (void *)data, sizeof( tBookStandard ) ); | |
433 return NULL; | |
434 } | |
435 | |
436 /* Okay, we have created the control block and the window, so | |
437 we now need to configure the dialog and data pointers | |
438 */ | |
439 data->mmi_control.dialog = (T_DIALOG_FUNC) bookDetailsDialog; | |
440 data->mmi_control.data = data; | |
441 win_data = ((T_MFW_HDR *)data->win)->data; | |
442 win_data->user = (void *) data; | |
443 data->phbk = phbk; | |
444 data->parent_win = parent; | |
445 | |
446 /* create keyboards and menus for our window | |
447 */ | |
448 data->kbd = kbdCreate( data->win, KEY_ALL, (MfwCb) bookDetailsKbdCB ); | |
449 data->kbd_long = kbdCreate( data->win, KEY_ALL | KEY_LONG, (MfwCb) bookDetailsKbdLongCB ); | |
450 | |
451 /* 1945 MZ Initialise the edtBuf */ | |
452 memset(data->edtBuf,'\0', STANDARD_EDITOR_SIZE ); | |
453 | |
454 /* SPR#1428 - SH - New Editor changes */ | |
455 #ifdef NEW_EDITOR | |
456 AUI_edit_SetAttr( &data->editor_attr, BOOKDETAILS_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_READONLY, ED_CURSOR_NONE, ATB_DCS_UNICODE/*SPR1752*/, (UBYTE *)data->edtBuf, STANDARD_EDITOR_SIZE); | |
457 data->editor = ATB_edit_Create( &data->editor_attr, 0 ); | |
458 SEND_EVENT(data->win, 0, 0, 0); | |
459 ATB_edit_Init(data->editor); | |
460 #else /*NEW_EDITOR*/ | |
461 // API - 08-01-03 - 1540 - change edtCurBar1 to edtCurNone | |
462 bookSetEditAttributes( BOOKDETAILS_EDITOR, COLOUR_EDITOR_XX, 0, edtCurNone, 0, data->edtBuf, STANDARD_EDITOR_SIZE, &data->attr ); | |
463 data->edt = edtCreate( data->win, &data->attr, 0, 0 ); | |
464 edtUnhide( data->edt ); | |
465 #endif /*NEW_EDITOR*/ | |
466 | |
467 /* allow the window and menu to be created | |
468 */ | |
469 mnuUnhide(data->menu); | |
470 winShow(data->win); | |
471 | |
472 /* And return the handle of the newly created window | |
473 */ | |
474 return data->win; | |
475 } | |
476 | |
477 | |
478 | |
479 | |
480 /******************************************************************************* | |
481 | |
482 Public Methods | |
483 | |
484 *******************************************************************************/ | |
485 | |
486 | |
487 /******************************************************************************* | |
488 | |
489 $Function: bookDetailsStart | |
490 | |
491 $Description: Start routine for the phonebook details window | |
492 | |
493 $Returns: None, assigns the window handle to the name_details_win | |
494 hook in the current phone book | |
495 | |
496 $Arguments: m, menu, i, menu item | |
497 | |
498 *******************************************************************************/ | |
499 | |
500 void bookDetailsStart( MfwMnu* m, MfwMnuItem* i ) | |
501 { | |
502 T_MFW_HND win = mfwParent(mfw_header()); | |
503 T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data; | |
504 tBookStandard *data = (tBookStandard *)win_data->user; | |
505 | |
506 TRACE_FUNCTION ("bookDetailsStart()"); | |
507 | |
508 data->phbk->name_details_win = bookDetailsCreate( data->phbk->win ); | |
509 } | |
510 | |
511 | |
512 | |
513 | |
514 /******************************************************************************* | |
515 | |
516 $Function: bookDetailsDestroy | |
517 | |
518 $Description: Destroy the phone book details window | |
519 | |
520 $Returns: None | |
521 | |
522 $Arguments: window, handle of window to close | |
523 | |
524 *******************************************************************************/ | |
525 | |
526 void bookDetailsDestroy( MfwHnd window ) | |
527 { | |
528 T_MFW_WIN *win = ((T_MFW_HDR *)window)->data; | |
529 tBookStandard *data = (tBookStandard *)win->user; | |
530 | |
531 TRACE_FUNCTION ("bookDetailsdestroy()"); | |
532 | |
533 /* Only need to do this if the data is valid | |
534 */ | |
535 if ( data ) | |
536 { | |
537 /* SPR#1428 - SH - New Editor changes */ | |
538 #ifdef NEW_EDITOR | |
539 /* New editor no longer destroyed with winDelete, | |
540 * so destroy it here */ | |
541 if (data->editor) | |
542 { | |
543 ATB_edit_Destroy(data->editor); | |
544 } | |
545 #endif /* NEW_EDITOR */ | |
546 data->phbk->name_details_win = 0; | |
547 winDelete( data->win ); | |
548 FREE_MEMORY( (void *)data, sizeof( tBookStandard ) ); | |
549 } | |
550 } | |
551 | |
552 | |
553 | |
554 | |
555 /******************************************************************************* | |
556 | |
557 End of File | |
558 | |
559 *******************************************************************************/ |