FreeCalypso > hg > fc-magnetite
view src/aci2/bmi/mmiBookController.c @ 701:35e7f9d0379f
targets: add TARGET_HAS_BUZZER to c11x, c139 and dsample
This new target config preprocessor symbol was introduced in Tourmaline
in connection with the new approach to playing buzzer melodies via PWT,
properly omitting the responsible code on targets where BU output
controls the vibrator instead. That code is not present in Magnetite
and we have no plans to backport it here, but target header files
should be kept consistent between the two trees, especially given
that we plan to support FC Venus target in Magnetite.
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Sat, 26 Mar 2022 19:51:34 +0000 |
parents | 3c2acfa1a72f |
children |
line wrap: on
line source
/******************************************************************************* CONDAT (UK) ******************************************************************************** This software product is the property of Condat (UK) Ltd and may not be disclosed to any third party without the express permission of the owner. ******************************************************************************** $Project name: Basic MMI $Project code: BMI (6349) $Module: PhoneBook $File: MmiBookController.c $Revision: 1.0 $Author: Condat(UK) $Date: 25/10/00 ******************************************************************************** Description: The book controller module provides the external interface to the phone book. It provides ALL external entry points to the phone book system. ******************************************************************************** $History: MmiBookController.c Jun 13, 2005 REF: SPR 31705 x0021308 Description: Once maximum limit of the My Number is exceeded, display info : Phonebook full, expected is MyNumber Full Solution: Replaced the Return tag in function Protected Menu Handler(booksetownNumber) from Phonebookfull with MyNumberfull. Jun 13, 2005 REF: SPR 31710 x0021308 Description: Once maximum limit of the FDN Number is exceeded, display info : Phonebook full, expected is FDNList Full Solution: Replaced the Return tag in function Protected Menu Handler(booksetownNumber) from Phonebookfull with FDNListfull While checking whether in FDNMenu is active using MenuFDN global variable. Sep 22, 2004 REF: CRR 21392 xvilliva Bug: PIN2 Screen is not displaying, While Adding FDN Number thru Recent call Menu. Fix: We add the "bookRepRedNameEnter" to "ProtectedActions" array. If FDN is enabled, Pin2 will be asked. 25/10/00 Original Condat(UK) BMI version. $End // Issue Number : MMI-FIX-12161 on 07/04/04 by Nishikant Kulkarni/Ajith K.P *******************************************************************************/ /******************************************************************************* Include Files *******************************************************************************/ /* MMI phone book specific include files */ #define ENTITY_MFW /* includes */ #include <string.h> #include <stdio.h> #include <stdlib.h> #if defined (NEW_FRAME) #include "typedefs.h" #include "vsi.h" #include "pei.h" #include "custom.h" #include "gsm.h" #else #include "STDDEFS.H" #include "custom.h" #include "gsm.h" #include "vsi.h" #endif #include "mfw_sys.h" #include "mfw_mfw.h" #include "mfw_win.h" #include "mfw_kbd.h" #include "mfw_lng.h" /* SPR#1428 - SH - New Editor changes */ #ifndef NEW_EDITOR #include "mfw_edt.h" #endif #include "mfw_icn.h" #include "mfw_mnu.h" #include "mfw_tim.h" #include "mfw_sim.h" #include "mfw_cm.h" #include "mfw_nm.h" #include "mfw_phb.h" #include "mfw_mme.h" #include "mfw_sat.h" #include "mfw_sms.h" #include "dspl.h" #include "ksd.h" #include "psa.h" #include "MmiMain.h" #include "MmiBookController.h" #include "MmiDummy.h" #include "MmiDialogs.h" #include "MmiLists.h" #include "MmiMenu.h" #include "mmiCall.h" #include "Mmiicons.h" #include "MmiIdle.h" #include "MmiSoftKeys.h" #include "MmiSounds.h" #include "MmiIdle.h" #include "MmiNetwork.h" #include "mmiSat_i.h" #include "MmiAoc.h" #include "gdi.h" #include "audio.h" #include "cus_aci.h" #include "MmiTimers.h" #include "MmiBookController.h" #include "MmiBookUtils.h" /* MMI specific includes, outside scope of phone book */ #include "MmiPins.h" #include "mmiSmsMenu.h" #include "mmismssend.h" #include "mmiCall.h" #include "MmiIdle.h" #include "MmiCPHS.h" /******************************************************************************* Definitions *******************************************************************************/ /* Since we want to make sure all of the menu handlers get treated the same way, and have a protected handler, define a new macro, in terms of the MENU_HANDLER, which will invoke the protected function correctly (See below for further details) */ #define PROTECTED_MENU_HANDLER( Name ) \ static MENU_HANDLER( Protected##Name ); \ MENU_HANDLER( Name ) \ { \ return Protected( Name, Protected##Name, Menu, Item ); \ } \ static MENU_HANDLER( Protected##Name ) /* ** Since PROTECTED_MENU_HANDLER handles only FDN protection, the following is a menu handler to ensure ** that PIN2 entry is required for any associated menu action */ #define PIN2RQD_MENU_HANDLER( Name ) \ static MENU_HANDLER( Pin2Rqd##Name ); \ MENU_HANDLER( Name ) \ { \ return Pin2Rqd( Name, Pin2Rqd##Name, Menu, Item ); \ } \ static MENU_HANDLER( Pin2Rqd##Name ) /*Added For Fix: MMI-FIX-12161 on 07/04/04 by Nishikant Kulkarni/Ajith K.P */ extern T_idle idle_data; /******************************************************************************* Local structures *******************************************************************************/ /* A number of the actions the phone book is required to perform can only be activated when the user enters a security PIN number, the PIN2 code. In order to make the operation of the module clear, we will build a list of the protected actions, and then drive all menu operations through a single clearing process. The module will use the following action list perform the protection, note that the last entry in this list must be NULL */ typedef tBookStatus (*tProtectFunction)( tBookMfwMenu *Menu, tBookMfwMenuItem *Item ); tProtectFunction ProtectedActions[] = { bookNameEnter, bookNameEdit, bookNameDelete, bookNameDeleteAll, // Sep 22, 2004 REF: CRR 21392 xvilliva // A function, if added to this array would ask Pin2 when called. // Storing a number from recent call list would ask for Pin2, if FDN is enabled. bookRepRedNameEnter, NULL }; // May 3, 2004 REF: CRR MMI-SPR-18555 Rashmi C N(Sasken) // This flag will indicate when we are in FDN menu int menuFDN; extern T_call call_data; /******************************************************************************* Private methods *******************************************************************************/ /******************************************************************************* $Function: Mmir_BaseAddress $Description: returns the base address of the Master Index Table $Returns: As above $Arguments: none. *******************************************************************************/ /* Provide a local routine which will perform the protection method. This will scan the list of protected actions, looking for the provided function, if it isn't a protected function then we will just call it directly, otherwise we will guard it with the PIN2 security code if we have a protected book */ static int Protected( tProtectFunction FunTag, tProtectFunction FunPtr, tBookMfwMenu *Menu, tBookMfwMenuItem *Item ) { pBookMfwWin win_data = (pBookMfwWin) bookWindowData(); pBookPhonebook book = ((pBookStandard)win_data->user)->phbk; int i; /* Check for a protected book being used (details to be sorted out at a later date) */ // Sep 22, 2004 REF: CRR 21388 xvilliva // We check if the call is not from FDN menu and if the current storage // for phonebook is internal phone book, we avoid asking Pin2 accordingly. if(menuFDN == 0 && bookActiveBook(WRITE) == PHB_IPB) { //Do nothing. } // May 3, 2004 REF: CRR MMI-SPR-18555 Rashmi C N(Sasken) // Pin2 should be prompted when user does FDN related operations in FDN menu // In FDN menu, receie an active call and FDN is disabled, pin2 should not be prompted for in call addressbook operations else if ( phb_get_mode() == PHB_RESTRICTED || (menuFDN && (call_data.calls.numCalls==0))) { /* Is the requested function one of the ones we need to protect ? */ TRACE_FUNCTION("Phone Book in FDN mode:ask for pin 2"); for ( i = 0; ProtectedActions[i]; i++ ) { if ( FunTag == ProtectedActions[i] ) { /* Yup, so we need to store the pending action for this window, this will be invoked by the checking operation, indirectly, if the check is successful */ book->pin2_next = (T_VOID_FUNC) FunPtr; //We're cheating and passing the current window to the //handler via the unused menu parameter -- MC book->menu = (tBookMfwMenu*) bookCurrentWindow(); book->item = Item; /* Call out to get the pin2 number checked, this will respond with a message back to this object, which we will deal with on receipt */ return pin2_check( bookCurrentWindow()); } } } /* we've come through the list of functions and either don't have a protected action to perform, or the book itself is not protected, so just invoke the requested action */ return (FunPtr)( (tBookMfwMenu*) bookCurrentWindow()/*Menu*/, Item ); } /* ** This function will apply PIN2 protection to the associated menu functions at ALL times ** */ static int Pin2Rqd( tProtectFunction FunTag, tProtectFunction FunPtr, tBookMfwMenu *Menu, tBookMfwMenuItem *Item ) { pBookMfwWin win_data = (pBookMfwWin) bookWindowData(); pBookPhonebook book = ((pBookStandard)win_data->user)->phbk; // int i; // RAVI /* Yup, so we need to store the pending action for this window, this will be invoked by the checking operation, indirectly, if the check is successful */ book->pin2_next = (T_VOID_FUNC) FunPtr; //We're cheating and passing the current window to the //handler via the unused menu parameter -- MC book->menu = (tBookMfwMenu*) bookCurrentWindow(); book->item = Item; /* Call out to get the pin2 number checked, this will respond with a message back to this object, which we will deal with on receipt */ return pin2_check( bookCurrentWindow()); } /******************************************************************************* Public methods *******************************************************************************/ /* Menu Handlers We are routing all of the phone book functionality through this module to allow the functional modules to be developed independantly where possible. This gives a single interface point for the rest of the MMI subsystem. All of the following functions use the MENU_HANDLER macro, as such they all have a common interface, this is not therefore documented in each case. The following information is common for each menu handler $Returns: Status from worker routine $Arguments: Menu, the menu from which the function was activated Item, the item associated with the call */ /******************************************************************************* $Function: bookNameEnter $Description: Add new name to the phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameEnter ) { //recast the menu parameter as the current window -- MC T_MFW_HND win = (T_MFW_HND)Menu; T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; TRACE_FUNCTION("bookNameEnter"); /* Clear the input editor structures before we go any further */ if (Phbk->UpdateAction!=ADD_FROM_IDLE) memset( Phbk->phbk->edt_buf_number, '\0', PHB_MAX_LEN ); /*MC SPR 1257, replacing PHB_MAX_LEN with MAX_ALPHA_LEN for name strings*/ memset( Phbk->phbk->edt_buf_name, '\0', MAX_ALPHA_LEN ); /* Indicate this is an additional entry being created */ Phbk->UpdateAction = CREATE_ENTRY; // May 3, 2004 REF: CRR MMI-SPR-18555 Rashmi C N(Sasken) // As the book is being changed for FDN menu operations, we need to // get back the current book for the normal phonbook operations Phbk->current.status.book = bookActiveBook(READ); /* Determine if we have room to add any new entries */ bookGetCurrentStatus( &Phbk->phbk->current.status ); if ( Phbk->phbk->current.status.avail_entries ) { /* We are okay to input the number, use a worker routine from the input handler module to actually deal with this */ Phbk->input_number_win = bookInputStartNumberEditor( win, Phbk->edt_buf_number ); } else { /* We have no room available to add the name, so check if we have filled the namespace or not */ /*If FDN menu active and no room for entries, then display FDN list full */ tIndexTagNames Tag ; if(menuFDN) { Tag = ( Phbk->phbk->current.status.used_entries ) ? TxtFDNListFull : TxtOperationNotAvail; //SPR 31710 x0021308:RamG } else { Tag = ( Phbk->phbk->current.status.used_entries ) ? TxtPhbkFull : TxtOperationNotAvail; } bookShowInformation( win, Tag,NULL, NULL ); } /* Always return event consumed */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNameEdit $Description: Edit the name in the phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameEdit ) { //recast the menu parameter as the current window -- MC T_MFW_HND win = /*mfwParent( mfw_header() )*/(T_MFW_HND)Menu; T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; /* Indicate this is an edit of a current entry */ Phbk->UpdateAction = MODIFY_EXISTING; /*MC SPR 1327, if UPN don't change phonebook type*/ if (data->phbk->current.status.book != PHB_UPN) data->phbk->current.status.book = bookActiveBook(READ); /*api - clear buffers before edit */ memset( Phbk->phbk->edt_buf_number, '\0', PHB_MAX_LEN ); memset( Phbk->phbk->edt_buf_name, '\0', MAX_ALPHA_LEN ); TRACE_EVENT_P2("current phbk is = %d and current entry is = %d", data->phbk->current.status.book,data->phbk->current.entry[ data->phbk->current.selectedName ].book); if(data->phbk->current.status.book == PHB_ADN_FDN) { if(data->phbk->current.entry[ data->phbk->current.selectedName ].book==PHB_FDN) { bookActivateFDN((T_MFW_HND)Menu); } else { /* And populate the buffers with the information to be modified */ #ifdef NO_ASCIIZ /*MC , SPR 1242 copy whole name, merged from b-sample build*/ memcpy( Phbk->phbk->edt_buf_name, Phbk->current.entry[ Phbk->current.selectedName ].name.data, MAX_ALPHA_LEN /*Phbk->current.entry[ Phbk->current.selectedName ].name.len*/); #else memcpy( Phbk->phbk->edt_buf_name, Phbk->current.entry[ Phbk->current.selectedName ].name, MAX_ALPHA_LEN ); #endif memcpy( Phbk->phbk->edt_buf_number, Phbk->current.entry[ Phbk->current.selectedName ].number, PHB_MAX_LEN ); /* And edit the entry we currently have active */ Phbk->input_number_win = bookInputStartNumberEditor( win, Phbk->edt_buf_number ); } } else { /* And populate the buffers with the information to be modified */ #ifdef NO_ASCIIZ /*MC , SPR 1242 copy whole name, merged from b-sample build*/ memcpy( Phbk->phbk->edt_buf_name, Phbk->current.entry[ Phbk->current.selectedName ].name.data, MAX_ALPHA_LEN/*Phbk->current.entry[ Phbk->current.selectedName ].name.len*/); #else memcpy( Phbk->phbk->edt_buf_name, Phbk->current.entry[ Phbk->current.selectedName ].name, MAX_ALPHA_LEN ); #endif memcpy( Phbk->phbk->edt_buf_number, Phbk->current.entry[ Phbk->current.selectedName ].number, PHB_MAX_LEN ); /* And edit the entry we currently have active */ Phbk->input_number_win = bookInputStartNumberEditor( win, Phbk->edt_buf_number ); } /* Always return event consumed */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNameDelete $Description: Delete name in phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameDelete ) { //recast the menu parameter as the current window -- MC //and pass it on //when ADN_FDN phonebook in use check if current entry is FDN //is so then call information screen or allow entry to be deleted. --- AP 23/01/02 //Issue 1944 MZ Allow an entry in FDN list to be deleted. T_MFW_HND win = (T_MFW_HND)Menu; T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; /*MC SPR 1327, if UPN don't change phonebook type*/ if (data->phbk->current.status.book != PHB_UPN) data->phbk->current.status.book = bookActiveBook(READ); if(data->phbk->current.status.book == PHB_ADN_FDN) if(data->phbk->current.entry[ data->phbk->current.selectedName ].book==PHB_FDN) bookActivateFDN((T_MFW_HND)Menu); else bookDeleteEntry((T_MFW_HND)Menu); else bookDeleteEntry((T_MFW_HND)Menu); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNameCall $Description: Call name in phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameCall ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; callNumber( Phbk->current.entry[ Phbk->current.selectedName ].number ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookDeleteAll $Description: Delete name in phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookDeleteAll ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; if (phb_delete_book(Phbk->current.status.book)==MFW_PHB_OK) { MmiBookSetCurrentText( TxtEntryDeleted); bookShowInformation( Phbk->win, MmiBookCurrentText(),NULL, NULL ); bookPhonebookDestroy(Phbk->win); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNameSearch $Description: Search for name in phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameSearch ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; data->phbk->current.KindOfSearch = SEARCH_BY_NAME; data->phbk->current.status.book = bookActiveBook(READ); data->phbk->search_win = bookSearchStart( data->phbk->win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNumberSearch $Description: Search for name in phone book, order the elements by the phone book number $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNumberSearch ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; data->phbk->current.KindOfSearch = SEARCH_BY_NUMBER; data->phbk->current.status.book = bookActiveBook(READ); data->phbk->search_win = bookSearchStart( data->phbk->win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookLocationSearch $Description: Search for number in phone book, using SIM location to order search window output $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookLocationSearch ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; data->phbk->current.KindOfSearch = SEARCH_BY_LOCATION; data->phbk->current.status.book = bookActiveBook(READ); data->phbk->search_win = bookSearchStart( data->phbk->win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookNameDeleteAll $Description: Delete all names associated with a phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookNameDeleteAll ) { return NULL; } /******************************************************************************* $Function: bookNameMessage $Description: Send message to the number selected $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookSendMessage ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; T_SmsUserData SmsData; /* Copy the number and name information to the SMS buffer */ /* API - 13-01-03 - 1409 - Minus the Phbk->current.missedCallsOffset to point at the correct number in the missed calls */ memcpy( SmsData.NumberBuffer, (UBYTE *) Phbk->current.entry[ Phbk->current.selectedName - Phbk->current.missedCallsOffset ].number, sizeof( SmsData.NumberBuffer ) ); /*MC SPR 1257, zero whole buffer for unicode*/ memset(SmsData.TextBuffer, '\0', MAX_MSG_LEN_ARRAY); /* Create a dynamic menu window to perform the SMS sending */ SmsSend_SEND_start( win, (void *) &SmsData ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookGetOwnNumber $Description: Get own number $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookGetOwnNumber ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; data->phbk->current.KindOfSearch = SEARCH_BY_NAME; data->phbk->current.status.book = PHB_UPN; data->phbk->search_win = bookSearchStart( data->phbk->win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookSetOwnNumber $Description: Set own number $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookSetOwnNumber ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; /* Clear the input editor structures before we go any further */ /*MC SPR 1257, replacing PHB_MAX_LEN with MAX_ALPHA_LEN for name strings*/ memset( Phbk->phbk->edt_buf_name, '\0', MAX_ALPHA_LEN ); memset( Phbk->phbk->edt_buf_number, '\0', PHB_MAX_LEN ); /* Indicate this is an additional entry being created */ Phbk->UpdateAction = CREATE_ENTRY; data->phbk->current.status.book = PHB_UPN; /* Determine if we have room to add any new entries */ bookGetCurrentStatus( &Phbk->phbk->current.status ); if ( Phbk->phbk->current.status.avail_entries ) { /* We are okay to input the number, use a worker routine from the input handler module to actually deal with this */ Phbk->input_number_win = bookInputStartNumberEditor( win, Phbk->edt_buf_number ); } else { /* We have no room available to add the name, so check if we have filled the namespace or not */ tIndexTagNames Tag = ( Phbk->phbk->current.status.used_entries ) ? TxtMyNumberFull : TxtOperationNotAvail; //SPR 31705 x0021308:RamG. bookShowInformation( win, Tag, NULL, NULL ); } /* Always return event consumed */ return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookRepRedNameEnter $Description: Enter name associated with Reply-Redial number $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookRepRedNameEnter ) { // Sep 22, 2004 REF: CRR 21392 xvilliva // We use the variable "Menu", similar to bookNameEnter() to avoid a crash. T_MFW_HND win = (T_MFW_HND)Menu; T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; char* selected_number; selected_number = (char*)data->phbk->current.entry[data->phbk->current.selectedName].number; // Sep 22, 2004 REF: CRR 21392 xvilliva // We get the exact book that is selected. data->phbk->current.status.book = bookActiveBook(WRITE); Phbk->UpdateAction = CREATE_ENTRY; bookGetCurrentStatus( &Phbk->phbk->current.status ); if ( Phbk->phbk->current.status.avail_entries ) { /* We are okay to input the number, use a worker routine from the input handler module to actually deal with this */ bookAddName(win,selected_number); } else { /* We have no room available to add the name, so check if we have filled the namespace or not */ tIndexTagNames Tag = ( Phbk->phbk->current.status.used_entries ) ? TxtPhbkFull : TxtOperationNotAvail; bookShowInformation( win, Tag, NULL, NULL ); } free( selected_number); return 1; } /******************************************************************************* $Function: bookRepRedDelete $Description: Delete name associated with Reply-Redial Number $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookRepRedDelete ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; deleteFromFile(Phbk,Phbk->current.status.book); bookShowInformation( Phbk->win, MmiBookCurrentText(),NULL, NULL ); bookMenuDestroy(Phbk->menu_call_options_win); if(Phbk->current.status.used_entries > 0) SEND_EVENT(Phbk->calls_list_win, SEARCH_SCROLL_UP, 0, 0 ); SEND_EVENT(Phbk->calls_list_win, CALLS_LIST_INIT, 0, (void*)Phbk->current.status.book ); return 1; } /******************************************************************************* $Function: bookCallListDetails $Description: Retrieve details for call list $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookCallListDetails ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; bookCallDetailsStart( Phbk->win); return 1; } /******************************************************************************* $Function: bookServiceNumbers $Description: Get service numbers $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookServiceNumbers ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; data->phbk->current.KindOfSearch = SEARCH_BY_NAME; data->phbk->current.status.book = PHB_SDN; data->phbk->search_win = bookSearchStart( data->phbk->win ); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookMemoryStatus $Description: Show the status of the phone book memory. $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookMemoryStatus ) { /* This performs the memory view functions, and returns MFW_EVENT_CONSUMED in all cases. */ bookMemoryView(); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookFDNActivate $Description: The FDN Activate routine is simply a wrapper for the real FDN Activate handler which resides in mmiPins.c $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookFDNActivate ) { return fdnActivate( Menu, Item ); } /******************************************************************************* $Function: bookFDNDeactivate $Description: The FDN Deactivate routine is simply a wrapper for the real FDN Deactivate handler which resides in mmiPins.c $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookFDNDeactivate ) { return fdnDeactivate( Menu, Item ); } /******************************************************************************* $Function: bookEnterLDN $Description: Enters de LDN List $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookEnterLDN ) { T_MFW_HND win = mfwParent( mfw_header() ); bookPhonebookStart(win,PhbkRedialListNormal); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookEnterLRN $Description: Enters de LRN List $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookEnterLRN ) { T_MFW_HND win = mfwParent( mfw_header() ); bookPhonebookStart(win,PhbkReplyListNormal); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookEnterLMN $Description: Enters de LMN List $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookEnterLMN ) { T_MFW_HND win = mfwParent( mfw_header() ); /* Issue Number : MMI-FIX-1216 on 07/04/04 by Nishikant Kulkarni and Ajith K.P Bug : missed call message is displayed after deleting all missed calls from the list Solution: idle_data.missedcalls flag was not updated if the user ckecks/deletes the missed call list We rectified the same.*/ idle_data.missedCalls = 0; bookPhonebookStart(win,PhbkMissedCallsListNormal); return MFW_EVENT_CONSUMED; } /* SPR#1112 - Internal phonebook menu options*/ #ifdef INT_PHONEBOOK /******************************************************************************* $Function: bookSelectBook $Description: Open the select book menu, preselecting the appropriate option $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookSelectBook ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; T_MFW_HND menu_win; UBYTE selectedBook; TRACE_FUNCTION("bookSelectBook"); if (bookGetBookAvailable()) { selectedBook = (UBYTE)bookGetBookSelected(); menu_win = bookMenuStart(Phbk->win, SelectBookAttributes(), 0); SEND_EVENT(menu_win, DEFAULT_OPTION, NULL, (void *)&selectedBook); // Add our own callback } else { bookShowInformation( Phbk->win, TxtNotAvailable, NULL, NULL); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookSelectBookSIM $Description: Select the SIM phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookSelectBookSIM ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; if (bookGetBookAvailable()) { bookSetBookSelected(FALSE); bookShowInfoScreen( Phbk->win, TxtPleaseWait, NULL, (T_VOID_FUNC)bookChangePB, (USHORT)bookGetBookSelected(), 100); } else bookShowInfoScreen( Phbk->win, TxtPhonebook, TxtChanged, NULL, NULL, 3000); return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookSelectBookSIM $Description: Select the SIM phone book $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookSelectBookPhone ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; if (bookGetBookAvailable()) { bookSetBookSelected(TRUE); bookShowInfoScreen( Phbk->win, TxtPleaseWait, NULL, (T_VOID_FUNC)bookChangePB, (USHORT)bookGetBookSelected(), 100); } else { bookShowInformation( Phbk->win, TxtNotAvailable,NULL, NULL ); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookCopyEntry $Description: Copy a single entry from/to internal memory $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookCopyEntry ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; TRACE_FUNCTION( "bookCopyEntry()" ); if (bookGetBookAvailable()) { /* Show Please Wait dialog briefly, then call copy function */ bookShowInfoScreen( Phbk->win, TxtPleaseWait, NULL, (T_VOID_FUNC)bookCopySingle, (USHORT)FALSE, 100); } else { bookShowInformation( Phbk->win, TxtNotAvailable, NULL, NULL); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookCopyAll $Description: Copy all entries from/to internal memory $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookCopyAll ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; TRACE_FUNCTION( "bookCopyAll()" ); if (bookGetBookAvailable()) { /* Copy */ bookCopyMultiple(Phbk->win, FALSE, 0); } else { bookShowInformation( Phbk->win, TxtNotAvailable, NULL, NULL); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookMoveEntry $Description: Move a single entry from/to internal memory $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookMoveEntry ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; TRACE_FUNCTION( "bookMoveEntry()" ); if (bookGetBookAvailable()) { /* Show Please Wait dialog briefly, then call move function */ bookShowInfoScreen( Phbk->win, TxtPleaseWait, NULL, (T_VOID_FUNC)bookCopySingle, (USHORT)TRUE, 100); } else { bookShowInformation( Phbk->win, TxtNotAvailable, NULL, NULL); } return MFW_EVENT_CONSUMED; } /******************************************************************************* $Function: bookMoveAll $Description: Move all entries from/to internal memory $Returns: Refer Menu Handlers Definition Block Above $Arguments: Refer Menu Handlers Definition Block Above *******************************************************************************/ PROTECTED_MENU_HANDLER( bookMoveAll ) { T_MFW_HND win = mfwParent( mfw_header() ); T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data; tBookStandard *data = (tBookStandard *) win_data->user; T_phbk *Phbk = data->phbk; TRACE_FUNCTION( "bookMoveAll()" ); if (bookGetBookAvailable()) { /* Show Please Wait dialog briefly, then call copy function */ bookCopyMultiple(Phbk->win, TRUE, 0); } else { bookShowInformation( Phbk->win, TxtNotAvailable, NULL, NULL); } return MFW_EVENT_CONSUMED; } #endif PIN2RQD_MENU_HANDLER( CphsAlsLock ) { return cphs_lock_als( Menu, Item ); } PIN2RQD_MENU_HANDLER( CphsAlsUnlock ) { return cphs_unlock_als( Menu, Item ); } /******************************************************************************* End of File *******************************************************************************/