comparison g23m/condat/ms/src/bmi/MmiBookSDNWindow.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: MmiBookSDNWindow.c
16 $Revision: 1.0
17
18 $Author: Condat(UK)
19 $Date: 25/10/00
20
21 ********************************************************************************
22
23 Description:
24
25 This module provides the service numbers window for the phone book
26
27 ********************************************************************************
28 $History: MmiBookSDNWindow.c
29
30 CRR: 25302 - xpradipg 10 Nov 2004
31 Description: Should be able to select the number fro the phonebook while
32 sending MMS/EMS.
33 Solution: The new feature to select the number from phonebook while sending
34 MMS/EMS is added
35 25/10/00 Original Condat(UK) BMI version.
36
37 $End
38
39 *******************************************************************************/
40
41
42
43
44 /*******************************************************************************
45
46 Include Files
47
48 *******************************************************************************/
49 #define ENTITY_MFW
50
51 /* includes */
52 #include <string.h>
53 #include <stdio.h>
54 #include <stdlib.h>
55
56 #if defined (NEW_FRAME)
57
58 #include "typedefs.h"
59 #include "vsi.h"
60 #include "pei.h"
61 #include "custom.h"
62 #include "gsm.h"
63
64 #else
65
66 #include "STDDEFS.H"
67 #include "custom.h"
68 #include "gsm.h"
69 #include "vsi.h"
70
71 #endif
72
73 #include "mfw_sys.h"
74
75 #include "mfw_mfw.h"
76 #include "mfw_win.h"
77 #include "mfw_kbd.h"
78 #include "mfw_lng.h"
79 /* SPR#1428 - SH - New Editor changes */
80 #ifndef NEW_EDITOR
81 #include "mfw_edt.h"
82 #endif
83 #include "mfw_icn.h"
84 #include "mfw_mnu.h"
85 #include "mfw_tim.h"
86
87 #include "mfw_sim.h"
88 #include "mfw_cm.h"
89 #include "mfw_nm.h"
90 #include "mfw_phb.h"
91 #include "mfw_mme.h"
92 #include "mfw_sat.h"
93 #include "mfw_sms.h"
94 #include "mfw_cnvt.h" //GW Added for 'mfw_SIM2GsmStr'
95
96 #include "dspl.h"
97
98 #include "ksd.h"
99 #include "psa.h"
100
101 #include "MmiMain.h"
102 #include "MmiBookController.h"
103 #include "MmiDummy.h"
104 #include "MmiDialogs.h"
105 #include "MmiLists.h"
106
107
108
109 #include "MmiMenu.h"
110 #include "mmiCall.h"
111 #include "Mmiicons.h"
112 #include "MmiIdle.h"
113
114 #include "MmiSoftKeys.h"
115 #include "MmiSounds.h"
116 #include "MmiIdle.h"
117 #include "MmiNetwork.h"
118 #include "mmiSat_i.h"
119 #include "MmiAoc.h"
120
121 #include "gdi.h"
122 #include "audio.h"
123
124 #include "cus_aci.h"
125 #include "mfw_ffs.h"
126 #include "MmiTimers.h"
127
128 #include "MmiBookShared.h"
129
130 #include "mmiColours.h"
131
132
133
134
135 /*******************************************************************************
136
137 Private methods
138
139 *******************************************************************************/
140
141 /*******************************************************************************
142
143 $Function: bookSDN
144
145 $Description: window dialog function
146
147 $Returns: none.
148
149 $Arguments: win, window handle
150 event, event to be handled
151 value, not used
152 parameter, not used
153
154 *******************************************************************************/
155
156 static void bookSDN( T_MFW_HND win, USHORT event, SHORT value, void * parameter )
157 {
158 T_MFW_WIN *win_data = ((T_MFW_HDR *) win)->data;
159 tBookStandard *data = (tBookStandard *)win_data->user;
160 MfwMnu *mnu;
161 tMmiPhbData *my;
162
163 TRACE_FUNCTION ("bookSDN()");
164
165 /* Guard against bad incoming data
166 */
167 if ( ! data )
168 return;
169
170 /* Grab the current phonebook data element, we use this a lot
171 */
172 my = &data->phbk->current;
173
174 /* simple event handler, dealing with the messages we know about
175 */
176 switch (event)
177 {
178 case SEARCH_INIT:
179 {
180 /* Search initialise, no action required
181 */
182 }
183 break;
184
185 case SEARCH_SCROLL_UP:
186 {
187 /* Scroll up event we need to deal with correctly
188 */
189 if ( ( my->index==1 ) && ( my->selectedName == 0 ) )
190 {
191 /* select the correct boundary for the list
192 */
193 my->selectedName = my->status.used_entries;
194 if ( my->selectedName > MAX_SEARCH_NAME )
195 my->selectedName = MAX_SEARCH_NAME;
196
197 /* and subtract one cos we are dealing with an array starting
198 at zero
199 */
200 my->selectedName--;
201
202 /* and calculate the correct index value
203 */
204 my->index = my->status.used_entries - my->selectedName;
205
206 }
207 else
208 {
209 if ( my->selectedName == 0 )
210 my->index--;
211 else
212 my->selectedName--;
213 }
214
215 /* update menu structures
216 */
217 mnu = (MfwMnu *)mfwControl( data->menu );
218 mnu->lCursor[ mnu->level ] = my->selectedName;
219
220 /* and go find the name
221 */
222 bookFindName( MAX_SEARCH_NAME, &data->phbk->current );
223 }
224 break;
225
226 case SEARCH_SCROLL_DOWN:
227 {
228 /* scroll down event is a bit easier than the scroll up
229 */
230 if ( (my->index + my->selectedName) == my->status.used_entries )
231 {
232 my->index = 1;
233 my->selectedName = 0;
234 }
235 else
236 {
237 if ( my->selectedName == (MAX_SEARCH_NAME - 1) )
238 my->index++;
239 else
240 my->selectedName++;
241 }
242
243 /* update menu structures
244 */
245 mnu = (MfwMnu *)mfwControl( data->menu );
246 mnu->lCursor[ mnu->level ] = my->selectedName;
247
248 /* and go find the name
249 */
250 bookFindName( MAX_SEARCH_NAME, &data->phbk->current );
251 }
252 break;
253
254 case SEARCH_STRING:
255 {
256 /* search for the current element selected in our buffer
257 */
258 my->index = my->index + my->selectedName;
259
260 if ( bookSearchName( data->edtBuf, MAX_SEARCH_NAME, &data->phbk->current ) == MFW_PHB_OK )
261 {
262 if ( my->index > (my->status.used_entries - MAX_SEARCH_NAME + 1) )
263 {
264 /* need to reorganise a bit here
265 */
266 if ( my->status.used_entries > MAX_SEARCH_NAME )
267 {
268 my->selectedName = my->index - my->status.used_entries;
269 my->selectedName += MAX_SEARCH_NAME - 1;
270 my->index -= my->selectedName;
271 }
272 else
273 {
274 my->selectedName = my->index - 1;
275 my->index = 1;
276 }
277
278 /* find the appropriate name
279 */
280 bookFindName( MAX_SEARCH_NAME, &data->phbk->current );
281 }
282 else
283 data->phbk->current.selectedName = 0;
284
285 /* update menu structures
286 */
287 mnu = (MfwMnu *)mfwControl(data->menu);
288 mnu->lCursor[mnu->level] = data->phbk->current.selectedName;
289 }
290 }
291 break;
292
293 case SEARCH_UPDATE:
294 {
295 /* Update search message
296 */
297 my->index = 1;
298 my->selectedName = 0;
299 memset( data->edtBuf, '\0', sizeof( data->edtBuf ) );
300 /* SPR#1428 - SH - New Editor changes */
301 #ifdef NEW_EDITOR
302 ATB_edit_Reset( data->editor );
303 #else /* NEW_EDITOR */
304 edtReset( data->edt );
305 #endif /* NEW_EDITOR */
306
307 /* deal with the new search using the method above
308 */
309 SEND_EVENT( win, SEARCH_STRING, 0, 0 );
310 }
311 break;
312
313 /* SPR#1428 - SH - New Editor: added event so we can
314 * prompt a redraw when required. */
315 #ifdef NEW_EDITOR
316 case SEARCH_REDRAW:
317 win_show(data->win);
318 break;
319 #endif
320
321 default:
322 {
323 /* no default handler, just ignore any other messages
324 */
325 }
326 break;
327
328 }
329
330 }
331
332
333
334
335 /*******************************************************************************
336
337 $Function: bookSDNWinCB
338
339 $Description: Window call back function
340
341 $Returns: status indicating if event handled or not
342
343 $Arguments: e, event, w, window handle
344
345 *******************************************************************************/
346
347 static int bookSDNWinCB( MfwEvt e, MfwWin *w )
348 {
349 tBookStandard *data = (tBookStandard *)w->user;
350
351 char *ElemPtr, *NumPtr;
352 int leftKey, rightKey, ElemSize, i, Position;
353
354 TRACE_FUNCTION ("phbk_sdn_win_cb()");
355
356 switch (e)
357 {
358 case MfwWinVisible:
359 {
360 /* Paint function, clear the screen and paint in each
361 of our controls
362 */
363 dspl_ClearAll();
364
365 /* SPR#1428 - SH - New Editor changes */
366 #ifdef NEW_EDITOR
367 ATB_edit_Show(data->editor);
368 #else /* NEW_EDITOR */
369 edtShow(data->edt);
370 #endif /* NEW_EDITOR */
371
372 /* Populate the names screen buffer
373 */
374 for (i=0;i<MAX_SEARCH_NAME;i++)
375 {
376 /* Grab info for this element
377 */
378 ElemPtr = MmiBookCallList(i);
379 ElemSize = MmiBookCallListSize(i);
380
381 /* Decide on whether to use number or name
382 */
383 #ifdef NO_ASCIIZ
384 NumPtr = (char*)data->phbk->current.entry[i].name.data;
385 #else
386 NumPtr = (char*)data->phbk->current.entry[i].name;
387 #endif
388
389 if ( *NumPtr == '\0' )
390 {
391 NumPtr = (char*)data->phbk->current.entry[i].number;
392 Position = POS_END;
393 }
394 else
395 Position = POS_BEGIN;
396
397 /* Clear the buffer, then fill it with the required value
398 */
399 memset( ElemPtr, '\0', ElemSize );
400 /*mc, SPR 1442, replaced old truncation function with new one*/
401 resources_truncate_to_screen_width(NumPtr, 0, ElemPtr, ElemSize,SCREEN_SIZE_X, FALSE);
402 }
403
404 /* Show the menu and stick up the find prompt
405 */
406 mnuUnhide(data->menu);
407 PROMPT( MmiBookMenuArea().px, Mmi_layout_line(SECOND_LAST_LINE_TOP), 0, TxtFind );
408
409 /* The softkeys are dependant on how we got here
410 */
411 //CRR: 25302 - xpradipg 10 Nov 2004
412 //check also if phonebook is invoked by MMS/EMS
413 if ( ( data->phbk->fromSMS ) || ( data->phbk->fromSMSSC )|| (data->phbk->fromMmsEms) ||( data->phbk->current.status.book == PHB_SDN ) )
414 {
415 leftKey = TxtSoftSelect;
416 rightKey = TxtSoftBack;
417 }
418 else
419 {
420 leftKey = TxtSoftCall;
421 rightKey = TxtSoftOptions;
422 }
423 displaySoftKeys( leftKey, rightKey );
424 }
425 break;
426
427 default:
428 {
429 /* Default handler, just return zero and let the next handler in the
430 chain deal with the event if required
431 */
432 return 0;
433 }
434 }
435
436 /* return non-zero status indicating we have dealt with the event
437 */
438 return MFW_EVENT_CONSUMED;
439 }
440
441
442
443
444 /*******************************************************************************
445
446 $Function: bookSDNKbdCB
447
448 $Description: Keyboard handler
449
450 $Returns: stats indicating if event handled or not
451 (Always MFW_EVENT_CONSUMED)
452
453 $Arguments: e, event, k, keyboard handle
454
455 *******************************************************************************/
456
457 static int bookSDNKbdCB( MfwEvt e, MfwKbd *k )
458 {
459 T_MFW_HND win = mfwParent(mfw_header());
460 T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
461 tBookStandard *data = (tBookStandard *)win_data->user;
462 tBookMessageEvents MyEvent = SEARCH_STRING;
463 char *Number;
464
465 // int i = 0; // RAVI
466
467 TRACE_FUNCTION ("bookSDNKbdCB()");
468
469 /* SPR#1428 - SH - New Editor changes */
470 #ifdef NEW_EDITOR
471 AUI_entry_EventKey(data->entry_data, e, k);
472 #else /* NEW_EDITOR */
473 /* Make sure we have the correct editor enabled
474 * (unnecessary for NEW_EDITOR) */
475 if ( activeEditor() != data->edt )
476 editActivate( data->edt, TRUE );
477 editEventKey( e, k );
478 #endif /* NEW_EDITOR */
479
480 /* Handle the events we need to deal with here
481 */
482 switch (k->code)
483 {
484 case KCD_MNUUP:
485 {
486 /* Scroll up event, just mark our event as such and it'll
487 be dealt with in due course
488 */
489 MyEvent = SEARCH_SCROLL_UP;
490 }
491 break;
492
493 case KCD_MNUDOWN:
494 {
495 /* Scroll down event, just mark our event as such and it'll
496 be dealt with in due course
497 */
498 MyEvent = SEARCH_SCROLL_DOWN;
499 }
500 break;
501
502 case KCD_CALL:
503 case KCD_LEFT:
504 {
505 /* left key is a select, we either need to send the number
506 back to the parent window, or call it
507 */
508 Number = (char *) data->phbk->current.entry[ data->phbk->current.selectedName ].number;
509
510 if ( data->phbk->fromSMS )
511 SEND_EVENT( data->phbk->parent_win, SMS_PHBK_NUMBER, 0, (UBYTE *) Number );
512 if ( data->phbk->fromSMSSC )
513 SEND_EVENT( data->phbk->parent_win, SMSSC_PHBK_NUMBER, 0, (UBYTE *) Number );
514 else if(data->phbk->fromDivert )
515 SEND_EVENT( data->phbk->parent_win, DIVERT_PHBK_NUMBER, 0, (UBYTE *) Number );
516 else if(data->phbk->fromDeflect )/*SPR 1392, send event to call dialogue*/
517 SEND_EVENT( data->phbk->parent_win, DEFLECT_PHBK_NUMBER, 0, (UBYTE *) Number );
518 //CRR: 25302 - xpradipg 10 Nov 2004
519 //send even if invoked by MMS/EMS
520 else if(data->phbk->fromMmsEms)
521 SEND_EVENT( data->phbk->parent_win, MMS_EMS_PHBK_NUMBER, 0, (UBYTE *) Number );
522 else
523 callNumber( (UBYTE *) Number );
524
525 /* Having dealt with the number, we destroy our phone book
526 context and exit the handler early
527 */
528 bookPhonebookDestroy( data->phbk->win );
529 return MFW_EVENT_CONSUMED;
530 }
531 //break; // RAVI
532
533 case KCD_RIGHT:
534 {
535 /* Right key is a cancel
536 */
537 bookSDNDestroy( data->win );
538 data->phbk->search_win = 0;
539 return MFW_EVENT_CONSUMED;
540 }
541 // break; // RAVI
542
543 case KCD_HUP:
544 {
545 /* Clear key deletes the last character, or if none left will
546 take us out of here
547 */
548 if ( data->edtBuf[0] == '\0' )
549 {
550 bookSDNDestroy( data->win );
551 data->phbk->search_win = 0;
552 return MFW_EVENT_CONSUMED;
553 }
554 else
555 {
556 /* Delete last character entered
557 */
558 /* SPR#1428 - SH - New Editor changes */
559 #ifdef NEW_EDITOR
560 ATB_edit_DeleteLeft(data->editor, TRUE); /* SPR#2342 */
561 #else /* NEW_EDITOR */
562 edtChar( data->edt, ecBack );
563 #endif /* NEW_EDITOR */
564 }
565 }
566 break;
567
568 default:
569 {
570 /* No default processing required
571 */
572 }
573 break;
574 }
575
576 /* Initiate a new search based on the current settings, MyEvent
577 will have been set accordingly
578 */
579 SEND_EVENT( data->win, MyEvent, 0, 0 );
580 winShow( data->win );
581
582 /* And make sure no calling routines try to do anything with the
583 event we have just dealt with
584 */
585 return MFW_EVENT_CONSUMED;
586 }
587
588
589
590
591 /*******************************************************************************
592
593 $Function: bookSDNKeyLongCB
594
595 $Description: long keyboard event handler
596
597 $Returns: MFW_EVENT_CONSUMED always
598
599 $Arguments: e, event to handle, k, keyboard handle
600
601 *******************************************************************************/
602
603 static int bookSDNKeyLongCB( MfwEvt e, MfwKbd *k )
604 {
605 T_MFW_HND win = mfwParent(mfw_header());
606 T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
607 tBookStandard *data = (tBookStandard *)win_data->user;
608
609 /* Just checks for clear and long being set, if so it will
610 destroy the window
611 */
612 if ( (e & KEY_CLEAR) && (e & KEY_LONG) )
613 {
614 bookSDNDestroy( win );
615 data->phbk->search_win = 0;
616 }
617
618 /* Force event consumed always, prevents default behaviour
619 kicking in
620 */
621 return MFW_EVENT_CONSUMED;
622 }
623
624
625
626
627 /*******************************************************************************
628
629 $Function: bookSDNCreate
630
631 $Description: Creates the Service numbers widow
632
633 $Returns: Window Handle, or NULL if unsuccessfull
634
635 $Arguments: Parent, handle of the parent window
636
637 *******************************************************************************/
638
639 static T_MFW_HND bookSDNCreate( MfwHnd parent )
640 {
641 T_MFW_WIN *win_data;
642 tBookStandard *data = (tBookStandard *) ALLOC_MEMORY( sizeof( tBookStandard ) );
643 T_MFW_WIN *parent_win_data = ((T_MFW_HDR *)parent)->data;
644 T_phbk* phbk = (T_phbk *)parent_win_data->user;
645
646 TRACE_FUNCTION( "bookSDNCreate()" );
647
648 /* Create the window
649 */
650 if ( ( data->win = win_create (parent, 0, E_WIN_VISIBLE, (T_MFW_CB) bookSDNWinCB ) ) == NULL )
651 return NULL;
652
653 /*SPR 2123, MC allocate memory for phonebook list*/
654 if (create_mmi_phonebook_names_list() == NULL)
655 return NULL;
656
657 /* set up the basic window elements, dialog and user data pointers
658 */
659 data->mmi_control.dialog = (T_DIALOG_FUNC)bookSDN;
660 data->mmi_control.data = data;
661 win_data = ((T_MFW_HDR *)data->win)->data;
662 win_data->user = (void *)data;
663 data->parent_win = parent;
664
665 /* Create keyboard and menu handlers to be associated with
666 this window
667 */
668 data->kbd = kbdCreate( data->win, KEY_ALL, (MfwCb) bookSDNKbdCB );
669 data->kbd_long = kbdCreate( data->win, KEY_ALL | KEY_LONG, (MfwCb) bookSDNKeyLongCB );
670 data->menu = mnuCreate( data->win, MmiBookMenuDetailsList(), 0, 0 );
671
672 /* Set basic edit attributes structure and create an editor
673 associated with these attributes
674 */
675 /* SPR#1428 - SH - New Editor changes */
676 #ifdef NEW_EDITOR
677 AUI_edit_SetAttr( &data->editor_attr, BOOKSDN_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_ALPHA, ED_CURSOR_BAR, ATB_DCS_ASCII, (UBYTE*) data->edtBuf, MAX_SEARCH_CHAR);
678 data->editor = ATB_edit_Create(&data->editor_attr,0);
679 data->entry_data = AUI_entry_Create(data->win, data->editor, SEARCH_REDRAW);
680 ATB_edit_Init(data->editor);
681 #else /* NEW_EDITOR */
682 bookSetEditAttributes( BOOKSDN_EDITOR, COLOUR_EDITOR_XX , 0, edtCurBar1, 0, (char*) data->edtBuf, MAX_SEARCH_CHAR, &data->attr );
683 data->edt = edtCreate( data->win, &data->attr, 0, 0 );
684 #endif /* NEW_EDITOR */
685
686 /* Show the menu
687 */
688 mnuUnhide(data->menu);
689
690 /* associate the phonebook handler
691 */
692 data->phbk = phbk;
693
694 /* and return the newly created window handle
695 */
696 return data->win;
697 }
698
699
700
701
702
703 /*******************************************************************************
704
705 Public methods
706
707 *******************************************************************************/
708
709 /*******************************************************************************
710
711 $Function: bookSDNStart
712
713 $Description: This is the entry point for the service numbers window handler
714
715 $Returns: handle of window we are creating
716
717 $Arguments: Parent, handle of the parent window
718
719 *******************************************************************************/
720
721 T_MFW_HND bookSDNStart( MfwHnd parent )
722 {
723 T_MFW_HND win;
724 T_MFW_WIN *win_data;
725 tBookStandard *data;
726 MfwMnu *mnu;
727
728 TRACE_FUNCTION( "bookSDNCreate()" );
729
730 /* We can't actually create the window if the phone book is
731 still loading, so we will deal with this up front
732 */
733 if ( phb_get_mode() == PHB_LOADING )
734 {
735 bookShowInformation( idle_get_window(), TxtPleaseWait ,NULL, NULL );
736 return NULL;
737 }
738
739 /* Create the basic window, dealing with errors here and just terminating
740 if we can't create the window correctly.
741 */
742 if ( ( win = bookSDNCreate( parent ) ) == NULL )
743 return NULL;
744
745 /* Okay, we have created the window, so set up our internal
746 working pointers and check if the current phone book has
747 some entries in it
748 */
749 win_data = ((T_MFW_HDR *) win)->data;
750 data = (tBookStandard *)win_data->user;
751 data->phbk->current.status.book = PHB_SDN;
752
753 /* we need to determine if there are any entries in the phone book
754 before we allow the service number windows to be displayed, we
755 do this by searching for an empty name
756 */
757 bookGetCurrentStatus( &data->phbk->current.status );
758 memset( data->edtBuf, '\0' , sizeof( data->edtBuf ) );
759 data->phbk->current.index = 1;
760 data->phbk->current.selectedName = 0;
761 bookFindName( MAX_SEARCH_NAME, &data->phbk->current );
762
763 /* If the current index is still zero then we have been unable to
764 find an entry, in this case we need to shutdown the service
765 numbers window, since we can't do anything with it.
766 */
767 if ( data->phbk->current.index == 0 )
768 {
769 bookSDNDestroy( win );
770 data->phbk->search_win = 0;
771 bookShowInformation( idle_get_window(), TxtEmptyList ,NULL, NULL );
772 return 0;
773 }
774
775 /* We are still running, so set up the menu and edit structures
776 accordingly, and display the window
777 */
778 mnu = (MfwMnu *) mfwControl( data->menu );
779 mnu->lCursor[ mnu->level ] = data->phbk->current.selectedName;
780
781 /* SPR#1428 - SH - New Editor: editActivate no longer needed */
782 #ifndef NEW_EDITOR
783 editActivate( data->edt, 1 );
784 #endif
785 winShow( data->win );
786
787 /* return the pointer to the window
788 */
789 return win;
790 }
791
792
793
794 /*******************************************************************************
795
796 $Function: bookFindNameInSDNPhonebook
797
798 $Description: This routine performs the FindNameInPhoneBook functionality,
799 tuned to the particular requirements of the service numbers
800 phonebook.
801
802 $Returns: handle of window we are creating
803
804 $Arguments: Parent, handle of the parent window
805
806 *******************************************************************************/
807
808 int bookFindNameInSDNPhonebook( const char* p_pszNumber, T_MFW_PHB_ENTRY* p_pEntry )
809 {
810 T_MFW_PHB_LIST phb_list;
811 #ifdef NO_ASCIIZ
812 T_MFW_PHB_TEXT p_pszNumberText;
813 #endif
814 SHORT phb_index=0;
815 /*MC SPR 1257, replacing PHB_MAX_LEN with MAX_ALPHA_LEN for name strings*/
816 UBYTE l_name[MAX_ALPHA_LEN];
817 int status;
818 char bfr[80];
819 TRACE_FUNCTION("bookFindNameInSDNPhonebook()");
820
821 /* guard against dodgy input data
822 */
823 if( ( p_pszNumber == NULL ) || ( p_pEntry == NULL ) )
824 return 0;
825 if ( strlen(p_pszNumber) < 1)
826 return (0);
827 /* initialise the search structures
828 */
829 memset(p_pEntry, 0, sizeof(T_MFW_PHB_ENTRY));
830 memset(&phb_list, 0, sizeof(phb_list));
831 phb_list.entry = p_pEntry;
832 phb_list.num_entries = 1;
833 phb_list.book = PHB_SDN;
834
835 //GW Set up data structure for NO_ASCIIZ
836 #ifdef NO_ASCIIZ
837 p_pszNumberText.dcs = MFW_DCS_8bits;
838 p_pszNumberText.len = strlen(p_pszNumber);
839 strcpy((char*)p_pszNumberText.data, p_pszNumber);
840 #endif
841
842 /* see what we can find using the standard search routine for
843 any phone book, giving the service numbers book as a parameter
844 */
845
846 #ifdef NO_ASCIIZ
847 status = phb_find_entries( (UBYTE)PHB_SDN, &phb_index, (UBYTE)MFW_PHB_NUMBER, 1, &p_pszNumberText, &phb_list );
848 #else
849 status = phb_find_entries( PHB_SDN, &phb_index, MFW_PHB_NUMBER, 1, (char *) p_pszNumber, &phb_list );
850 #endif
851 sprintf(bfr,"len:%2d , name: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",p_pEntry->name.len);
852 memcpy(&bfr[16], p_pEntry->name.data, PHB_MAX_LEN);
853 TRACE_FUNCTION(bfr);
854 sprintf(bfr,"number:'%s'",p_pEntry->number);
855 TRACE_FUNCTION(bfr);
856
857 if (status != MFW_PHB_OK)
858 {
859 phb_list.result = MFW_NO_ENTRY;
860 TRACE_FUNCTION("bookFindNameInSDNPhonebook()- status error");
861 }
862
863 /* convert the returned data to manageable information
864 */
865
866 #ifdef NO_ASCIIZ
867 //GW Check that conversion returned a valid string
868 //GW Testing for 0 is stupid but since the macros PASSED and FAILED that are used by the procedure are not in the header (duh!) we can't use them.
869 /*MC SPR 1257, replacing PHB_MAX_LEN with MAX_ALPHA_LEN for name strings*/
870 if (mfw_SIM2GsmStr( p_pEntry->name.len, p_pEntry->name.data, MAX_ALPHA_LEN, l_name ) == 0)
871 memcpy(p_pEntry->name.data, l_name, MAX_ALPHA_LEN);
872
873 p_pEntry->name.data[0] = 0x00;
874
875 #else
876 bookGsm2Alpha( p_pEntry->name );
877
878 #endif
879
880 /* if we couldn't find any information, null out the return
881 structure, this will stop people who don't check the return
882 status from getting sensible information
883 */
884 if( phb_list.result != MFW_ENTRY_EXIST )
885 memset(p_pEntry, 0, sizeof(T_MFW_PHB_ENTRY));
886
887 /* return status depends on result of search
888 */
889 return ( phb_list.result == MFW_ENTRY_EXIST );
890 }
891
892
893
894
895
896
897 /*******************************************************************************
898
899 $Function: bookSDNDestroy
900
901 $Description: destroys the Service Numbers window
902
903 $Returns: none.
904
905 $Arguments: window, handle of the window to be destroyed
906
907 *******************************************************************************/
908
909 void bookSDNDestroy( MfwHnd window )
910 {
911 T_MFW_WIN *win = ((T_MFW_HDR *)window)->data;
912 tBookStandard *data = (tBookStandard *)win->user;
913
914 TRACE_FUNCTION( "bookSDNDestroy" );
915
916 /* Guard against bad incoming data
917 */
918 if ( ! data )
919 return;
920
921 /* SPR#1428 - SH - New Editor changes */
922 #ifdef NEW_EDITOR
923 /* Editor is no longer destroyed with winDelete,
924 * so destroy it here. */
925 if (data->editor)
926 {
927 ATB_edit_Destroy(data->editor);
928 data->editor = 0;
929 }
930 if (data->entry_data)
931 {
932 AUI_entry_Destroy(data->entry_data);
933 data->entry_data = 0;
934 }
935 #endif /* NEW_EDITOR */
936
937 /* Destroy the window using the appropriate method
938 */
939 if ( data->phbk->root_win == window )
940 bookPhonebookDestroy( data->phbk->win );
941 else
942 {
943 /* deleting the window, so make sure we free the memory
944 */
945 data->phbk->search_win = 0;
946 winDelete( data->win );
947 FREE_MEMORY( (void *)data, sizeof( tBookStandard ) );
948 }
949 /*SPR2123, MC deallocate memory for phonebook list*/
950 destroy_mmi_phonebook_names_list(MmiBookMenuDetailsList());
951 }
952
953
954 /*******************************************************************************
955
956 End of File
957
958 *******************************************************************************/
959