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 *******************************************************************************/ |
