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: Idle
+ − $File: MmiIdle.c
+ − $Revision: 1.0
+ −
+ − $Author: Condat(UK)
+ − $Date: 25/10/00
+ −
+ − ********************************************************************************
+ −
+ − Description:
+ −
+ − Handling for the idle screen
+ −
+ − ********************************************************************************
+ − $History: MmiIdle.c
+ −
+ − Feb 15, 2006 ER: OMAPS00065203 x0pleela
+ − Description: Cingular Operator Name Prioritization implementation required
+ − Solution: Incorporated review comments
+ − Removed the code added in earlier version from function idle_kbd_cb()
+ − Registering for MfwWinResume event in idle_create()
+ − Handling MfwWinResume event in idle_win_cb()
+ −
+ − Feb 09, 2006 ER: OMAPS00065203 x0pleela
+ − Description: Cingular Operator Name Prioritization implementation required
+ − Solution: "idle_opername_timer_cb" callback for timer to display opername on idle screen
+ − Display of the operator name on idle screen based on the following:
+ − a. If SPN and plmn name are not NULL, SPN is displayed for 5 seconds and then plmn name
+ − For the above scenario, display_condition of SPN is not checked as per Cingular's requirement
+ − In spite of display_condition being FALSE, we go ahead and display SPN
+ − b. If SPN is NULL and plmn name is not NULL, then plmn name is displayed
+ −
+ − Feb 02, 2006 DR: OMAPS00061468 - x0035544.
+ − Description: SAT 27.22.4.22.2 SET UP IDLE MODE TEXT (Icon support) fails
+ − Solution : SAT SET UP IDLE MODE TEXT (Icon) support added.
+ −
+ − Nov 24, 2005 DR: OMAPS00045909 - Shashi Shekar B.S.
+ − Description: Improve IMEI control mechanism
+ − Solution : When MMI calls sAT_PLUSCFUN, if an IMEI invalid error is returned,
+ − we will block on that screen & will not allow the user to browse menus further,
+ − since the PS will not be booted at all!!!
+ −
+ − Nov 17, 2005 DR: OMAPS00050447 - nekkareb
+ − Description: Even after removing the SIM , Hutch or Airtel network is seen
+ − Solution : Sim removal event is now being handled and appropriate display shown.
+ −
+ − Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − Description: Mp3 Ringer Implementation
+ − Solution: The Midi Ringer application has been enhanced to support mp3 as ringer.
+ − The interface function names have been modified.
+ −
+ − xrashmic 22 Aug, 2004 MMI-SPR-32798
+ − Adding the support for screen capture using a dynamically assigned key.
+ −
+ − Sept 15, 2005 REF: CRR 32410 x0021334
+ − Description: The keypad unlocks even though the unlocking sequence is not executed in quick succession.
+ − Fix: A new timer expiry event is added and handled.
+ −
+ − Jul 08, 2005 REF: ENH 32642 x0018858
+ − Description: The date time string should at all times be displayed on the idle scree.
+ − Solution: Code to display the date time if already not displayed, has been added.
+ −
+ − Jun 14, 2005 REF: MMI-FIX-30439 x0018858
+ − Description: The homezone/cityzone tags were not being displayed properly.
+ − Solution: Modified to save the tags properly in caches and also made the
+ − appropriate modifications to update the same properly during mobility.
+ −
+ −
+ − Jun 24, 2005 MMI-FIX-30973 x0018858
+ − Issue Description :- The homezone/cityzone tag disappears when the HUP button is pressed or after
+ − "new CB" arrives indication is received and processed.
+ − Fix: Modified the code to display the homezone/cityzone tag after the HUP is processed.
+ −
+ − May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg
+ − Description: IMEI retreival by posting a call to ACI sAT_xx API
+ − Solution: The direct call to cl_get_imeisv() is replaced with the
+ − call to the mmi_imei_store() which inturn calls sAT_Dn() and
+ − retrieves the IMEI info and stores it onto the global
+ − variable "imei"
+ −
+ − Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − Description: Implementation of Generic Midi Ringer and Modification of existing Midi Test Application
+ − Solution: Generic Midi Ringer and Midi Test Application were implemented.
+ −
+ − x0018858 24 Mar, 2005 MMI-FIX-11321
+ − Issue Description :- If the inbox is full and a new message is receivd, no indication is received.
+ − Fix: Added support for handling indication when message box is full and
+ − there is a pending message.
+ −
+ − Nov 3, 2004 REF: CRR 25887 xkundadu
+ − Description: Unable to make an emergency call.
+ − Fix: Changed the code to make the emergency call when the screen is locked.
+ − Also, a check is done to confirm whether the keypad buffer contains any ECC.
+ −
+ − CRR 25268: 13 Oct 2004 - xpradipg
+ − Description: Unable to see the Number / name and the status read/unread of
+ − the received EMS/MMS
+ − Solution: The status of each message is updated as soon as the Message is
+ − read, and "old"/"new" is appended based on the status flag
+ −
+ − CRR 25270: 13 Oct 2004 - xpradipg
+ − Description: EMS: Titles such as "no name" is added to EMSs with no titles
+ − Solution: The corresponding name is retrieved from the phone book for the
+ − number from which EMS is received, if name is not present number is
+ − displayed in Inbox
+ −
+ − Sep 22, 2004 REF: CRR 23871 xkundadu
+ − Description: Screen Locking: Unlocking screen is happening by other keys
+ − Fix: handled the other key events except '*' not to unlock the keypad.
+ −
+ − Sep 2, 2004 REF: CRR 21370 xkundadu
+ − Description: Giving wrong expected result by long press on "#" key
+ − Fix: When user presses long on '#' key it will display 'p'.
+ − Changed the long press of '*' key to display 'w'
+ −
+ − May 21, 2004 REF: CRR 16084 Deepa M.D
+ − Fix: SMSFull message string is displayed,in the clean Idle Screen .
+ −
+ − Apr 27, 2004 REF: ENH 12646 Deepa M.D
+ − Fix: When the SMS memory is full,the SMS icon is made to blink.
+ − Apr 14, 2004 REF: CRR 12653 xvilliva
+ − Fix: The FPLMN selection shows "No Service" on idle screen.
+ − The current mode of "limited service" is queried and the screen is updated
+ − accordingly. The LSK and RSK also work in sync.
+ − May 26, 2004 REF: CRR 19656 Sandip and Deepa M.D
+ − Fix: when a SETUP IDLE TEXT command is sent with a long text ( 239 characters ), instead of discarding the message
+ − the message will be displayed.The CR is handled properly by converting it to Space.
+ −
+ − Jul 23,2004 CRR:20895 xrashmic - SASKEN
+ − Description: The keypad should not be unlocked by SEND and *, it should be
+ − unlocked only by Menu and *
+ − Fix: SEND key is now handled the same way as rest of the number keys.
+ − Keypad unlock can be done only through MENU and *.
+ −
+ − Apr 14, 2004 REF: CRR 12653 xvilliva
+ − The FPLMN selection shows "No Service" on idle screen.
+ − The current mode of "limited service" is queried and the screen is updated
+ − accordingly. The LSK and RSK also work in sync.
+ − xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − To display the indication of new EMS in the idle screen
+ −
+ − 25/10/00 Original Condat(UK) BMI version.
+ −
+ − Dec 23, 2005 REF:SR13873 x0020906
+ − Description: SMS Play tones to be stopped during button press in idle
+ − FIX : Called for audio_stopSoundById () in the key press event.
+ − $End
+ −
+ − *******************************************************************************/
+ −
+ − /*******************************************************************************
+ −
+ − 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 "prim.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_cm.h"
+ − #include "mfw_phb.h"
+ − #include "mfw_sms.h"
+ − #include "mfw_icn.h"
+ − #include "mfw_mnu.h"
+ − #include "mfw_tim.h"
+ − #include "mfw_sim.h"
+ − #include "mfw_nm.h"
+ − #include "mfw_simi.h" // NH : put after mfw_nm.h as it contains a definition required by mfw_simi.h
+ − #include "mfw_sat.h"
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − #include "mfw_midi.h"
+ − #endif
+ −
+ −
+ − #include "dspl.h"
+ − #include "MmiMmi.h"
+ −
+ − #include "ksd.h"
+ − #include "psa.h"
+ −
+ −
+ − #include "MmiDummy.h"
+ − #include "MmiDialogs.h"
+ − #include "MmiLists.h"
+ −
+ − #include "MmiMain.h"
+ − #include "MmiStart.h"
+ −
+ − #include "MmiMenu.h"
+ −
+ − #include "MmiBookController.h"
+ − #include "MmiBookUtils.h"
+ −
+ − #include "mmiCall.h"
+ − #include "MmiNetwork.h"
+ − #include "Mmiicons.h"
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − #include "ATBCommon.h"
+ − #include "ATBDisplay.h"
+ − #include "ATBEditor.h"
+ − #include "AUIEditor.h"
+ − #else
+ − #include "MmiEditor.h"
+ − #endif
+ −
+ − #include "mmimmsmenu.h" //xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − #include "MmiSounds.h"
+ − #include "MmiUserData.h"
+ − #include "MmiSoftKeys.h"
+ − #include "MmiPins.h"
+ −
+ − #include "MmiDialogs.h"
+ − #include "MmiIdle.h"
+ − #include "MmiNetwork.h"
+ − #include "MmiSettings.h"
+ − #include "mmiSmsIdle.h"
+ − #include "mfw_ffs.h"
+ − #include "mmiSmsBroadcast.h"
+ − #include "MmiCPHS.h"
+ −
+ − #include "mmiSmsRead.h"
+ − #include "Mfw_td.h"/*SPR 1725*/
+ − #ifdef MMI_HOMEZONE_ENABLED
+ − #include "MmiHomezone.h" /* SPR759 - SH*/
+ − #endif
+ − #include "gdi.h"
+ − #include "audio.h"
+ −
+ − #include "cus_aci.h"
+ −
+ − #include "MmiResources.h" //for LINE_HEIGHT
+ − #include "mmiColours.h"
+ −
+ − #undef JVJ_USSD_TEST
+ − #include "MmiBookShared.h"
+ − #include "MmiBookUtils.h"
+ −
+ − #ifdef MMI_EM_ENABLED
+ − #include "MmiEm.h"
+ − #endif
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − IDLE WINDOW. DECLARATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ − /*
+ − * This is a static window (also called dialog), it remains always, so that we dont have to worry a memory allocation
+ − */
+ − /*
+ − The typedef for T_idle has been moved into the MmiIdle.h file.
+ − */
+ −
+ − T_idle idle_data; // This is a static window, and the related data are also static.
+ −
+ −
+ − /*
+ − * These are common functions xxx_create and xxx_destroy
+ − */
+ − T_MFW_HND idle_create (T_MFW_HND parent_window);
+ − void idle_destroy (T_MFW_HND own_window);
+ −
+ − // ADDED BY RAVI - 28-11-2005
+ − EXTERN void icon_setMainBgdBitmap (int bmpId);
+ − extern T_MFW_HND SmsRead_R_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr);
+ − extern UBYTE getcurrentVoiceTone(void);
+ − // END RAVI - 28-11-2005
+ −
+ − /*
+ − * This dialog function (the same name as the window)
+ − * is used to handle the comunication between different windows. The global macro SEND_EVENT can be used with parameter win
+ − * and the corresponding events to send from one mmi dialog to another.
+ − */
+ −
+ − void idle (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ −
+ −
+ − /*
+ − * These are common optional functions handler
+ − */
+ −
+ −
+ − static int idle_win_cb(MfwEvt e, MfwWin *w);
+ − static int idle_kbd_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_kbd_long_cb (MfwEvt e, MfwKbd *k);
+ −
+ −
+ − static int idleLine( int lineNo );
+ −
+ −
+ −
+ − static int idleExeSendMessage(MfwMnu* m, MfwMnuItem* i);
+ − MfwHnd VOS_Idle_Win; /* our window */
+ −
+ − extern UBYTE getCurrentRingerSettings(void );
+ −
+ − void idle_Ciphering (UBYTE gsm_ciph, UBYTE gprs_ciph);
+ −
+ − U16 AlarmStatus = 0;
+ −
+ − extern UBYTE HUPKeyOrigin; // SH - set to 1 if POWER_KEY is pressed in idle screen
+ − UBYTE test_sim; // SH
+ − static UBYTE LimitedService;// Apr 14, 2004 REF: CRR 12653 xvilliva
+ − // Apr 27, 2004 REF: ENH 12646 Deepa M.D
+ − extern MfwHnd sms_animate; //Timer for blinking SMS Icon
+ − static int homezoneFlag = 0; //Jun 14, 2005 REF: MMI-FIX-30439 x0018858
+ − // Added a flag.
+ −
+ − //Jun 24, 2005 MMI-FIX-30973 x0018858
+ − //Global to copy the New CB msg tag.
+ − char tag_zone[94];
+ −
+ − //x0pleela 09 Feb, 2006 ER: OMAPS00065203
+ − #define SPN 0 /* SPN to be displayed on Idle screen*/
+ − #define PLMN 1 /* PLMN name to be displayed on Idle screen*/
+ −
+ − EXTERN UBYTE gEons_alloc_active; /* EONS allocation and activation */
+ − static MfwHnd plmn_display; /* timer handle */
+ − static UBYTE timer_start_flag = FALSE; /* Timer start flag */
+ − static UBYTE opername_disp_flag=SPN; /* Opertor name display flag : SPN or PLMN*/
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − DIALLING WINDOW. DECLARATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ − /*
+ − * This is a dinamic dialog, it must be created only when dialling in idle screen, and destroyed automatically after calling
+ − * or clearing
+ − */
+ −
+ − // Nov 3, 2004 REF: CRR 25887 xkundadu
+ − // Description: Unable to make an emergency call.
+ − // Fix: Check whether the keypad buffer contains any ECC.
+ −
+ − // This is the maximum length of ECC number.
+ − #define ECC_LENGTH 3
+ − #define WIN_DIALLING_ORG_X 0
+ − #define WIN_CENTRALIZE_ORG_X 30
+ −
+ − #define XOFFSET 1
+ − #define YOFFSET 1
+ −
+ −
+ − #ifndef LSCREEN
+ − #define YLINE 9
+ − #else
+ − #define YLINE (12*2+2)
+ − #endif
+ −
+ −
+ − #define KEYPADLOCK_BUF_SIZE 4
+ −
+ − /*
+ − * The information related to every window must be encapsulated in such an structure
+ − */
+ −
+ − typedef struct
+ − {
+ − T_MMI_CONTROL mmi_control; // common control parameter
+ − T_MFW_HND win;
+ − T_MFW_HND kbd;
+ − T_MFW_HND kbd_long;
+ − #ifdef NEW_EDITOR
+ − T_ED_DATA *editor; /* SPR#1428 - SH - New Editor changes */
+ − #else /* NEW_EDITOR */
+ − T_MFW_HND edt;
+ − #endif /* NEW_EDITOR */
+ − } T_idle_dialling;
+ −
+ − typedef struct
+ − {
+ − /* administrative data */
+ −
+ − T_MMI_CONTROL mmi_control;
+ − T_MFW_HND win;
+ − T_MFW_HND parent_win;
+ − #ifdef NEW_EDITOR
+ − T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */
+ − #else
+ − T_EDITOR_DATA editor_data;
+ − #endif
+ −
+ − /* internal data */
+ − char buffer[80];
+ − UBYTE status;
+ −
+ − } tShowVerion;
+ −
+ −
+ −
+ −
+ − /*
+ − * These are common functions xxx_create and xxx_destroy
+ − */
+ −
+ − T_MFW_HND idle_dialling_create(MfwHnd parent);
+ − void idle_dialling_exit (void);
+ −
+ −
+ − /*
+ − * This dialog function (the same name as the window)
+ − * is used to handle the comunication between different windows. The global macro SEND_EVENT can be used with parameter win
+ − * and the corresponding events to send from one mmi dialog to another.
+ − */
+ −
+ − void idle_dialling (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ −
+ − /*
+ − * These are common optional functions handler
+ − */
+ −
+ −
+ − static int idle_dialling_kbd_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_dialling_kbd_long_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_dialling_win_cb (MfwEvt e, MfwWin *w);
+ −
+ − /*
+ − * This an optional function, used often to call, create and init a new dialog, with different parameters depending
+ − * on the context
+ − */
+ −
+ −
+ − T_MFW_HND idle_dialling_start (T_MFW_HND win_parent,char *character);
+ −
+ −
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − OPTIONS DIALLING WINDOW. DECLARATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ −
+ −
+ − #define WIN_OPTIONS_DIALLING_ORG_X 0
+ − #define WIN_OPTIONS_DIALLING_ORG_Y SECOND_LINE
+ −
+ − #define WIN_OPTIONS_DIALLING_X_OFFSET 1
+ − #define WIN_OPTIONS_DIALLING_Y_OFFSET 1
+ −
+ −
+ −
+ − T_MFW_HND idle_dialling_options_create(MfwHnd parent);
+ − void idle_dialling_options_destroy (T_MFW_HND own_window);
+ −
+ − static int idle_dialling_options_kbd_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_dialling_options_kbd_long_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_dialling_options_win_cb (MfwEvt e, MfwWin *w);
+ − static int idle_dialling_options_mnu_cb (MfwEvt e, MfwMnu *m);
+ −
+ − typedef struct
+ − {
+ − T_MMI_CONTROL mmi_control;
+ − T_MFW_HND win; // window handle
+ − T_MFW_HND kbd;
+ − T_MFW_HND kbd_long;
+ − T_MFW_HND menu;
+ − } T_idle_dialling_options;
+ −
+ −
+ −
+ −
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − KEYPADLOCKED WINDOW. DECLARATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ −
+ − T_MFW_HND idle_key_pad_locked_create(MfwHnd parent);
+ − void idle_key_pad_locked_destroy (T_MFW_HND own_window);
+ −
+ − static int idle_key_pad_locked_kbd_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_key_pad_locked_kbd_long_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_key_pad_locked_win_cb (MfwEvt e, MfwWin *w);
+ −
+ − typedef struct
+ − {
+ − T_MMI_CONTROL mmi_control;
+ − T_MFW_HND win; // window handle
+ − T_MFW_HND kbd;
+ − T_MFW_HND kbd_long;
+ − #ifdef NEW_EDITOR /* SPR#1428 - SH - New Editor changes */
+ − T_ED_DATA *editor;
+ − #else
+ − T_MFW_HND edt;
+ − #endif
+ − T_MFW_HND win_info; // window handle
+ − UBYTE menuPressed;
+ − UBYTE keyPadLockBuf[KEYPADLOCK_BUF_SIZE];
+ − UBYTE TempkeyPadLockBuf[KEYPADLOCK_BUF_SIZE];
+ − } T_idle_key_pad_locked;
+ −
+ − void idle_key_pad_locked (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ −
+ −
+ −
+ − static void (*showKeyPadLocked) (void);
+ − static void showSOSCallKeyPadLocked(void);
+ − void idle_info_destroy_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason);
+ −
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − Information WINDOW. DECLARATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ −
+ −
+ − static int lockTimerEvent(MfwEvt e, MfwTim *t);
+ − static void showPressMenuStar(void);
+ − static void showSMSNewMessage(void);
+ − static void showNothing(void);
+ −
+ −
+ −
+ − T_MFW_HND idle_information_create(MfwHnd parent);
+ − void idle_information_destroy (T_MFW_HND own_window);
+ −
+ − static int idle_information_kbd_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_information_kbd_long_cb (MfwEvt e, MfwKbd *k);
+ − static int idle_information_win_cb (MfwEvt e, MfwWin *w);
+ −
+ − typedef struct
+ − {
+ − T_MMI_CONTROL mmi_control;
+ − T_MFW_HND win; // window handle
+ − T_MFW_HND parent_win;
+ − T_MFW_HND timer;
+ − T_VOID_FUNC info_cb;
+ − T_MFW_HND kbd;
+ − } T_idle_information;
+ −
+ −
+ −
+ − void idle_information (T_MFW_HND win, USHORT event, SHORT value, void * parameter);
+ − T_MFW_HND idle_information_start(MfwHnd win_parent,S32 time,void (*show)(void),T_VOID_FUNC info_cb);
+ −
+ −
+ −
+ −
+ −
+ − static void (*showInformation)(void);
+ −
+ −
+ − static int idle_information_tim_cb(MfwEvt e, MfwTim *t);
+ − static int idle_imei_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reason);
+ −
+ −
+ − T_MFW_HND ShowVersion(T_MFW_HND parent_window);
+ − static T_MFW_HND ShowVersion_create(MfwHnd parent_window);
+ − static void ShowVersion_DialogCB(T_MFW_HND win, USHORT e, SHORT identifier, void *parameter);
+ − void ShowVersionSetEditor(T_MFW_HND win);
+ − static void ShowVerionCB( T_MFW_HND win, USHORT Identifier,UBYTE reason);
+ − void showVersion_destroy(MfwHnd own_window);
+ − const char * date = "29.02.02";
+ − const char * bmi = "01.06.01";
+ − const char * gprs = "XX.XX.XX";
+ − const char * ti = "05.03.02";
+ −
+ − //API - 13-01-03 - 1310 - Create a variable for idle instead of using global pin_emergency_call
+ − UBYTE pin_idle_emerg_call;
+ − // Apr 27, 2004 REF: ENH 12646 Deepa M.D
+ − extern int smsFullEventTim( MfwEvt e, MfwTim *tc );
+ −
+ − #ifdef MMI_EM_ENABLED
+ − //xrashmic 22 Aug, 2004 MMI-SPR-32798
+ − U8 screenCaptureKey=KCD_NONE;
+ − T_MFW_HND screen_capture_win;
+ − #endif
+ −
+ − //x0pleela 09 Feb, 2006 ER: OMAPS00065203
+ − //callback for timer to display opername on idle screen
+ − int idle_opername_timer_cb( MfwEvt e, MfwTim *tc );
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − IDLE WINDOW. IMPLEMENTATION
+ −
+ − *********************************************************************/
+ − /*******************************************************************************
+ −
+ − $Function: idleInit
+ −
+ − $Description: init MMI idle handling
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − void idleInit (MfwHnd parent)
+ − {
+ − T_MFW_HND hnd;
+ − winAutoFocus(TRUE);
+ − idle_data.nm_status = 0;
+ − // Apr 27, 2004 REF: ENH 12646 Deepa M.D
+ − //Timer created to blink the SMS icon , when SMS memory is full
+ − sms_animate= timCreate(0,500,(MfwCb) smsFullEventTim);
+ −
+ − //x0pleela 10 Feb, 2006 ER: OMAPS00065203
+ − //Create timer to display SPN for 5 secs and then display PLMN name
+ − plmn_display = timCreate(0, 5000, (MfwCb)idle_opername_timer_cb);
+ −
+ − hnd = idle_create (parent);
+ −
+ − TRACE_EVENT_P1("FFS_flashData.IdleScreenBgd = %d", FFS_flashData.IdleScreenBgd);
+ −
+ − if( FFS_flashData.ProviderNetworkShow != TRUE )
+ − FFS_flashData.ProviderNetworkShow = FFS_flashData.ProviderNetworkShow;
+ − else
+ − FFS_flashData.ProviderNetworkShow = TRUE;
+ −
+ − if((FFS_flashData.IdleScreenBgd >= BGD_NONE) && (FFS_flashData.IdleScreenBgd < BGD_LAST))
+ − idle_setBgdBitmap(FFS_flashData.IdleScreenBgd);
+ − else
+ − idle_setBgdBitmap(BGD_TI_LOGO);
+ −
+ − if((FFS_flashData.MainMenuBgd >= BGD_NONE) && (FFS_flashData.MainMenuBgd < BGD_LAST))
+ − icon_setMainBgdBitmap(FFS_flashData.MainMenuBgd);
+ − else
+ − icon_setMainBgdBitmap(BGD_SQUARE);
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idleExit
+ −
+ − $Description: exit MMI idle handling
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idleExit (void)
+ − {
+ − // Apr 27, 2004 REF: ENH 12646 Deepa M.D
+ − //Delete the timer for blinking SMS Icon ,when memory is full.
+ − if (sms_animate)
+ − {
+ − timStop(sms_animate);
+ − timDelete(sms_animate);
+ − }
+ − sms_animate = 0;
+ −
+ − //x0pleela 14 Feb, 2006 ER: OMAPS00065203
+ − //Delete the timer of operator name display
+ − if( plmn_display)
+ − {
+ − timDelete(plmn_display);
+ − plmn_display = 0;
+ − }
+ −
+ − mfwSetSatIdle(0);
+ −
+ − idle_destroy (idle_data.win);
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_create
+ −
+ − $Description: Creation of an instance for the Idle dialog.
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − T_MFW_HND idle_create (T_MFW_HND parent_window)
+ − {
+ − T_idle * data = &idle_data;
+ − T_MFW_WIN * win;
+ − UBYTE result;
+ −
+ − TRACE_FUNCTION ("idle_create");
+ −
+ − memset(&idle_data,'\0',sizeof(idle_data));
+ − idle_data.defTextOffset= SCREEN_SIZE_Y-Mmi_layout_softkeyHeight()-6*Mmi_layout_line_height();
+ −
+ − /*
+ − * Create window handler
+ − */
+ − //x0pleela 15 Feb, 2006 ER:OMAPs00065203
+ − //Register MfwWinResume event also
+ − data->win = win_create (parent_window, 0, E_WIN_VISIBLE|MfwWinResume, (T_MFW_CB)idle_win_cb);
+ −
+ − if (data->win EQ 0)
+ − {
+ − mfwSetSatIdle(0);
+ − return 0;
+ − }
+ −
+ − VOS_Idle_Win = data->win;
+ −
+ −
+ − /*
+ − * These assignments are necessary to attach the data to the window, and to handle the mmi event communication.
+ − */
+ −
+ −
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)idle;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->win)->data;
+ − win->user = (void *) data;
+ −
+ − /*
+ − * Create any other handler
+ − */
+ −
+ − data->kbd = kbd_create (data->win,KEY_ALL|KEY_MAKE,(T_MFW_CB)idle_kbd_cb);
+ − data->kbd_long = kbd_create (data->win,KEY_ALL|KEY_LONG,(T_MFW_CB)idle_kbd_long_cb);
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − data->editor = 0;
+ − data->editor_sat = 0;
+ − AUI_edit_SetAttr(&data->editor_attr2, WIN_DIALLING_CB, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_READONLY, ED_CURSOR_NONE, ATB_DCS_ASCII, (UBYTE*)data->incoming_cb_msg, MAX_CBMSG_LEN);
+ − AUI_edit_SetAttr(&data->editor_attr3, WIN_DIALLING_SMS, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_READONLY, ED_CURSOR_NONE, ATB_DCS_ASCII, (UBYTE*)data->incoming_sms_msg, MAX_MSG_LEN_SGL);
+ − AUI_edit_SetAttr(&data->editor_attr_sat, WIN_DIALLING_SAT, COLOUR_EDITOR_XX, EDITOR_FONT, ED_MODE_READONLY, ED_CURSOR_NONE, ATB_DCS_ASCII, (UBYTE*)data->incoming_sat_msg, MAX_CBMSG_LEN);
+ − #else /* NEW_EDITOR */
+ − data->edt = 0;
+ − data->edt_sat = 0; /* SPR759 - SH*/
+ − bookSetEditAttributes(WIN_DIALLING_CB, COLOUR_EDITOR_XX,0,edtCurNone,0,(char*)data->incoming_cb_msg, MAX_CBMSG_LEN,&data->edt_attr2);
+ − bookSetEditAttributes(WIN_DIALLING_SMS, COLOUR_EDITOR_XX,0,edtCurNone,0,(char*)data->incoming_sms_msg, MAX_MSG_LEN_SGL,&data->edt_attr3);
+ − bookSetEditAttributes(WIN_DIALLING_SAT, COLOUR_EDITOR_XX,0,edtCurNone,0,(char*)data->incoming_sat_msg, MAX_CBMSG_LEN,&data->edt_attr_sat);
+ − #endif /* NEW_EDITOR */
+ −
+ − /*
+ − * In the new design the are created and automatically shown.
+ − */
+ −
+ − winShow(data->win);
+ − data->search=FALSE;
+ − data->missedCalls = 0;
+ − //API - 23/09/02 - Emergency Call Define
+ − pin_idle_emerg_call = FALSE;
+ − data->flagIdle=FALSE;
+ − data->right_key_pressed = FALSE;
+ − addCBCH(NULL, IdleNewCBImmediateMessage);
+ − data->new_cbch= FALSE;
+ − data->clean_screen = FALSE; //for clean the DISPLAY ZONE 3
+ − data->ciphering = DONT_SHOW_CPRS; //use as a default
+ − data->starting_up = TRUE; /*SPR#1662 JVJ New flag for the start up procedure */
+ −
+ −
+ −
+ − //init the Ciphering indication
+ − result = sim_init_CPRS ((CallbackCPRI) idle_Ciphering, MFW_SIM_CPRI_SHOW );
+ −
+ − if (result == FALSE)
+ − TRACE_EVENT("Cant show Ciphering");
+ −
+ − /*
+ − ** CQ16435 : Set the Mfw Sat window to this value.
+ − */
+ − mfwSetSatIdle(data->win);
+ −
+ − /*
+ − * return window handle
+ − */
+ − return data->win;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_destroy
+ −
+ − $Description: Destroy the idle dialog.
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idle_destroy (T_MFW_HND own_window)
+ − {
+ − T_MFW_WIN * win;
+ − T_idle * data;
+ −
+ − /*
+ − * The destruction of this dialog is trivial, because the information contained is not dynamic. A better example
+ − * of dialog destruction can be found in dialling_destroy
+ − */
+ − TRACE_FUNCTION ("idle_destroy");
+ −
+ −
+ − if (own_window)
+ − {
+ − win = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_idle *)win->user;
+ −
+ − if (data)
+ − {
+ − /*
+ − * Exit Keyboard Handler
+ − */
+ − /*
+ − * Delete WIN Handler
+ − */
+ − win_delete (data->win);
+ − data->win=0;
+ − }
+ − }
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle
+ −
+ − $Description: Dialog function for idle top window.
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idle (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − U8 * key_code;
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
+ − T_idle * data = (T_idle *)win_data->user;
+ −
+ −
+ − /*
+ − * This function is called by the SEND_EVENT macro, when the parameter win is the idle window. the different events
+ − * come from another mmi modules.
+ − */
+ −
+ −
+ − TRACE_FUNCTION ("idle()");
+ −
+ − switch (event)
+ − {
+ − case NETWORK_NO_SERVICE:
+ − case NETWORK_NO_PLMN_XXX_AVAIL:
+ − /*
+ − * Network management indicates no or limited service
+ − */
+ − data->nm_status = event;
+ − data->search=TRUE;
+ −
+ − /*NM, p020*/
+ − if(idleIsFocussed())
+ − windowsUpdate();
+ − break;
+ − case NETWORK_SEARCH_NETWORK:
+ − case NETWORK_FULL_SERVICE:
+ − /*
+ − * Network will be searched or is available
+ − */
+ −
+ − #ifdef MMI_HOMEZONE_ENABLED
+ − //Jun 14, 2005 REF: MMI-FIX-30439 x0018858
+ − //Modified the conditional statement to read only once.Rest of the code will be performed everytime.
+ − //begin 30439
+ − if (event==NETWORK_FULL_SERVICE && !homezoneFlag)
+ − {
+ − homezoneFlag = 1; /* only read one time from SIM for FULL SERVICE */
+ − homezoneReadSim(HZ_READ_ONCE_ONLY); // Read in homezone data. Will do nothing on repeated calls.
+ − }
+ − //end 30439
+ − #endif
+ − data->search=FALSE;
+ − data->nm_status = event;
+ −
+ − /*NM, p020*/
+ − if(idleIsFocussed())
+ − windowsUpdate();
+ − break;
+ −
+ − case IDLE_UPDATE:
+ − /*NM, p020*/
+ − if ((idleIsFocussed()) || (idle_data.klck_win != NULL))
+ − {
+ − if ((mmiStart_animationComplete()!=TRUE) && (mmiPinsEmergencyCall() == TRUE))
+ − {
+ − mmiPinsResetEmergencyCall();
+ − mfwSimRestartPinEntry();
+ − }
+ − else
+ − windowsUpdate();
+ − }
+ − break;
+ −
+ − case IDLE_NEW_SMS:
+ − // show the info about incoming sms on the idle screen
+ − idle_data.clean_screen = FALSE;
+ − /*NM, p020*/
+ − if(idleIsFocussed())
+ − windowsUpdate();
+ − else if (idle_data.klck_win != NULL)
+ − SEND_EVENT(idle_data.klck_win,IDLE_NEW_SMS,0,0);
+ − break;
+ − case IDLE_ACTIVE_KEY_PAD_LOCKED:
+ − idle_data.klck_win = idle_key_pad_locked_create(win);
+ − windowsUpdate();
+ − break;
+ −
+ − case IDLE_DETAILS_NUMBER:
+ − idle_dialling_create(win);
+ − windowsUpdate();
+ − break;
+ −
+ − case IDLE_START_DIALLING_NUMBER:
+ − key_code = (U8*)parameter;
+ − memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf));
+ − idle_data.edt_buf[0]=editControls[*key_code];
+ − idle_dialling_start(idle_data.win,NULL);
+ − break;
+ −
+ − default:
+ − return;
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idleExec
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idleExec (int reason, MmiState next)
+ − {
+ − MmiModuleSet (ModuleIdle); /* Set the global status of Idle */
+ − switch (reason)
+ − {
+ − case IdleNormal: /* enter normal idle mode */
+ − winShow(idle_data.win);
+ − break;
+ − default:
+ − break;
+ − }
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idleEvent
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idleEvent (int reason)
+ − {
+ − TRACE_EVENT_P1("IDLE event reason: %d",reason);
+ −
+ − switch (reason)
+ − {
+ − case IdleSearchNetwork:
+ − if (idle_data.win)
+ − SEND_EVENT(idle_data.win,IDLE_NO_NETWORK,0,0);
+ − break;
+ − case IdleUpdate:
+ − if (idle_data.win)
+ − SEND_EVENT(idle_data.win,IDLE_UPDATE,0,0);
+ − break;
+ − case IdleNewSmsMessage:
+ − if (idle_data.win)
+ − SEND_EVENT(idle_data.win,IDLE_NEW_SMS,0,0);
+ − break;
+ − case IdleActiveKeyPadLocked:
+ − if (idle_data.win)
+ − SEND_EVENT(idle_data.win,IDLE_ACTIVE_KEY_PAD_LOCKED,0,0);
+ − break;
+ − case PhbkDetailListToIdle:
+ − if (idle_data.win)
+ − SEND_EVENT(idle_data.win,IDLE_DETAILS_NUMBER,0,0);
+ − break;
+ − default:
+ − break;
+ − }
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_setBgdBitmap
+ −
+ − $Description: This procedure is called when the idle background bitmap is to be changed
+ −
+ − $Returns: None
+ −
+ − $Arguments: bmp - pointer to the bitmap structure.
+ −
+ − *******************************************************************************/
+ − void idle_setBgdBitmap(int bmpId)
+ − {
+ − idle_data.idleBgd = icon_getBitmapFromId(bmpId, NULL);
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_initDisplayData
+ −
+ − $Description: initialises the display data
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − $History
+ − GW 09/10/02 - Created
+ −
+ − *******************************************************************************/
+ − enum {
+ − IDLE_CHARGING_MODE,
+ − IDLE_NETWORK_NAME,
+ − IDLE_CALL_SMS_INFO,
+ − IDLE_CLOCK_STR,
+ − IDLE_DATE_STR,
+ − IDLE_LOCKED_ECC,
+ − IDLE_LOCKED,
+ − IDLE_MENU_PRESS,
+ − IDLE_END
+ − };
+ −
+ − static int idlePosition[IDLE_END];
+ − /*******************************************************************************
+ −
+ − $Function:
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − $History
+ − GW 09/10/02 - Created
+ −
+ − *******************************************************************************/
+ − int idle_initDisplayData( void )
+ − {
+ − int i;
+ − for (i=0;i<IDLE_END;i++)
+ − idlePosition[i] = 0;
+ −
+ − // ADDED BY RAVI - 28-11-2005
+ − return 0;
+ − // END RAVI - 28-11-2005
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_displayData
+ −
+ − $Description: Procedure to allow different layouts of the idle screen data depending on
+ − hardware configuration.
+ − Each bit of text that can be displayed is given a value in the enumerated type.
+ − For some h/w configurations, different enumerated type values are displayed in
+ − the same position. By checking the 'idlePosition' array we can tell if we can display
+ − a particular bit of text. This allows a C-sample to display either the SMS information
+ − or the clock and for the D-sample to always display the clock (and the date).
+ −
+ − $Returns: None.
+ −
+ − $Arguments: dataId - value form the enumerated type that indicates what the data is
+ − txtId - text identifier (can be set to TxtNull if not used)
+ − strId - pointer to a char array to be displayed. Array is assumed to be ascii.
+ − NB If both txtId and strId are used, the string is displayed first followed by
+ − 1 or 2 spaces, then the text id allowing display of "1 New Message" etc.
+ − $History
+ − GW 09/10/02 - Created
+ −
+ − *******************************************************************************/
+ − int idle_displayData( int dataId , int txtId, char* txtStr)
+ − {
+ − int xPos, yPos;
+ − int lenStr,lenId,lenSpace;
+ − int txtWidth = 0; // RAVI
+ − char *txtSpace = ""; //EF must initialise. 03/02/2003
+ − char *idStr;
+ − int txtFormat = 0; // RAVI
+ − int noRoom = 0;
+ −
+ − if (txtStr != NULL)
+ − lenStr = dspl_GetTextExtent( txtStr, 0);
+ − else
+ − lenStr = 0;
+ − if (txtId!=TxtNull)
+ − {
+ − idStr = (char*)MmiRsrcGetText(txtId);
+ − lenId = dspl_GetTextExtent( idStr, 0);
+ − }
+ − else
+ − {
+ − lenId = 0;
+ − idStr = "";
+ − }
+ − if ((lenId > 0 ) && (lenStr >0))
+ − {
+ − #ifndef LSCREEN
+ −
+ − txtSpace=" ";
+ −
+ − #else
+ − txtSpace=" ";
+ −
+ − #endif
+ − lenSpace = dspl_GetTextExtent( txtSpace, 0);
+ − }
+ − else
+ − {
+ − lenSpace = 0;
+ − }
+ − txtWidth = lenStr+lenId+lenSpace;
+ − if (idlePosition[dataId] == 0)
+ − idlePosition[dataId] = 1;
+ − else
+ − {
+ − //We have already output something here - do not overwrite it
+ − noRoom = 1;
+ − }
+ − #ifndef LSCREEN
+ − xPos = 0;
+ − yPos = 0;
+ − txtFormat = 0;
+ −
+ − switch (dataId)
+ − {
+ − case IDLE_NETWORK_NAME:
+ − xPos = 16;
+ − yPos = Mmi_layout_line_icons(1);
+ − break;
+ −
+ − case IDLE_CHARGING_MODE:
+ − xPos = 16;
+ − yPos = Mmi_layout_line_icons(2);
+ − break;
+ −
+ − case IDLE_CALL_SMS_INFO:
+ − xPos = 0;
+ − yPos = Mmi_layout_line_icons(3);
+ − break;
+ −
+ − case IDLE_CLOCK_STR:
+ − /* Marcus: Issue 1614: 23/01/2003: Start */
+ − #ifdef NEW_EDITOR
+ − if ((idlePosition[IDLE_CALL_SMS_INFO] == 0) &&
+ − (idle_data.editor == NULL))
+ − #else
+ − if ((idlePosition[IDLE_CALL_SMS_INFO] == 0) &&
+ − (idle_data.edt == NULL))
+ − #endif
+ − /* Marcus: Issue 1614: 23/01/2003: End */
+ − {
+ − xPos = 30;
+ − yPos = 24;
+ − }
+ − else
+ − { //no room to display the time
+ − noRoom = 1;
+ − }
+ − break;
+ − case IDLE_DATE_STR:
+ − noRoom = 1; //date not displayed in B-sample/C-sample
+ − break;
+ − case IDLE_LOCKED_ECC:
+ − case IDLE_LOCKED:
+ − xPos = 0;
+ − yPos = idleLine(2);
+ − break;
+ − case IDLE_MENU_PRESS:
+ − xPos = 0;
+ − yPos = idleLine(3);
+ − break;
+ −
+ − default:
+ − break;
+ − }
+ − #else
+ − xPos = (SCREEN_SIZE_X - txtWidth)/2;
+ − yPos = idle_data.defTextOffset;
+ − txtFormat = 0;
+ − switch (dataId)
+ − {
+ − case IDLE_NETWORK_NAME:
+ − if (idle_data.idleNetLogo == NULL)
+ − yPos = Mmi_layout_line_height()*4;
+ − else
+ − yPos = yPos + Mmi_layout_line_height()*3;
+ − break;
+ −
+ − case IDLE_CHARGING_MODE:
+ − yPos = yPos + Mmi_layout_line_height()*4;
+ − break;
+ −
+ − case IDLE_CALL_SMS_INFO:
+ − yPos = yPos + Mmi_layout_line_height()*5;
+ − break;
+ −
+ − case IDLE_CLOCK_STR:
+ − /* Marcus: Issue 1614: 23/01/2003: Start */
+ − #ifdef NEW_EDITOR
+ − if (idle_data.editor == NULL)
+ − #else
+ − if (idle_data.edt == NULL)
+ − #endif
+ − /* Marcus: Issue 1614: 23/01/2003: End */
+ − {
+ − xPos = 10;
+ − yPos = yPos + Mmi_layout_line_height();
+ − }
+ − else
+ − {
+ − noRoom = 1;
+ − }
+ − break;
+ − case IDLE_DATE_STR:
+ − /* Marcus: Issue 1614: 23/01/2003: Start */
+ − #ifdef NEW_EDITOR
+ − if (idle_data.editor == NULL)
+ − #else
+ − if (idle_data.edt == NULL)
+ − #endif
+ − {
+ − xPos = SCREEN_SIZE_X - txtWidth - 10;
+ − yPos = yPos + Mmi_layout_line_height();
+ − }
+ − else
+ − {
+ − noRoom = 1;
+ − }
+ − /* Marcus: Issue 1614: 23/01/2003: End */
+ − break;
+ − case IDLE_LOCKED_ECC:
+ − xPos = 0; /*SPR#2026 - DS - Changed from 10 */
+ − yPos = yPos + Mmi_layout_line_height()*4;
+ − dspl_Clear(xPos,yPos,mmiScrX,mmiScrY);
+ − dspl_Clear(xPos,yPos+ Mmi_layout_line_height()*5,mmiScrX,mmiScrY);
+ − break;
+ − case IDLE_LOCKED:
+ − xPos = 10;
+ − yPos = yPos + Mmi_layout_line_height()*4;
+ − break;
+ − case IDLE_MENU_PRESS:
+ − xPos = 10;
+ − yPos = yPos + Mmi_layout_line_height()*5;
+ − break;
+ −
+ − default:
+ − break;
+ −
+ − }
+ − #endif
+ −
+ − if (!noRoom)
+ − {
+ − //GW 28/11/02 - Only display a non-null string
+ −
+ − /*MC SPR 1526, using dspl_TextOut rather than dspl_ScrText*/
+ − if (txtStr != NULL)
+ − dspl_TextOut(xPos, yPos, 0, txtStr);
+ − if (lenSpace!= NULL)
+ − dspl_TextOut(xPos+lenStr, yPos, 0, txtSpace);
+ − dspl_TextOut(xPos+lenStr+lenSpace,yPos, 0, idStr);
+ − }
+ −
+ − // ADDED BY RAVI - 28-11-2005
+ − return 0;
+ − //END RAVI - 28-11-2005
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function:
+ −
+ − $Description: Returns a pixel position for a line number on the idle screen
+ −
+ − $Returns: y pixel position for the line
+ −
+ − $Arguments: lineNo - line number
+ −
+ − $History
+ − GW 09/10/02 - Created
+ −
+ − *******************************************************************************/
+ − static int idleLine( int lineNo )
+ − {
+ − // int yPos; // RAVI
+ − #ifndef LSCREEN
+ − return (Mmi_layout_line_icons(lineNo));
+ − #else
+ − return (Mmi_layout_line(lineNo)*3/2+Mmi_layout_IconHeight());
+ − #endif
+ − }
+ −
+ − /*SPR 1725, removed getClockString() and getDateString() functions*/
+ −
+ − /*******************************************************************************
+ −
+ − $Function:
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − $History
+ − GW 09/10/02 - Created
+ −
+ − *******************************************************************************/
+ − //Fix for 19656
+ − void idle_show_cb_editor_scrollbar(T_ED_DATA *e)
+ − {
+ − int editX, editY, editWidth, editHeight;
+ − int scrollBarSize, scrollBarPos;
+ −
+ − if(e->viewHeight>=e->totalHeight)
+ − return;
+ −
+ − editX=e->attr->win_size.px;
+ − editY=e->attr->win_size.py;
+ − editWidth=e->attr->win_size.sx-3;
+ − editHeight=e->attr->win_size.sy;
+ −
+ − dspl_DrawLine(editX+editWidth, editY, editX+editWidth, editY+editHeight-1);
+ − scrollBarSize = e->viewHeight * editHeight / e->totalHeight;
+ − if (scrollBarSize>editHeight)
+ − scrollBarSize = editHeight;
+ − scrollBarPos = e->viewStartPos * editHeight / e->totalHeight;
+ −
+ − dspl_DrawLine(editX+editWidth+1, editY+scrollBarPos, editX+editWidth+1,
+ − editY+scrollBarPos+scrollBarSize);
+ − dspl_DrawLine(editX+editWidth+2, editY+scrollBarPos, editX+editWidth+2,
+ − editY+scrollBarPos+scrollBarSize);
+ − }
+ −
+ − void idle_draw_main_idle( void )
+ − {
+ − T_CURRENT_NETWORK current_network;
+ − char text[20];
+ − int txtStrId; //Id of text string to be displayed
+ − int txtNo; //Numeric value to be displayed (0=no value)
+ − //int xOfs; //used to offset text id when a number is to be displayed // RAVI
+ − // int lenStr, txtFormat; // RAVI
+ − // static int nTimes=0; // RAVI
+ − int oldborderSize;
+ − int localborderSize;
+ − // Jul 08, 2005 REF: ENH 32642 x0018858
+ − char dt_str[20]; //date string
+ − char time_str[20]; //time string
+ − int xPos,yPos; //x and y position on screen
+ −
+ − // Nov 24, 2005, a0876501, DR: OMAPS00045909
+ − int sim_status;
+ −
+ − // Apr 14, 2004 REF: CRR 12653 xvilliva
+ − CHAR oper[MAX_ALPHA_OPER_LEN]; /* operator name */
+ − T_ACI_COPS_MOD mode; /* COPS mode */
+ − T_ACI_COPS_FRMT frmt; /* COPS format */
+ − T_ACI_NRG_RGMD regMode;
+ − T_ACI_NRG_SVMD srvMode;
+ − T_ACI_NRG_FRMT oprFrmt;
+ − T_ACI_NRG_SVMD srvStat;
+ − LimitedService = 0;//end of crr12653
+ −
+ −
+ − // Nov 24, 2005, a0876501, DR: OMAPS00045909
+ − sim_status = sim_status_check();
+ −
+ −
+ − TRACE_FUNCTION("idle_draw_main_idle()");
+ −
+ − /* If we have not finished animation, do not draw any of the idle screen */
+ − if (mmiStart_animationComplete()!=TRUE)
+ − return;
+ −
+ − TRACE_FUNCTION("idle_draw_main_idle");
+ −
+ − resources_setColour( COLOUR_IDLE );
+ − dspl_ClearAll();
+ − idle_initDisplayData();
+ −
+ − if (idle_data.starting_up) /*SPR#1662 - NH Show please wait since the phone is not ready yet*/
+ − {
+ − idle_displayData(IDLE_NETWORK_NAME,TxtPleaseWait,NULL);
+ − return;
+ − }
+ −
+ − /* GW SPR#1721 - Add a border round all the text on the idle screen */
+ − #ifdef COLOURDISPLAY
+ − oldborderSize = dspl_setBorderWidth(1);
+ − #endif
+ − if (dspl_GetFgdColour()==dspl_GetBorderColour())
+ − {
+ − //Get a colour that contrasts with the foreground colour
+ − dspl_SetBorderColour(dspl_GetContrastColour(dspl_GetFgdColour()));
+ − //If this is the same as the background colour... too bad
+ − }
+ −
+ − if(idle_data.idleBgd != NULL)
+ − dspl_BitBlt2(idle_data.idleBgd->area.px,idle_data.idleBgd->area.py,idle_data.idleBgd->area.sx,idle_data.idleBgd->area.sy,(void *)idle_data.idleBgd->icons,0,idle_data.idleBgd->icnType);
+ −
+ − // Jul 08, 2005 REF: ENH 32642 x0018858
+ − // Set the back ground and foreground colour.
+ − dspl_SetFgdColour( COL_BLK );
+ − dspl_SetBgdColour( COL_TRANSPARENT );
+ −
+ − if (idle_data.nm_status == NETWORK_FULL_SERVICE)
+ − {
+ − network_get_name (¤t_network);
+ − #ifdef COLOURDISPLAY
+ − idle_data.idleNetLogo = icon_getNetworkIcon(current_network.network_name);
+ − #else
+ − idle_data.idleNetLogo = NULL;
+ − #endif
+ − }
+ − else
+ − idle_data.idleNetLogo = NULL;
+ −
+ − //The animation complete will provide a better
+ −
+ − if (idle_data.idleNetLogo)
+ − {
+ − int xOfs,yOfs;
+ − T_BITMAP* icn=idle_data.idleNetLogo;
+ −
+ − if (icn->area.sy < SCREEN_SIZE_Y - Mmi_layout_IconHeight())
+ − {
+ − yOfs = Mmi_layout_IconHeight();
+ − if (icn->area.sy + yOfs < idle_data.defTextOffset)
+ − yOfs = yOfs + (idle_data.defTextOffset - icn->area.sy)/2;
+ − }
+ − else
+ − yOfs = 0;
+ −
+ − if (icn->area.sx < SCREEN_SIZE_X)
+ − xOfs = (SCREEN_SIZE_X - icn->area.sx)/2;
+ − else
+ − xOfs = 0;
+ − #ifdef COLOURDISPLAY
+ − dspl_BitBlt2(xOfs,yOfs,icn->area.sx,icn->area.sy,icn->icons,0,icn->icnType);
+ − #endif
+ − }
+ −
+ − if (smsidle_get_unread_sms_available())
+ − iconsSetState(iconIdSMS);/* Indicate SMS delivery to MS-User. */
+ − else
+ − iconsDeleteState(iconIdSMS);
+ −
+ − /*
+ − DISPLAY ZONE 1
+ − */
+ − GlobalIconStatus = GlobalSignalIconFlag | GlobalBatteryIconFlag
+ − | GlobalSMSIconFlag| GlobalVoiceMailIconFlag
+ − | GlobalCallForwardingIconFlag| GlobalKeyplockIconFlag
+ − | GlobalRingerIconFlag | GlobalRingVibrIconFlag
+ − | GlobalVibratorIconFlag | GlobalAlarmIconFlag
+ − | GlobalSilentRingerIconFlag|GlobalCipheringActivIconFlag
+ − | GlobalCipheringDeactivIconFlag
+ − /* SH 18/01/02. Flag for GPRS On icon. */
+ − #ifdef MMI_GPRS_ENABLED
+ − | GlobalGPRSOnIconFlag
+ − #endif
+ − /* SPR759 - SH - Flag for Homezone icon */
+ − #ifdef MMI_HOMEZONE_ENABLED
+ − | GlobalHomezoneIconFlag
+ − #endif
+ − /* SPR#1352 - SH - Flag for TTY icon */
+ − #ifdef MMI_TTY_ENABLED
+ − | GlobalTTYIconFlag
+ − #endif
+ − /* SH end */
+ − ;
+ −
+ − /* OMAPS00050447: a0393130, handle removal of sim card */
+ − /* In case of no network service icon display is handled in */
+ − /* switch case below */
+ − if(idle_data.nm_status == NETWORK_NO_SERVICE && sim_status == SIM_NOT_ACTIVE)
+ − /* OMAPS00050447: a0393130, handle removal of sim card */
+ − {
+ − TRACE_EVENT("ICON display handled below");
+ − }
+ − else
+ − {
+ − TRACE_EVENT("Normal ICON display handled");
+ − iconsShow();
+ − }
+ −
+ − /*
+ − DISPLAY ZONE 2
+ − */
+ − switch (idle_data.nm_status)
+ − {
+ − case NETWORK_FULL_SERVICE :
+ − if (globalMobileMode == (GlobalMobileOn|GlobalCharging))
+ − {
+ − if(globalBatteryMode == GlobalBatteryFull)
+ − {
+ − idle_displayData(IDLE_CHARGING_MODE,TxtChargComplete,NULL);
+ −
+ − }
+ − else
+ − {
+ − idle_displayData(IDLE_CHARGING_MODE,TxtCharging,NULL);
+ − }
+ − break;
+ − }
+ − else
+ − {
+ − if (DivertStatus == MFW_CFLAG_SET)
+ − {
+ − idle_displayData(IDLE_CHARGING_MODE,TxtCallDivert,NULL);
+ − }
+ − }
+ − /*NM p032
+ − set the flag when the TEST SIM is inserted*/
+ − if (!strcmp((char *)current_network.network_name,"00101"))
+ − {
+ − test_sim = TRUE;
+ − }
+ − else
+ − {
+ − test_sim = FALSE;
+ − }
+ − /*p032 end */
+ −
+ − //x0pleela 9 Feb, 2006 ER:OMAPS00065203
+ −
+ − //If SPN and plmn name are not NULL, display SPN for 5 seconds and the plmn name
+ − //For the above scenario, display_condition of SPN is not checked as per Cingular's requirement
+ − //In spite of display_condition being FALSE, we go ahead and display SPN
+ −
+ − //If SPN is NULL and plmn name is not NULL, then display plmn name
+ −
+ − /* Marcus: Issue 1618: 24/01/2003: Start *
+ − *
+ − * If we have a service provider name, show that,
+ − * else show the PLMN name
+ − */
+ −
+ − if(!timer_start_flag)
+ − {
+ − timStart(plmn_display);
+ − timer_start_flag = TRUE;
+ − }
+ −
+ − if( ( opername_disp_flag EQ SPN ) AND
+ − (strlen((char*)current_network.service_provider_name)) ) //SPN name
+ − {
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNull,(char*)current_network.service_provider_name);
+ − }
+ − else
+ − {
+ − if(strlen((char*)current_network.plmn_name)) //PLMN name
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNull,(char*)current_network.plmn_name);
+ − else //Numeric name
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNull,(char*)current_network.network_name);
+ − }
+ −
+ − /* Marcus: Issue 1618: 24/01/2003: End */
+ − break;
+ −
+ − case NETWORK_SEARCH_NETWORK :
+ − idle_displayData(IDLE_NETWORK_NAME,TxtSearching,NULL);
+ − break;
+ − case NETWORK_NO_SERVICE :
+ − if (sim_status == SIM_NOT_ACTIVE)
+ − {
+ − /* OMAPS00050447: a0393130, handle removal of sim card */
+ − globalSignalPicNumber =0; /* updating signal strength */
+ − iconsShow();
+ − /* OMAPS00050447: a0393130, handle removal of sim card */
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNoCard,NULL);
+ − }
+ − // Nov 24, 2005, a0876501, DR: OMAPS00045909
+ − else if (sim_status == IMEI_NOT_VALID)
+ − idle_displayData(IDLE_NETWORK_NAME,TxtInvalidIMEI,NULL);
+ − else
+ − {// Apr 14, 2004 REF: CRR 12653 xvilliva
+ − srvStat = -2;
+ − qAT_PercentNRG( CMD_SRC_LCL,
+ − ®Mode,
+ − &srvMode,
+ − &oprFrmt,
+ − &srvStat,
+ − oper);
+ −
+ − if(srvStat == NRG_SVMD_Limited && globalSignalPicNumber > iconSigStat49)
+ − {//xvilliva checking signal and limited service status.
+ − idle_displayData(IDLE_NETWORK_NAME,TxtLimService,NULL);
+ − LimitedService = 1;
+ − }
+ − else
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNoNetwork,NULL);
+ − }
+ − break;
+ − case NETWORK_NO_PLMN_XXX_AVAIL:
+ − if (sim_status == SIM_NOT_ACTIVE)
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNoCard,NULL);
+ − // Nov 24, 2005, a0876501, DR: OMAPS00045909
+ − else if (sim_status == IMEI_NOT_VALID)
+ − idle_displayData(IDLE_NETWORK_NAME,TxtInvalidIMEI,NULL);
+ − else
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNoNetwork,NULL);
+ − default:
+ − idle_displayData(IDLE_NETWORK_NAME,TxtNoNetwork,NULL);
+ − break;
+ − }
+ −
+ − /*
+ − DISPLAY ZONE 3
+ − */
+ −
+ − TRACE_EVENT("DISPLAY ZONE 3");
+ − txtStrId = TxtNull;
+ − txtNo= 0;
+ − // xOfs= 0; // RAVI
+ − if (!idle_data.clean_screen) //for clean the DISPLAY ZONE 3
+ − //dont show the following information when the user pressed
+ − // the HUP key once in the idle screen
+ − {
+ − TRACE_EVENT("Not clean screen");
+ − idle_data.new_sms = FALSE;
+ − /*
+ − ** NDH : 15/05/2003 : Change the priority for the idle display, such that
+ − ** CB, SAT Idle Display Text or Class 0 SMS are displayed with
+ − ** the highest priority
+ − */
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − /* Normal incoming cell broadcast */
+ − if (idle_data.new_cbch)
+ − {
+ − if (idle_data.editor)
+ − {
+ − ATB_edit_Hide(idle_data.editor);
+ − }
+ −
+ − /* SPR759 - SH. Hide SAT idle mode text if present */
+ − if (idle_data.editor_sat)
+ − {
+ − ATB_edit_Hide(idle_data.editor_sat);
+ − }
+ − txtStrId = TxtNewCbMessage;
+ − TRACE_EVENT("new_cbch");
+ − }
+ −
+ − /* SPR759 - SH - Display SAT idle mode text */
+ − else if (idle_data.editor_sat)
+ − {
+ − ATB_edit_Unhide(idle_data.editor_sat);
+ − ATB_edit_Show(idle_data.editor_sat);
+ − idle_show_cb_editor_scrollbar(idle_data.editor_sat); //Fix for 19656
+ − TRACE_EVENT("editor_sat");
+ − }
+ −
+ − /* Dialling editor, Immediate incoming cell broadcast */
+ − else if (idle_data.editor)
+ − {
+ − TRACE_EVENT("*** Displaying number editor *");
+ − /* MZ issue 1948, Modify the text boarder settings before displaying the message. */
+ − localborderSize = dspl_setBorderWidth(0);
+ − ATB_edit_Unhide(idle_data.editor);
+ − ATB_edit_Show(idle_data.editor);
+ − dspl_setBorderWidth(localborderSize);
+ − }
+ − #else /* NEW_EDITOR */
+ − /* Normal incoming cell broadcast */
+ − if (idle_data.new_cbch)
+ − {
+ − if (idle_data.edt)
+ − {
+ − edtHide(idle_data.edt);
+ − }
+ −
+ − /* SPR759 - SH. Hide SAT idle mode text if present */
+ − if (idle_data.edt_sat)
+ − {
+ − edtHide(idle_data.edt_sat);
+ − }
+ − txtStrId = TxtNewCbMessage;
+ − }
+ −
+ − /* SPR759 - SH - Display SAT idle mode text */
+ − else if (idle_data.edt_sat)
+ − {
+ − edtUnhide(idle_data.edt_sat);
+ − edtShow(idle_data.edt_sat);
+ − }
+ −
+ − /* Immediate incoming cell broadcast */
+ − else if (idle_data.edt)
+ − {
+ − edtUnhide(idle_data.edt);
+ − edtShow(idle_data.edt);
+ − }
+ − #endif /* NEW_EDITOR */
+ − else if (idle_data.missedCalls)
+ − {
+ − txtNo = idle_data.missedCalls;
+ − if(txtNo <= 1)
+ − {
+ − txtStrId = TxtMissedCall;
+ − }
+ − else
+ − {
+ − txtStrId = TxtMissedCalls;
+ − }
+ − TRACE_EVENT("missed calls");
+ − }
+ − //xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − // To display the indication of new EMS in the idle screen
+ − else if (idle_data.ems)
+ − {
+ − #if defined (FF_MMI_MMS) || defined (FF_MMI_EMS)//MMI-SPR 49811 - x0035544 07 nov 2005
+ − txtStrId = TxtEMSNew;
+ − #endif //MMI-SPR 49811 - x0035544 07 nov 2005
+ − }
+ − else if (sms_message_count(MFW_SMS_UNREAD) > 0 )
+ − {
+ − txtStrId = smsidle_display_sms_status(&txtNo );
+ − idle_data.new_sms = TRUE;
+ − }
+ − else if(FFS_flashData.settings_status & SettingsSilentMode)
+ − {
+ − txtStrId = TxtSilentMode;
+ − TRACE_EVENT("Silent mode");
+ − }
+ − /* Marcus: Issue 1604: 23/01/2003: Start */
+ − else if (smsidle_get_ready_state() && smsidle_get_memory_full())
+ − {
+ − /* x0018858 24 Mar, 2005 MMI-FIX-11321
+ − Added a condition to check for any pending message on the server.
+ − */
+ − //begin -x0018858 24 Mar, 2005 MMI-FIX-11321
+ − if(TRUE == sms_check_message_pending())
+ − {
+ − TRACE_EVENT("Pending SMS, but list is full");
+ − txtStrId = TxtSmsWaiting;
+ − }//end -x0018858 24 Mar, 2005 MMI-FIX-11321
+ − else
+ − {
+ − TRACE_EVENT("No unread SMS, but list is full");
+ − txtStrId = TxtSmsListFull;
+ − }
+ − }
+ − /* Marcus: Issue 1604: 23/01/2003: End */
+ − else
+ − {
+ − TRACE_EVENT("None of the above!");
+ − }
+ − }
+ − else //(!idle_data.clean_screen)
+ − {
+ − TRACE_EVENT("Clean screen");
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − //this is for the immediate incoming cell broadcast
+ − if (idle_data.editor)
+ − { /* MZ Issue 1948, modify the text border settings before displaying the message.*/
+ − localborderSize = dspl_setBorderWidth(0);
+ − ATB_edit_Unhide(idle_data.editor);
+ − ATB_edit_Show(idle_data.editor);
+ − dspl_setBorderWidth(localborderSize);
+ − }
+ − #else /* NEW_EDITOR */
+ − //this is for the immediate incoming cell broadcast
+ − if (idle_data.edt)
+ − {
+ − edtUnhide(idle_data.edt);
+ − edtShow(idle_data.edt);
+ − }
+ − #endif /* NEW_EDITOR */
+ −
+ − //20/4/01 MZ check for silent_mode status.
+ − else if(FFS_flashData.settings_status & SettingsSilentMode)
+ − {
+ − txtStrId = TxtSilentMode;
+ − }
+ − // May 21, 2004 REF: CRR 16084 Deepa M.D
+ − //Display the Message Full String, when the Idle screen is clean.
+ − else if (smsidle_get_ready_state() && smsidle_get_memory_full())
+ − {
+ − /* x0018858 24 Mar, 2005 MMI-FIX-11321
+ − Added a condition to check for any pending message on the server.
+ − */
+ − //begin -x0018858 24 Mar, 2005 MMI-FIX-11321
+ − if(TRUE == sms_check_message_pending())
+ − {
+ − TRACE_EVENT("Pending SMS, but list is full");
+ − txtStrId = TxtSmsWaiting;
+ − }//end -x0018858 24 Mar, 2005 MMI-FIX-11321
+ − else
+ − {
+ − TRACE_EVENT("No unread SMS, but list is full");
+ − txtStrId = TxtSmsListFull;
+ − }
+ − }
+ − else
+ − {
+ − TRACE_EVENT("None of the above 2");
+ − }
+ − }
+ − //If data has been set up, then show it
+ − if (txtStrId != TxtNull)
+ − {
+ − if (txtNo != 0)
+ − {
+ − sprintf((char*)text,"%d",txtNo);
+ − idle_displayData(IDLE_CALL_SMS_INFO,txtStrId,text);
+ − }
+ − else
+ − idle_displayData(IDLE_CALL_SMS_INFO,txtStrId,NULL);
+ − }
+ −
+ − idle_displayData(IDLE_CLOCK_STR, TxtNull, mfw_td_get_clock_str());/*SPR 1725*/
+ − idle_displayData(IDLE_DATE_STR, TxtNull, mfw_td_get_date_str()); /*SPR 1725*///Only displayed on D-sample
+ −
+ − /*
+ − DISPLAY ZONE 4
+ − */
+ −
+ − TRACE_EVENT("DISPLAY ZONE 4");
+ − resources_setSKColour( COLOUR_IDLE );
+ −
+ − /* GW SPR#1721 - Changed from a case statement so we restore colour/border info */
+ − if ((idle_data.search) && ((idle_data.nm_status==NETWORK_NO_SERVICE) ||
+ − (idle_data.nm_status==NETWORK_NO_PLMN_XXX_AVAIL)))
+ − {
+ − TRACE_EVENT("idle_win_cb()-no network yet");
+ − // Apr 14, 2004 REF: CRR 12653 xvilliva
+ − // Here we are setting the softkey names if there are missedCalls/SMS/CBCH
+ − // we set the left key as "Read" else it is "Names".
+ − if(srvStat == NRG_SVMD_Limited)
+ − {
+ − if(idle_data.new_sms || idle_data.missedCalls > 0 || idle_data.new_cbch)
+ − softKeys_displayId(TxtRead,TxtSoftMenu,0,COLOUR_IDLE);
+ − else
+ − softKeys_displayId(TxtNames,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ − else
+ − softKeys_displayId(TxtSearchName,TxtNull,0,COLOUR_IDLE);
+ − }
+ − //xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − // To display the 'read' softkey for the indication of new EMS in the idle screen
+ − //CRR 25268 & 25270: 14 Oct 2004 - xpradipg
+ − //display the read softkey only if there are no new cb message or sat messsage on idle screen
+ − else if (idle_data.ems && !idle_data.new_cbch && !idle_data.missedCalls && !idle_data.editor && !idle_data.editor_sat && !idle_data.clean_screen)
+ − {
+ − softKeys_displayId(TxtRead,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ − else if ( smsidle_get_unread_sms_available()
+ − && (!idle_data.clean_screen)
+ − && idle_data.new_sms )
+ − {
+ − TRACE_EVENT("idle_win_cb()-unread SMS");
+ − softKeys_displayId(TxtRead,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ − else if ((!idle_data.clean_screen) && idle_data.new_cbch)
+ − {
+ − TRACE_EVENT("idle_win_cb()-new CBCH");
+ − softKeys_displayId(TxtRead,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ − else if (idle_data.missedCalls > 0)
+ − {
+ − TRACE_EVENT("idle_win_cb()-missed calls");
+ − softKeys_displayId(TxtRead,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ − else
+ − {
+ − TRACE_EVENT("idle_win_cb()-phonebook");
+ − softKeys_displayId(TxtNames,TxtSoftMenu,0,COLOUR_IDLE);
+ − }
+ −
+ − // Jul 08, 2005 REF: ENH 32642 x0018858
+ − //Code to display the date/time even if the idle_data editor is being displayed.
+ − //Begin 32642
+ − #ifdef NEW_EDITOR
+ − if (idle_data.editor != NULL)
+ − #else
+ − if (idle_data.edt != NULL)
+ − #endif
+ − {
+ − dspl_SetFgdColour( COL_BLK );
+ − dspl_SetBgdColour( COL_TRANSPARENT );
+ −
+ − strcpy((char *)dt_str, mfw_td_get_date_str());
+ − strcpy((char *)time_str, mfw_td_get_clock_str());
+ −
+ − xPos = 10;
+ − yPos = Mmi_layout_line_height()*7;
+ −
+ − dspl_Clear(10, Mmi_layout_line_height()*7,mmiScrX,mmiScrY);
+ − dspl_TextOut (10,Mmi_layout_line_height()*7, 0, time_str);
+ −
+ − dspl_Clear(125, Mmi_layout_line_height()*7,mmiScrX,mmiScrY);
+ − dspl_TextOut(100,yPos,0, dt_str);
+ −
+ − }
+ − //End 32642
+ −
+ − resources_restoreMnuColour();//required only if other menu items are to be drawn afterwards
+ −
+ − resources_restoreColour();
+ −
+ − #ifdef COLOURDISPLAY
+ − dspl_setBorderWidth(oldborderSize);
+ − #endif
+ −
+ − //Debug - output how much memory is left.
+ − mfwCheckMemoryLeft();
+ −
+ − TRACE_FUNCTION("end of idle_draw_main_idle()");
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_win_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − $History
+ − GW 09/10/02 - Removed display code to separate procedure.
+ −
+ − *******************************************************************************/
+ − static int idle_win_cb (MfwEvt e, MfwWin *w)
+ − {
+ − TRACE_FUNCTION("idle_win_cb");
+ − switch (e)
+ − {
+ − case MfwWinVisible:
+ −
+ − /* Mar 08, 2006 REF:ER OMAPS00065168 */
+ − /* Destroy the editor to make the messages like 'new message' visible */
+ − #ifdef NEPTUNE_BOARD
+ − statusCBCH(FALSE);
+ − #endif
+ −
+ − idle_draw_main_idle();
+ − break;
+ − //x0pleela 15 Feb, 2006 ER:OMAPS00065203
+ − //Handling MfwWinResume event
+ − case MfwWinResume: /* window is resumed */
+ − opername_disp_flag = SPN;
+ − timer_start_flag = FALSE;
+ − break;
+ −
+ − case MfwWinFocussed: /* input focus / selected*/
+ − case MfwWinDelete:/* window will be deleted*/
+ − default:
+ − return MFW_EVENT_REJECTED;
+ − }
+ −
+ − return MFW_EVENT_CONSUMED;
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: keyEvent
+ −
+ − $Description: keyboard event handler
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − static int idle_kbd_cb (MfwEvt e, MfwKbd *k)
+ − {
+ −
+ − // static UBYTE right_key_pressed=FALSE; // RAVI
+ − UBYTE currentRinger = getCurrentRingerSettings();
+ −
+ − T_MFW_SMS_STAT sms_list_type = MFW_SMS_ALL;
+ − // UBYTE Temp_edt_buf[KEYPADLOCK_BUF_SIZE]; // RAVI
+ −
+ − // char debug[50]; // RAVI - Not Used.
+ −
+ − TRACE_FUNCTION("idle_kbd_cb");
+ −
+ − TRACE_EVENT_P1("Key: %d", k->code);
+ −
+ − if (idle_data.starting_up) /*NH Do nothing when starting up */
+ − {
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − if (!(e & KEY_MAKE))
+ − {
+ − switch (k->code)
+ − {
+ − case KCD_RIGHT:
+ − pin_idle_emerg_call = FALSE;
+ − break;
+ −
+ − // sbh - power key pressed in idle screen, we can shut down
+ − case KCD_POWER:
+ − pin_idle_emerg_call = FALSE;
+ − HUPKeyOrigin = 1;
+ − break;
+ −
+ − case KCD_LEFT:
+ − break;
+ −
+ − default:
+ − break;
+ − }
+ − idle_data.right_key_pressed = FALSE;
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ − idle_data.right_key_pressed = FALSE;
+ −
+ − if(idle_data.missedCalls > 0)
+ − {
+ − switch (k->code)
+ − {
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − idle_data.missedCalls = 0;
+ − bookPhonebookStart(idle_data.win,PhbkMissedCallsListNormal);
+ −
+ − return MFW_EVENT_CONSUMED;
+ − default:
+ − break;
+ − }
+ − }
+ −
+ − #if defined (FF_MMI_EMS) && defined (FF_GPF_TCPIP)
+ − //xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − // To launch the EMS inbox on pressing the "read" left softkey in idle
+ − // screen after receving the new EMS indication in the idle screen.
+ − if(idle_data.ems)
+ − {
+ − switch (k->code)
+ − {
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − MMSBox_start(idle_data.win, (MfwMnuAttr*)MMS_INBOX);
+ − return MFW_EVENT_CONSUMED;
+ − default:
+ − break;
+ − }
+ − }
+ − #endif
+ −
+ −
+ − if(LimitedService == 0 && idle_data.search)// Apr 14, 2004 REF: CRR 12653 xvilliva
+ − //if (idle_data.search)
+ − {
+ − switch (idle_data.nm_status)
+ − {
+ − case NETWORK_NO_SERVICE :
+ − case NETWORK_NO_PLMN_XXX_AVAIL:
+ −
+ − switch (k->code)
+ − {
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − network_start_full_service();
+ − winShow(idle_data.win);
+ − case KCD_HUP:
+ − idle_data.search=FALSE;
+ − winShow(idle_data.win);
+ − break;
+ − /*CONQ 6436, MC allow entry of emergency number*/
+ − /*API - 13-09-02 -Add all KCD_0 and KCD_8 */
+ − /*CQ10659 - API - 20/06/03 - Added KCD_STAR, KCD_HASH, KCD_6*/
+ − case KCD_0:
+ − case KCD_1:
+ − case KCD_2:
+ − case KCD_6:
+ − case KCD_8:
+ − case KCD_9:
+ − case KCD_STAR:
+ − case KCD_HASH:
+ − memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf));
+ − idle_data.edt_buf[0]=editControls[k->code];
+ − TRACE_EVENT_P2("Idle_data.edt_buf[0] = %d, [1] = %d", idle_data.edt_buf[0], idle_data.edt_buf[1]);
+ − idle_dialling_start(idle_data.win,NULL);
+ − break;
+ −
+ − default:
+ − break;
+ − }
+ − return MFW_EVENT_CONSUMED;
+ −
+ − default:
+ − break;
+ − }
+ − }
+ −
+ − if (smsidle_get_unread_sms_available()
+ − && (!idle_data.clean_screen)
+ − && idle_data.new_sms )
+ −
+ − {
+ −
+ − switch (k->code)
+ − {
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − // terminate the ringing
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #else
+ − /* Stop playing ring tone on key press - RAVI -23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − currentRinger = getcurrentSMSTone();
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ −
+ − vsi_t_sleep(0,10); /* small delay */
+ − #else
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ − #endif /*END RAVI */
+ − #endif
+ −
+ − idle_data.new_sms = FALSE;
+ − /*SPR 2512, removed setting of clean_screen flag here*/
+ − SmsRead_R_start(idle_data.win, (MfwMnuAttr *)&sms_list_type);
+ −
+ − return MFW_EVENT_CONSUMED;
+ − default:
+ − break;
+ − }
+ − }
+ −
+ − //this is for cell broadcast
+ − if ((!idle_data.clean_screen) && idle_data.new_cbch )
+ − {
+ − switch (k->code)
+ − {
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − // terminate the ringing
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #else
+ − /* Stop Playing Ring tone on Key press - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − currentRinger = getcurrentSMSTone();
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ −
+ − vsi_t_sleep(0,10); /* small delay */
+ − #else
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ − #endif /* END RAVI */
+ − #endif
+ −
+ − idle_data.new_cbch = FALSE;
+ − idle_data.clean_screen = TRUE;
+ − sms_cb_read_msg (ALL_MESSAGE);
+ − return MFW_EVENT_CONSUMED;
+ − default:
+ − break;
+ − }
+ − }
+ −
+ −
+ −
+ − switch (k->code)
+ − {
+ − case KCD_MNUUP:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if(idle_data.editor)
+ − {
+ − TRACE_EVENT("CB menu up");
+ − ATB_edit_MoveCursor(idle_data.editor,ctrlUp, TRUE);
+ − }
+ − #else /* NEW_EDITOR */
+ − if(idle_data.edt)
+ − {
+ − TRACE_EVENT("CB menu up");
+ − edtChar(idle_data.edt,ecUp);
+ − }
+ − #endif /*NEW_EDITOR */
+ − //Fix for 19656
+ − #ifdef NEW_EDITOR
+ − else if(idle_data.editor_sat)
+ − {
+ − TRACE_EVENT("sat menu up");
+ − ATB_edit_MoveCursor(idle_data.editor_sat,ctrlUp, TRUE);
+ − ATB_edit_Show(idle_data.editor_sat);
+ − idle_show_cb_editor_scrollbar(idle_data.editor_sat);
+ − }
+ − #else /* NEW_EDITOR */
+ − else if(idle_data.edt_sat)
+ − {
+ − TRACE_EVENT("CB menu up");
+ − edtChar(idle_data.edt,ecUp);
+ − }
+ − #endif /*NEW_EDITOR */
+ − else
+ − {
+ − /*
+ − Indicate that the volume settings menu has been invoked from the
+ − incoming call screen.
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − #ifdef FF_MIDI_RINGER
+ − IdleScreenVolumeTimer();
+ − #endif
+ − setSoundsReason(SettingVolume);
+ − idle_data.info_win=bookMenuStart(idle_data.win, ringerVolumeSetting(), SettingVolume);
+ − }
+ − break;
+ −
+ − case KCD_MNUDOWN:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if(idle_data.editor)
+ − {
+ − TRACE_EVENT("CB menu down");
+ − ATB_edit_MoveCursor(idle_data.editor,ctrlDown, TRUE);
+ − }
+ − #else /* NEW_EDITOR */
+ − if(idle_data.edt)
+ − {
+ − TRACE_EVENT("CB menu down");
+ − edtChar(idle_data.edt,ecDown);
+ − }
+ − #endif /*NEW_EDITOR */
+ − //Fix for 19656
+ − #ifdef NEW_EDITOR
+ − else if(idle_data.editor_sat)
+ − {
+ − TRACE_EVENT("sat menu up");
+ − ATB_edit_MoveCursor(idle_data.editor_sat,ctrlDown, TRUE);
+ − ATB_edit_Show(idle_data.editor_sat);
+ − idle_show_cb_editor_scrollbar(idle_data.editor_sat);
+ − }
+ − #else /* NEW_EDITOR */
+ − else if(idle_data.edt_sat)
+ − {
+ − TRACE_EVENT("CB menu up");
+ − edtChar(idle_data.edt,ecUp);
+ − }
+ − #endif /*NEW_EDITOR */
+ − else
+ − {
+ − /*
+ − Indicate that the volume settings menu has been invoked from the
+ − incoming call screen.
+ − */
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − #ifdef FF_MIDI_RINGER
+ − IdleScreenVolumeTimer();
+ − #endif
+ − setSoundsReason(SettingVolume);
+ − idle_data.info_win=bookMenuStart(idle_data.win, ringerVolumeSetting(), SettingVolume);
+ − }
+ − break;
+ − // break; // RAVI
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT: /* main menu */
+ − /* Stop Playing Audio on Key press - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − if (idle_data.new_sms == TRUE)
+ − {
+ − /*Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /*Terminate ringing */
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #else
+ − currentRinger = getcurrentSMSTone();
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ −
+ − vsi_t_sleep(0,10); /* Small Delay */
+ − #endif
+ − }
+ − #else
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /* Terminate ringing */
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #endif
+ − #endif
+ − /* END RAVI - 23-12-2005 */
+ −
+ −
+ − bookPhonebookStart(idle_data.win,PhbkNormal);
+ − break;
+ − case KCD_CALL:
+ − bookPhonebookStart(idle_data.win,PhbkRedialListNormal);
+ − break;
+ − case KCD_RIGHT: /* contacts (ADN) */
+ − /* SPR#1449 - SH - Remove, as terminates GPRS connection.
+ − * Seems to be unnecessary. */
+ − /*cm_force_disconnect();
+ − /* terminate the ringing */
+ − /* audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − */
+ − /* Stop playing audio on key press - RAVI - 23-12-2005 */
+ − #ifdef NEPTUNE_BOARD
+ − if (idle_data.new_sms == TRUE)
+ − {
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /* Terminate ringing */
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #else
+ − currentRinger = getcurrentSMSTone();
+ − #ifdef FF_MMI_RINGTONE /*Stop MSL */
+ − audio_StopSoundbyID( AUDIO_BUZZER, SMSTONE_SELECT);
+ − #else
+ − audio_StopSoundbyID( AUDIO_BUZZER, currentRinger );
+ − #endif
+ −
+ − vsi_t_sleep(0,10); /* Small delay */
+ − #endif
+ − }
+ − #else
+ − /* Apr 05, 2005 REF: ENH 29994 xdeepadh */
+ − /* Terminate ringing */
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #endif
+ − #endif
+ − /* END RAVI - 23-12-2005 */
+ − bookPhonebookStart(idle_data.win,PhbkMainMenu);
+ − break;
+ − case KCD_HUP:
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //Terminate ringing
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_stop(sounds_midi_ringer_stop_cb);
+ − #endif
+ −
+ − /*
+ − ** NDH : 15/05/2003 : If the Idle editor is being displayed the only way to
+ − ** remove it is by pressing the Hangup Key, if it is active, do not set
+ − ** "Clean Screen" so that the previous "Missed Calls" etc will be displayed
+ − */
+ − if (!idle_data.editor)
+ − {
+ − //for clean the DISPLAY ZONE 3
+ − //information like "missed calls" and "receive messages"
+ − //disappear if the user press the HUP key
+ − idle_data.clean_screen = TRUE;
+ − }
+ −
+ −
+ − /* delete the message buffer plus the editor */
+ − statusCBCH(FALSE);
+ − windowsUpdate();
+ − break;
+ −
+ − // sbh - power key pressed in idle screen, we can shut down
+ − case KCD_POWER:
+ − HUPKeyOrigin = 1;
+ − break;
+ −
+ − case KCD_0:
+ − case KCD_1:
+ − case KCD_2:
+ − case KCD_3:
+ − case KCD_4:
+ − case KCD_5:
+ − case KCD_6:
+ − case KCD_7:
+ − case KCD_8:
+ − case KCD_9:
+ − case KCD_STAR:
+ − case KCD_HASH:
+ − memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf));
+ − idle_data.edt_buf[0]=editControls[k->code];
+ − idle_dialling_start(idle_data.win,NULL);
+ − break;
+ −
+ − default:
+ − break;
+ − }
+ − //Jun 24, 2005 MMI-FIX-30973 x0018858
+ − //Added code to handle the display of homezone/cityzone tag.
+ − //Begin 30973
+ − //Check to see if there are any new sms/ missed calls and confirm that the screen is clean.
+ − if ( ((smsidle_get_unread_sms_available() == 0)
+ − && ( idle_data.new_sms <= 0) && ( idle_data.missedCalls == 0)) || (idle_data.clean_screen))
+ − {
+ − if (tag_zone != NULL)
+ − {
+ −
+ − addCBCH((char*)tag_zone, IdleNewCBImmediateMessage);
+ − winShow(idle_data.win);
+ −
+ − }
+ − }
+ − //End 30973
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_kbd_long_cb
+ −
+ − $Description: Creation of an instance for the Idle dialog.
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static int idle_kbd_long_cb(MfwEvt e, MfwKbd *k)
+ − {
+ −
+ − TRACE_FUNCTION ("idle_kbd_long_cb");
+ −
+ − if ((e & KEY_RIGHT) && (e & KEY_LONG) && (idle_data.right_key_pressed == TRUE))
+ − {
+ − }
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_get_window
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − MfwHnd idle_get_window (void)
+ − {
+ − return idle_data.win;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_set_starting_up
+ −
+ − $Description: Sets a flag that indicates to Idle that the phone is starting up
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − void idle_set_starting_up (UBYTE set)
+ − {
+ − idle_data.starting_up = set;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idleIsFocussed
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − int idleIsFocussed(void)
+ − {
+ −
+ − if (winIsFocussed(idle_data.win))
+ − {
+ − TRACE_EVENT("idleIsFocussed");
+ − return 1;
+ − }
+ − else
+ − return 0;
+ −
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: addMissedCall
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − void addMissedCall(void)
+ − {
+ − idle_data.missedCalls++;
+ −
+ − // show the info about missed calls on the idle screen
+ − idle_data.clean_screen = FALSE;
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: class0_editor_cb Added for issue 2512
+ −
+ − $Description: CAllback for the class 0 editor. frees memory
+ −
+ − $Returns: none
+ −
+ − $Arguments: window(cast to string pointer), id, reason
+ −
+ − *******************************************************************************/
+ − void class0_editor_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
+ − { U8* message_buffer;
+ − /*cast the window pointer to string buffer*/
+ − message_buffer = (U8*)win;
+ − /*free the memory*/
+ − FREE_MEMORY(message_buffer, MAX_EDITOR_LEN);
+ − message_buffer = NULL;
+ − /*redraw the windows*/
+ − windowsUpdate();
+ −
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: addCBCH
+ −
+ − $Description: this indicates the incoming cell-info cellbroadcast
+ − or incoming sms class 0 message
+ − The Status tells about to show or not on the Idle screen
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void addCBCH(char* cbch_string, UBYTE type)
+ − {
+ − /*SPR 2512*/
+ − #ifdef NEW_EDITOR
+ − T_AUI_EDITOR_DATA editor_data;
+ − #else /* NEW_EDITOR */
+ − T_EDITOR_DATA editor_data;
+ − #endif /* NEW_EDITOR */
+ − /*SPR 2512, end*/
+ − switch(type)
+ − {
+ − case IdleNewCBImmediateMessage:
+ − if(cbch_string NEQ NULL)
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if (!idle_data.editor)
+ − {
+ − idle_data.editor = ATB_edit_Create (&idle_data.editor_attr2,0);
+ − }
+ − #else /* NEW_EDITOR */
+ − if (!idle_data.edt)
+ − {
+ − idle_data.edt = edtCreate (idle_data.win,&idle_data.edt_attr2,0,0);
+ − }
+ − #endif /* NEW_EDITOR */
+ − memset(idle_data.incoming_cb_msg, '\0',MAX_CBMSG_LEN);
+ − strcpy((char *)idle_data.incoming_cb_msg, (char *)cbch_string);
+ −
+ − //Jun 24, 2005 MMI-FIX-30973 x0018858
+ − // Copy the tag string on to a global variable for display later.
+ − //Begin 30973
+ − memset(tag_zone, '\0',MAX_CBMSG_LEN);
+ − strcpy((char *)tag_zone, (char *)idle_data.incoming_cb_msg);
+ − tag_zone[MAX_CBMSG_LEN -1]= '\0';
+ − //End 30973
+ − //this is centralize the cb message if it's a short one
+ − //12 cos CB messages have some space character after the string
+ − //it is just a estimate
+ − /* SPR#1428 - SH - New Editor changes. Use centralise
+ − * editor feature. */
+ − #ifdef NEW_EDITOR
+ − if ((strlen(cbch_string)) < 12)
+ − idle_data.editor_attr2.startFormat.attr |= DS_ALIGN_CENTRE;
+ − ATB_edit_Init(idle_data.editor);
+ − #else /* NEW_EDITOR */
+ − if ((strlen(cbch_string)) < 12)
+ − idle_data.edt_attr2.win.px = WIN_CENTRALIZE_ORG_X;
+ − else
+ − idle_data.edt_attr2.win.px = WIN_DIALLING_ORG_X;
+ − #endif /*NEW_EDITOR*/
+ − }
+ − else
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if (idle_data.editor)
+ − {
+ − ATB_edit_Destroy(idle_data.editor);
+ − }
+ −
+ − idle_data.editor_attr2.startFormat.attr = 0;
+ −
+ − idle_data.editor = 0;
+ − #else /* NEW_EDITOR */
+ − if (idle_data.edt)
+ − {
+ − edtDelete(idle_data.edt);
+ − }
+ −
+ − //set the centralize for the cb message to default
+ − idle_data.edt_attr2.win.px = WIN_DIALLING_ORG_X;
+ −
+ − idle_data.edt = 0;
+ − #endif /*NEW_EDITOR */
+ − memset(idle_data.incoming_cb_msg, '\0',MAX_CBMSG_LEN);
+ − }
+ − break;
+ −
+ − case IdleNewCBNormalMessage:
+ −
+ − //set back to default
+ − idle_data.clean_screen = FALSE;
+ −
+ − idle_data.new_cbch = TRUE;
+ − break;
+ −
+ − /*NM p019*/
+ − case IdleNewSmsMessage:
+ − /*SPR 2512, show class 0 message as a pop-up*/
+ − #ifdef NEW_EDITOR
+ − AUI_edit_SetDefault(&editor_data);
+ − AUI_edit_SetDisplay(&editor_data, ZONE_FULLSOFTKEYS, COLOUR_EDITOR_XX, EDITOR_FONT);
+ − AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE *)cbch_string, strlen(cbch_string));
+ − AUI_edit_SetMode(&editor_data, ED_MODE_READONLY, ED_CURSOR_NONE);
+ − AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtNull, TxtNull, NULL);
+ − AUI_edit_SetEvents(&editor_data, 0, TRUE, FOREVER, (T_AUI_EDIT_CB)class0_editor_cb);
+ − /*this casting of the message buffer allows it to be passed back via the editor callback function
+ − so we can free the memory when it's no longer needed. Yes, I know it's dodgy.*/
+ − AUI_edit_Start((T_MFW_HND)cbch_string, &editor_data);
+ −
+ − #else
+ − editor_data.editor_attr.win.px = 0;
+ − editor_data.editor_attr.win.py = 0;
+ − editor_data.editor_attr.win.sx =
+ − SCREEN_SIZE_X-editor_data.editor_attr.win.px;
+ − editor_data.editor_attr.win.sy = SCREEN_SIZE_Y-2*Mmi_layout_first_line();
+ − editor_data.editor_attr.edtCol = COLOUR_EDITOR_XX,
+ − editor_data.editor_attr.font = 0;
+ − editor_data.editor_attr.mode = edtCurNone;
+ − editor_data.editor_attr.controls = 0;
+ − editor_data.hide = FALSE;
+ −
+ − editor_data.editor_attr.text = (char*)cbch_string;
+ −
+ − editor_data.editor_attr.size = strlen(cbch_string);
+ − editor_data.LeftSoftKey = TxtSoftOK;
+ − editor_data.RightSoftKey = TxtNull;
+ − editor_data.AlternateLeftSoftKey = TxtNull;
+ − editor_data.TextString = '\0';
+ − editor_data.TextId = TxtNull;
+ − editor_data.Identifier = NULL;
+ − editor_data.mode = READ_ONLY_MODE;
+ − editor_data.timeout = FOREVER;
+ − editor_data.min_enter = 1;
+ − editor_data.Callback = (T_EDIT_CB)NULL;
+ − editor_data.destroyEditor = TRUE;
+ − editor_start(idle_get_window(), &editor_data);
+ −
+ − #endif
+ − break;
+ −
+ − }
+ −
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: statusCBCH
+ −
+ − $Description: if True -> keep it on the idle screen
+ − if FALSE -> remove the message (CB or SMS)
+ − and destroy the editor
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void statusCBCH(UBYTE status)
+ − {
+ − if(status)
+ − {
+ −
+ − windowsUpdate();
+ −
+ − }
+ − else
+ − {
+ −
+ − //Dont show the CB on the Idle screen
+ −
+ − idle_data.new_cbch = FALSE;
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if (idle_data.editor)
+ − ATB_edit_Destroy(idle_data.editor);
+ − idle_data.editor = 0;
+ −
+ − //set the centralize for the cb message to default
+ − idle_data.editor_attr2.startFormat.attr = 0;
+ −
+ − #else /* NEW_EDITOR */
+ − if (idle_data.edt)
+ − edtDelete(idle_data.edt);
+ − idle_data.edt = 0;
+ −
+ − //set the centralize for the cb message to default
+ − idle_data.edt_attr2.win.px = WIN_DIALLING_ORG_X;
+ − #endif /*NEW_EDITOR */
+ − }
+ −
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: addSatMessage
+ −
+ − $Description: Store a SAT message to display on the idle screen.
+ − SPR759 - SH.
+ −
+ − $Returns:
+ −
+ − $Arguments: satMessage - the text of the message
+ −
+ − *******************************************************************************/
+ −
+ − // 09-Dec-2005, Shashi Shekar B.S., a0876501, START
+ − #ifdef FF_MMI_SAT_ICON
+ − void addSatMessage(char *satMessage, UBYTE width, UBYTE height,
+ − char *dst, UBYTE selfExplanatory, T_DISPLAY_TYPE display_type)
+ − #else
+ − void addSatMessage(char *satMessage)
+ − #endif
+ − {
+ − // 09-Dec-2005, Shashi Shekar B.S., a0876501, START
+ − #ifdef FF_MMI_SAT_ICON
+ − USHORT icon_length;
+ − #endif
+ −
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − if(satMessage NEQ NULL)
+ − {
+ − if(!idle_data.editor_sat)
+ − {
+ − idle_data.editor_sat = ATB_edit_Create(&idle_data.editor_attr_sat,0); /* Create the editor to hold it */
+ − }
+ −
+ − // 09-Dec-2005, Shashi Shekar B.S., a0876501, START
+ − #ifdef FF_MMI_SAT_ICON
+ − if(selfExplanatory == FALSE)
+ − {
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − strcpy((char *)idle_data.incoming_sat_msg, (char *)satMessage);
+ −
+ − /* Centralize sat message if below 12 characters (so it doesn't look odd on the screen) */
+ −
+ − if ((strlen(satMessage)) < 12)
+ − idle_data.editor_attr_sat.startFormat.attr |= DS_ALIGN_CENTRE;
+ − }
+ − else
+ − {
+ − /* Icon is self-explanatory. No need to display text for this case.
+ − Fill the idle text buffer with NULL*/
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − }
+ −
+ − /* Copy the data to the Editor title field & ATB editor will
+ − take care of displaying the Icon */
+ − if(dst != NULL)
+ − {
+ − idle_data.editor_sat->attr->TitleIcon.width = width;
+ − idle_data.editor_sat->attr->TitleIcon.height = height;
+ −
+ − icon_length = width * height;
+ −
+ − idle_data.editor_sat->attr->TitleIcon.data = (char *)ALLOC_MEMORY (icon_length);
+ −
+ − memcpy(idle_data.editor_sat->attr->TitleIcon.data, dst, icon_length);
+ − idle_data.editor_sat->attr->TitleIcon.display_type = display_type; //x0035544 02-Feb-2006 DR:61468
+ − idle_data.editor_sat->attr->TitleIcon.isTitle = FALSE;
+ −
+ − }
+ − #else
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − strcpy((char *)idle_data.incoming_sat_msg, (char *)satMessage);
+ −
+ − /* Centralize sat message if below 12 characters (so it doesn't look odd on the screen) */
+ −
+ − if ((strlen(satMessage)) < 12)
+ − idle_data.editor_attr_sat.startFormat.attr |= DS_ALIGN_CENTRE;
+ −
+ − #endif
+ −
+ − ATB_edit_Init(idle_data.editor_sat);
+ −
+ − }
+ − else /* If a null string is passed, get rid of the message */
+ − {
+ − if (idle_data.editor_sat)
+ − {
+ − // 02-Feb-2006, Sudha.V., x0035544
+ − #ifdef FF_MMI_SAT_ICON
+ − /* Check if a Idle mode text malloc was done for icon support, if Yes, free it*/
+ − if (idle_data.editor_sat->attr->TitleIcon.data != NULL)
+ − {
+ − FREE_MEMORY((U8 *)idle_data.editor_sat->attr->TitleIcon.data, idle_data.editor_sat->attr->TitleIcon.width *
+ − idle_data.editor_sat->attr->TitleIcon.height);
+ − idle_data.editor_sat->attr->TitleIcon.data = NULL;
+ − }
+ − #endif
+ − ATB_edit_Destroy(idle_data.editor_sat);
+ − }
+ −
+ − //set the centralize for the cb message to default
+ − idle_data.editor_attr_sat.startFormat.attr = 0;
+ −
+ − idle_data.editor_sat = NULL;
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − }
+ − #else /* NEW_EDITOR */
+ − if(satMessage NEQ NULL)
+ − {
+ − if(!idle_data.edt_sat)
+ − {
+ − idle_data.edt_sat = edtCreate(idle_data.win,&idle_data.edt_attr_sat,0,0); // Create the editor to hold it
+ − }
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − strcpy((char *)idle_data.incoming_sat_msg, (char *)satMessage);
+ −
+ − //Centralize sat message if below 12 characters (so it doesn't look odd on the screen)
+ −
+ − if ((strlen(satMessage)) < 12)
+ − idle_data.edt_attr_sat.win.px = (SCREEN_SIZE_X-strlen(idle_data.edt_attr_sat.text)*6)/2;
+ − else
+ − idle_data.edt_attr_sat.win.px = WIN_DIALLING_ORG_X;
+ − }
+ − else // If a null string is passed, get rid of the message
+ − {
+ − if (idle_data.edt_sat)
+ − {
+ − edtDelete(idle_data.edt_sat);
+ − }
+ −
+ − //set the centralize for the cb message to default
+ − idle_data.edt_attr_sat.win.px = WIN_DIALLING_ORG_X;
+ −
+ − idle_data.edt_sat = NULL;
+ − memset(idle_data.incoming_sat_msg, '\0',MAX_CBMSG_LEN);
+ − }
+ − #endif /* NEW_EDITOR */
+ − return;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idleDialBuffer
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idleDialBuffer(char* dialBuffer)
+ − {
+ − memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf));
+ − strncpy((char*)idle_data.edt_buf,(char*)dialBuffer,sizeof(idle_data.edt_buf)-1);
+ − idle_dialling_start(idle_data.win,NULL);
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: windowsUpdate
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void windowsUpdate(void)
+ − {
+ − TRACE_FUNCTION("Idle_update()");
+ − winShow(idle_data.win);
+ −
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_create
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − T_MFW_HND idle_dialling_create (T_MFW_HND parent_window)
+ − {
+ − T_MFW_WIN * win;
+ −
+ − /*
+ − * This window is dynamic, for that reason the associated data are allocated in the mfw heap
+ − */
+ −
+ − T_idle_dialling * data = (T_idle_dialling *)ALLOC_MEMORY (sizeof (T_idle_dialling));
+ −
+ − TRACE_FUNCTION ("idle_dialling_create");
+ −
+ − /*
+ − * Create window handler
+ − */
+ −
+ − data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)idle_dialling_win_cb);
+ −
+ − if (data->win EQ 0)
+ − return 0;
+ −
+ − /*
+ − * These assignments are necessary to attach the data to the window, and to handle the mmi event communication.
+ − */
+ −
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)idle_dialling;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->win)->data;
+ − win->user = (void *) data;
+ −
+ − /*
+ − * Create any other handler
+ − */
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − data->editor = ATB_edit_Create(&idle_data.editor_attr, 0);
+ − #else /* NEW_EDITOR */
+ − data->edt = edtCreate (data->win,&idle_data.edt_attr,0,0);
+ − #endif /* NEW_EDITOR */
+ − data->kbd = kbd_create (data->win,KEY_ALL,(T_MFW_CB)idle_dialling_kbd_cb);
+ − data->kbd_long = kbd_create (data->win,KEY_ALL|KEY_LONG,(T_MFW_CB)idle_dialling_kbd_long_cb);
+ −
+ −
+ − //winShow(data->win);
+ − /*
+ − * return window handle
+ − */
+ − return data->win;
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_destroy
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − void idle_dialling_destroy (T_MFW_HND own_window)
+ − {
+ − T_MFW_WIN * win;
+ − T_idle_dialling * data;
+ −
+ − TRACE_FUNCTION("idle_dialling_destroy");
+ −
+ − /*SPR 2500*/
+ − win = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_idle_dialling *)win->user;
+ −
+ − #ifdef NEPTUNE_BOARD
+ − memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf)); /* OMAPS00033660 */
+ − #endif
+ −
+ − if ((own_window) &&
+ − (win) &&
+ − (data))
+ − {
+ −
+ − /*
+ − * Exit Keyboard Handler
+ − */
+ − /*NM, 26.3.02*/
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Destroy(data->editor);
+ − #else/* NEW_EDITOR */
+ − edt_delete(data->edt);
+ − #endif /* NEW_EDITOR */
+ − kbd_delete(data->kbd);
+ − kbd_delete(data->kbd_long);
+ − /*
+ − * Delete WIN Handler
+ − */
+ − win_delete (data->win);
+ −
+ − /*
+ − * In this case the data attached to window must be also deleted.
+ − */
+ − FREE_MEMORY ((void *)data, sizeof (T_idle_dialling));
+ − }
+ − else
+ − {/*SPR2500*/
+ − TRACE_ERROR("idle_dialling_destory : Invalid pointer");
+ − }
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_start
+ −
+ − $Description: This function just creates and inits the new dialog
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − T_MFW_HND idle_dialling_start (T_MFW_HND win_parent,char *character)
+ − {
+ −
+ −
+ − T_MFW_HND win = idle_dialling_create (win_parent);
+ −
+ − TRACE_FUNCTION("idle_dialling_start");
+ −
+ − if (win NEQ NULL)
+ − {
+ − SEND_EVENT(win,IDLE_DIALLING_INIT,0,(char*)character);
+ − }
+ − return win;
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − void idle_dialling (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
+ − T_idle_dialling * data = (T_idle_dialling *)win_data->user;
+ −
+ − TRACE_FUNCTION ("idle_dialling()");
+ − /*
+ − * In this case the communication is very simple (only one intern event)
+ − */
+ −
+ − //GW Use macros for screen size
+ − switch (event)
+ − {
+ − case IDLE_DIALLING_INIT:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − AUI_edit_SetAttr(&idle_data.editor_attr, WIN_DIALLING, COLOUR_EDITOR_XX, EDITOR_FONT, 0, ED_CURSOR_UNDERLINE, ATB_DCS_ASCII, (UBYTE*)idle_data.edt_buf,EDITOR_SIZE);
+ −
+ − ATB_edit_Init(data->editor);
+ −
+ − ATB_edit_Unhide(data->editor);
+ − ATB_edit_Char(data->editor, ctrlBottom, TRUE);
+ − #else /* NEW_EDITOR */
+ − bookSetEditAttributes(WIN_DIALLING,COLOUR_EDITOR_XX,0,edtCurBar1,0,(char*)idle_data.edt_buf,EDITOR_SIZE,&idle_data.edt_attr);
+ −
+ − /* NM 13.03 fast-edit */
+ − editActivate (data->edt,FALSE);
+ −
+ − edtUnhide(data->edt);
+ − edtChar(data->edt,ecBottom);
+ − #endif /* NEW_EDITOR */
+ − winShow(data->win);
+ − break;
+ − default:
+ − return;
+ − }
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_win_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static int idle_dialling_win_cb (MfwEvt evt, MfwWin *win)
+ − {
+ − T_idle_dialling * data = (T_idle_dialling *)win->user;
+ −
+ − TRACE_FUNCTION ("idle_dialling_win_cb()");
+ − switch (evt)
+ − {
+ − case MfwWinVisible:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − /* If update is trivial, don't update what's underneath */
+ − if (data->editor->update!=ED_UPDATE_TRIVIAL)
+ − {
+ − idle_draw_main_idle();
+ − displaySoftKeys(TxtNames,TxtDelete);
+ − }
+ − ATB_edit_Show(data->editor);
+ −
+ − data->editor->update = ED_UPDATE_DEFAULT;
+ − #else /* NEW_EDITOR */
+ − idle_draw_main_idle();
+ − edtShow(data->edt);
+ − displaySoftKeys(TxtNames,TxtDelete);
+ − #endif /* NEW_EDITOR */
+ − break;
+ − default:
+ − return 0;
+ − }
+ −
+ − return 1;
+ − }
+ −
+ − #ifdef MMI_EM_ENABLED
+ − /*******************************************************************************
+ −
+ − $Function: screen_capture_dialog_cb
+ −
+ − $Description: Call back for the screen capture key assignment dialog
+ − xrashmic 22 Aug, 2004 MMI-SPR-32798
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static void screen_capture_dialog_cb( T_MFW_HND win, USHORT Identifier,UBYTE reason)
+ − {
+ − switch(reason)
+ − {
+ − case INFO_KCD_LEFT:
+ − screenCaptureKey=KCD_LEFT;
+ − break;
+ − case INFO_KCD_RIGHT:
+ − screenCaptureKey=KCD_RIGHT;
+ − break;
+ − case INFO_KCD_HUP:
+ − screenCaptureKey=KCD_HUP;
+ − break;
+ − case INFO_KCD_UP:
+ − dialog_info_destroy (screen_capture_win);
+ − screenCaptureKey=KCD_MNUUP;
+ − break;
+ − case INFO_KCD_DOWN:
+ − dialog_info_destroy (screen_capture_win);
+ − screenCaptureKey=KCD_MNUDOWN;
+ − break;
+ − case INFO_KCD_OFFHOOK:
+ − screenCaptureKey=KCD_CALL;
+ − break;
+ − case INFO_KCD_ALL:
+ − screenCaptureKey=Identifier;
+ − break;
+ − default:
+ − screenCaptureKey=KCD_NONE;
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: screen_capture_dialog
+ −
+ − $Description: Dialog to set a key for screen capture
+ − xrashmic 22 Aug, 2004 MMI-SPR-32798
+ −
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − void screen_capture_dialog(void)
+ − {
+ − T_DISPLAY_DATA display_info;
+ − T_MFW_HND parent_win = mfwParent(mfw_header());
+ −
+ − dlg_initDisplayData_TextId( &display_info, TxtNull, TxtNull, TxtNull, TxtNull, COLOUR_WAP_POPUP);
+ − display_info.TextString="Press a key";
+ − display_info.TextString2="For screen capture";
+ − dlg_initDisplayData_events( &display_info,(T_VOID_FUNC)screen_capture_dialog_cb, FOREVER,KEY_ALL );
+ − display_info.Identifier = 0;
+ − screen_capture_win=info_dialog(parent_win, &display_info);
+ − dspl_Enable(0);
+ − win_show(screen_capture_win);
+ − dspl_Enable(1);
+ − }
+ − #endif
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_kbd_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static int idle_dialling_kbd_cb (MfwEvt e, MfwKbd *k)
+ − {
+ − /*
+ − * The following lines describe the common method to extract the data from the window. This mfw_parent(mfw_header())
+ − * construction captures the current mfw handled window.
+ − */
+ − T_MFW_HND win = mfw_parent (mfw_header());
+ − T_MFW_WIN *win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_dialling *data = (T_idle_dialling *)win_data->user;
+ − T_MFW_SS_RETURN ssRes;
+ − // T_MFW_PHB_ENTRY p_pEntry; // RAVI
+ − tMmiPhbData *current = (tMmiPhbData *)ALLOC_MEMORY (sizeof (tMmiPhbData ));
+ − U8 finishedHere = FALSE; /* SH- used to skip out part of function */
+ − int position = 0;
+ − char edt_buf_prov[EDITOR_SIZE];
+ − /* try to establish if we have information in the phone book
+ − */
+ −
+ − TRACE_FUNCTION ("idle_dialling_kbd_cb()");
+ −
+ − /* SPR#1428 - SH - New Editor changes - By default, set this flag
+ − * so that only editor portion of idle screen is updated when a key is pressed. */
+ − #ifdef NEW_EDITOR
+ − data->editor->update = ED_UPDATE_TRIVIAL;
+ − #endif
+ −
+ − switch (k->code)
+ − {
+ − case KCD_MNURIGHT:
+ − case KCD_MNUUP:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_MoveCursor(data->editor, ctrlRight, TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt,ecRight);
+ − #endif /* NEW_EDITOR */
+ − break;
+ −
+ − case KCD_MNULEFT:
+ − case KCD_MNUDOWN:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_MoveCursor(data->editor, ctrlLeft, TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt,ecLeft);
+ − #endif /* NEW_EDITOR */
+ − break;
+ −
+ − case KCD_CALL:
+ − #ifdef JVJ_USSD_TEST
+ − {
+ − T_MFW_SS_USSD prov_ussd;
+ −
+ − prov_ussd.len = strlen((char*)idle_data.edt_buf);
+ − memcpy(prov_ussd.ussd,(char*)idle_data.edt_buf,prov_ussd.len);
+ − prov_ussd.dcs = MFW_DCS_7bits;
+ − ss_send_ussd(&prov_ussd);
+ − }
+ − #else
+ − callNumber((UBYTE*)idle_data.edt_buf);
+ − #endif
+ − idle_dialling_destroy(data->win);
+ − break;
+ −
+ − case KCD_LEFT: /* call establishment */
+ − /* Ensure next update is a full update */
+ − #ifdef NEW_EDITOR
+ − data->editor->update = ED_UPDATE_DEFAULT;
+ − #endif
+ − if (bookPhoneBookLoading()==BOOK_SUCCESS)
+ − {
+ − T_MFW_HND phbk_win;
+ − phbk_win = bookPhonebookStart(idle_data.win,PhbkNameEnterIdle);
+ − SEND_EVENT( phbk_win, PHBK_SEND_NUMBER, 0,(char*)idle_data.edt_buf );
+ − }
+ − break;
+ −
+ − case KCD_RIGHT:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_DeleteLeft(data->editor, TRUE); /* SPR#2342 - SH */
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt,ecBack);
+ − #endif /* NEW_EDITOR */
+ −
+ − if (strlen(idle_data.edt_buf) <= 0)
+ − idle_dialling_destroy(data->win);
+ − break;
+ −
+ − /* SPR#2342 - SH - HUP detroys editor */
+ − case KCD_HUP:
+ − idle_dialling_destroy(data->win);
+ −
+ − break;
+ −
+ − case KCD_0:
+ − case KCD_1:
+ − case KCD_2:
+ − case KCD_3:
+ − case KCD_4:
+ − case KCD_5:
+ − case KCD_6:
+ − case KCD_7:
+ − case KCD_8:
+ − case KCD_9:
+ − case KCD_STAR:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_AsciiChar(data->editor, editControls[k->code], TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt, editControls[k->code]);
+ − #endif /* NEW_EDITOR */
+ − break;
+ −
+ − case KCD_HASH:
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_AsciiChar(data->editor, editControls[k->code], TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt, editControls[k->code]);
+ − #endif /* NEW_EDITOR */
+ − memset(edt_buf_prov,'\0',sizeof(edt_buf_prov));
+ − strcpy((char*)edt_buf_prov,(char*)idle_data.edt_buf);
+ −
+ − if(strcmp((char*)idle_data.edt_buf, "###520#") == 0)
+ − {
+ − ShowVersion(idle_data.win);
+ − idle_dialling_destroy(data->win);
+ − finishedHere = TRUE; /*sbh*/
+ −
+ − }
+ − #ifdef MMI_EM_ENABLED
+ − //xrashmic 22 Aug, 2004 MMI-SPR-32798
+ − //Using a dialog to take the input from the user for key to be used for screen capture.
+ − else if(strcmp((char*)idle_data.edt_buf, "###1234#") == 0)
+ − {
+ − screen_capture_dialog();
+ − idle_dialling_destroy(data->win);
+ − }
+ − else
+ − { /*MC, SPR1209 check for engineering mode code*/
+ − if (strcmp((char*)idle_data.edt_buf, "*36446337464#") == 0)
+ − {
+ − TRACE_EVENT("Engineering mode string");
+ − /*create menu*/
+ − mmi_em_start_eng_mode_menus(idle_data.win);
+ − idle_dialling_destroy(data->win);
+ − finishedHere = TRUE;
+ − }
+ − #endif
+ − else
+ − {
+ − ssRes = ss_check_ss_string((UBYTE*)edt_buf_prov);
+ − switch (ssRes)
+ − {
+ − case MFW_SS_USSD:
+ − case MFW_SS_SIM_LOCK:
+ − case MFW_SS_REG_PW:
+ − case MFW_SS_CF:
+ − case MFW_SS_CB:
+ − case MFW_SS_CLIR:
+ − case MFW_SS_CLIP:
+ − case MFW_SS_COLR:
+ − case MFW_SS_COLP:
+ − case MFW_SS_WAIT:
+ − case MFW_SS_HOLD:
+ − case MFW_SS_CCBS:
+ − finishedHere = TRUE; /* Handled on # */
+ − break;
+ − case MFW_SS_SIM_REG_PW:
+ − case MFW_SS_SIM_UNBLCK_PIN:
+ − gsm_idle(0,(char *)idle_data.edt_buf);
+ − idle_dialling_destroy(data->win);
+ − finishedHere = TRUE; /* Handled on # */
+ − break;
+ − case MFW_SS_MMI:
+ − // May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg
+ − // guarding the code with the flag
+ − #ifndef FF_MMI_ATC_MIGRATION
+ − get_imei((char*)idle_data.imei);
+ − showIMEI(idle_data.win,(char*)idle_data.imei);
+ − #endif
+ − idle_dialling_destroy(data->win);
+ − finishedHere = TRUE; /* Handled on # */
+ − // May 02, 2005 REF : LOCOSTO-ENH-30818 - xpradipg
+ − // replaced the get_imei() with the mmi_imei_retrieve() - sAT_Dn()
+ − #ifdef FF_MMI_ATC_MIGRATION
+ − mmi_imei_retrieve();
+ − #endif
+ − break;
+ − /*MC, SPR 1111 handle language reset*/
+ − case MFW_SS_LANG_RESET:
+ − /*if language has been reset*/
+ − if (resources_reset_language((char*) idle_data.edt_buf) == TRUE)
+ − {
+ − bookShowInformation(idle_data.win,TxtDone,NULL,NULL);
+ − }
+ − else /*if current language English, don't show second Line in English*/
+ − {T_DISPLAY_DATA display_info;
+ −
+ − /*SPR 1619, use new info dialog configuration functions*/
+ − if (Mmi_getCurrentLanguage() == ENGLISH_LANGUAGE)
+ − dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, MmiRsrcGetText(TxtUnknownCode), NULL, COLOUR_POPUP);
+ − else
+ − dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtNull, MmiRsrcGetText(TxtUnknownCode), "Code Unknown", COLOUR_POPUP);
+ − dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)NULL, SIX_SECS, KEY_CLEAR|KEY_LEFT|KEY_RIGHT );
+ − /* Call Info Screen
+ − */
+ − info_dialog( idle_data.win, &display_info );
+ − }
+ − /*MC end*/
+ − idle_dialling_destroy(data->win);
+ − finishedHere = TRUE;
+ − break;
+ −
+ − case MFW_SS_DIAL:
+ − case MFW_SS_DIAL_IDX:
+ − case MFW_SS_DTMF:
+ − case MFW_SS_UNKNOWN:
+ − default:
+ − /* CQ16651 - NDH - Lines Deleted, Do not delete the entered character */
+ − break;
+ − }
+ − }
+ − #ifdef FF_EM_MODE
+ − }
+ − #endif
+ − /* SH - skip out this section if we recognised SS code */
+ −
+ − if (!finishedHere)
+ − {
+ − //nm 450
+ − // this functions looks for shortcut
+ − sscanf(idle_data.edt_buf, "%d", &position);
+ − current->missedCallsOffset = 0;
+ − current->index = position;
+ − current->selectedName = 0;
+ − current->KindOfSearch = SEARCH_BY_LOCATION;
+ − current->status.book = bookActiveBook(READ);
+ − bookGetCurrentStatus( &(current->status) );
+ −
+ − if((idle_data.edt_buf[0]!='*')&&(bookFindName( 1, current )== MFW_PHB_OK))
+ − { memset(idle_data.edt_buf,'\0',sizeof(idle_data.edt_buf));
+ −
+ − strncpy((char*)idle_data.edt_buf,(char*)current->entry[0].number,sizeof(idle_data.edt_buf)-1);
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Char(data->editor, ctrlBottom, TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt,ecBottom);
+ − #endif /* NEW_EDITOR */
+ − }
+ − }
+ − break;
+ − default:
+ − break;
+ − }
+ − FREE_MEMORY ((void *)current, sizeof (tMmiPhbData));
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_dialling_kbd_long_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − static int idle_dialling_kbd_long_cb (MfwEvt e, MfwKbd *k)
+ − {
+ − T_MFW_HND win = mfw_parent (mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_dialling * data = (T_idle_dialling *)win_data->user;
+ −
+ − TRACE_FUNCTION ("idle_dialling_kbd_long_cb");
+ −
+ − if (e & KEY_LONG)
+ − {
+ − /* SPR#1428 - SH - New Editor - Long right soft keypress clears buffer */
+ − #ifdef NEW_EDITOR
+ − if ((e & KEY_RIGHT) || (e & KEY_CLEAR))
+ − #else /* NEW_EDITOR */
+ − if (e & KEY_CLEAR)
+ − #endif /* NEW_EDITOR */
+ − {
+ − idle_dialling_destroy(data->win);
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − if (e & KEY_0)
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_DeleteLeft(data->editor, FALSE); /* SPR#2342 - SH */
+ − ATB_edit_AsciiChar(data->editor, '+', TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − edtChar(data->edt,ecBack);
+ − edtChar(data->edt,'+');
+ − #endif /* NEW_EDITOR */
+ −
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − if (e & KEY_1)
+ − {
+ − //long press on key 1 start to dial the voicemail
+ − M_callVoice(NULL, NULL);
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − /* MZ cq11414 support for Pause seperator for DTMF strings. */
+ − if(e & KEY_STAR)
+ − {
+ − #ifdef NEW_EDITOR
+ − ATB_edit_DeleteLeft(data->editor, FALSE);
+ −
+ − //Sep 2, 2004 REF: CRR 21370 xkundadu
+ − // Changed the long press of '*' to display 'w'.
+ −
+ − ATB_edit_AsciiChar(data->editor, 'w', TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − /* MZ cq11414 add Pause Character */
+ − MfwEdt *edit = ((MfwHdr*) data->edt)->data;
+ − if((edit->cp) > 0) && (edit->attr->text[edit->cp-1] == '*'))
+ − {
+ − edtChar(data->edt,ecBack);
+ − }
+ −
+ − //Sep 2, 2004 REF: CRR 21370 xkundadu
+ − //Changed the long press of '*' key to display 'w'.
+ − edtChar(data->edt,'w');
+ −
+ − #endif /* NEW_EDITOR */
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − if (e & KEY_HASH)
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_DeleteLeft(data->editor, FALSE); /* SPR#2342 - SH */
+ −
+ − //Sep 2, 2004 REF: CRR 21370 xkundadu
+ − // Changed the long press of '#' key to display 'p'.
+ − ATB_edit_AsciiChar(data->editor, 'p', TRUE);
+ − win_show(data->win);
+ − #else /* NEW_EDITOR */
+ − /* MZ cq11414 add Wait Character */
+ − MfwEdt *edit = ((MfwHdr*) data->edt)->data;
+ − if((edit->cp) > 0) && (edit->attr->text[edit->cp-1] == '#'))
+ − {
+ − edtChar(data->edt,ecBack);
+ − }
+ −
+ − //Sep 2, 2004 REF: CRR 21370 xkundadu
+ − // Changed the long press of '#' to display 'p'.
+ −
+ − edtChar(data->edt,'p');
+ −
+ − #endif /* NEW_EDITOR */
+ − return MFW_EVENT_CONSUMED;
+ − }
+ − }
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ −
+ −
+ −
+ −
+ −
+ −
+ −
+ −
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − KEYPAD LOCKED EVENT WINDOW. IMPLEMENTATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked_create
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − T_MFW_HND idle_key_pad_locked_create(MfwHnd parent_window){
+ −
+ − T_MFW_WIN * win;
+ − T_idle_key_pad_locked * data = (T_idle_key_pad_locked *)ALLOC_MEMORY (sizeof (T_idle_key_pad_locked));
+ −
+ − data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)idle_key_pad_locked_win_cb);
+ −
+ − if (data->win EQ 0)
+ − return 0;
+ −
+ − /*
+ − * Create window handler
+ − */
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)idle_key_pad_locked;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->win)->data;
+ − win->user = (void *) data;
+ − /*
+ − * Create any other handler
+ − */
+ −
+ −
+ −
+ − data->kbd = kbd_create (data->win,KEY_ALL,(T_MFW_CB)idle_key_pad_locked_kbd_cb);
+ − data->kbd_long = kbd_create (data->win,KEY_ALL|KEY_LONG,(T_MFW_CB)idle_key_pad_locked_kbd_long_cb);
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − AUI_edit_SetAttr(&idle_data.editor_attr, WIN_DIALLING, COLOUR_EDITOR_XX, EDITOR_FONT, 0, ED_CURSOR_UNDERLINE, ATB_DCS_ASCII, (UBYTE*)idle_data.edt_buf,EDITOR_SIZE);
+ − memset (idle_data.edt_buf,'\0',EDITOR_SIZE);
+ − data->editor = ATB_edit_Create(&idle_data.editor_attr,0);
+ − ATB_edit_Init(data->editor);
+ − #else /* NEW_EDITOR */
+ − data->edt = edtCreate(data->win,&idle_data.edt_attr,0,0);
+ − #endif /* NEW_EDITOR */
+ −
+ − data->win_info = 0;
+ −
+ − data->menuPressed = FALSE;
+ −
+ − /*
+ − * return window handle
+ − */
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ − showKeyPadLocked = showNothing;
+ − winShow(data->win);
+ − return data->win;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked_destroy
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idle_key_pad_locked_destroy (T_MFW_HND own_window)
+ − {
+ − T_MFW_WIN * win;
+ − T_idle_key_pad_locked * data;
+ −
+ − if (own_window)
+ − {
+ − win = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_idle_key_pad_locked *)win->user;
+ −
+ − if (data)
+ − {
+ − /*
+ − * Exit Keyboard Handler
+ − */
+ − /*
+ − * Delete WIN Handler
+ − */
+ − win_delete (data->win);
+ − }
+ − FREE_MEMORY ((void *)data, sizeof (T_idle_key_pad_locked));
+ − idle_data.klck_win = NULL;
+ − }
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idle_key_pad_locked (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
+ − T_idle_key_pad_locked * data = (T_idle_key_pad_locked *)win_data->user;
+ − U8* key_code;
+ − // UBYTE j; // RAVI
+ − // Nov 3, 2004 REF: CRR 25887 xkundadu
+ − //Description: Unable to make an emergency call.
+ − // Added this variable to check whether the entered digit is of length 2.
+ − BOOL bTwodigitECC = FALSE;
+ −
+ −
+ − TRACE_FUNCTION ("idle_key_pad_locked()");
+ −
+ − switch (event)
+ − {
+ − case IDLE_KEYPAD_LOCKED_UPDATE:
+ − key_code = (U8*)parameter;
+ − switch (*key_code)
+ − {
+ −
+ − case KCD_RIGHT:
+ − /* API - 10/10/02 - 1162 - Call the emergency Number if this is true
+ − */
+ − if (pin_idle_emerg_call == TRUE)
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Hide(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtHide(data->edt);
+ − #endif /* NEW_EDITOR */
+ − callNumber((UBYTE*)idle_data.edt_buf);
+ −
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ − memset(idle_data.edt_buf,'\0',EDITOR_SIZE); /* sbh */
+ − memset(data->TempkeyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − showKeyPadLocked = showNothing;
+ − pin_idle_emerg_call = FALSE;
+ − }
+ − else
+ − {
+ − data->menuPressed = TRUE;
+ − data->win_info = idle_information_start(win,2000,showPressMenuStar,(T_VOID_FUNC)idle_info_destroy_cb);
+ − }
+ − break;
+ − case KCD_STAR:
+ − if (data->menuPressed)
+ − {
+ − TRACE_EVENT ("dactivate the KEYpad");
+ − settingsKeyPadLockOff();
+ − data->menuPressed = FALSE;
+ − idle_key_pad_locked_destroy(win);
+ − return;
+ − }
+ − else
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Hide(data->editor);
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtHide(data->edt);
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ − memset(data->TempkeyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − memset(idle_data.edt_buf,'\0',EDITOR_SIZE);
+ − showKeyPadLocked = showNothing;
+ − data->win_info = idle_information_start(win,2000,showPressMenuStar,(T_VOID_FUNC)idle_info_destroy_cb);
+ − }
+ − break;
+ − // Jul 23,2004 CRR:20895 xrashmic - SASKEN
+ − // Description: The keypad should not be unlocked by SEND and *, it
+ − // should be unlocked only by Menu and *
+ − // Fix: SEND key is now handled the same way as rest of the number
+ − // keys. Keypad unlock can be done only through MENU and *.
+ − case KCD_CALL:
+ −
+ − case KCD_0:
+ − case KCD_1:
+ − case KCD_2:
+ − case KCD_8:
+ − case KCD_9:
+ − /* API - 10/10/02 - 1162 - Read the Idle KeyPadLock Buffer to see if the inputed valu
+ − is that of an emergency Number
+ − */
+ − data->menuPressed = FALSE;
+ − data->TempkeyPadLockBuf[0] = editControls[*key_code];
+ −
+ − strcat((char*)data->keyPadLockBuf, (char*)data->TempkeyPadLockBuf);
+ − TRACE_EVENT_P1("data->keyPadLockBuf: %s",(char*)data->keyPadLockBuf);
+ −
+ − if((strlen((char*)data->keyPadLockBuf) > 1) && (strlen((char*)data->keyPadLockBuf) < 4))
+ − {
+ − TRACE_EVENT("cm_check_emergency() TRACE IDLE 1");
+ −
+ − // Nov 3, 2004 REF: CRR 25887 xkundadu
+ − //Description: Unable to make an emergency call.
+ − //Fix: Changed the code to make the emergency call when the
+ − // screen is locked.
+ −
+ −
+ − // Check whether the buffer contains any emergency number or not.
+ − // If the number is ECC then allow the user to make emergency call.
+ −
+ − if ((cm_check_emergency((UBYTE*)data->keyPadLockBuf)==TRUE) ||
+ − (( strlen((char*)data->keyPadLockBuf) == ECC_LENGTH) &&
+ − (cm_check_emergency((UBYTE*)&data->keyPadLockBuf[1])==TRUE) &&
+ − (bTwodigitECC == TRUE))) // RAVI - Changed = to == in condition.
+ − {
+ − if(bTwodigitECC == TRUE)
+ − {
+ − // If the last digits form ECC, copy the digits to editor buffer.
+ − memcpy(idle_data.edt_buf, &data->keyPadLockBuf[1], KEYPADLOCK_BUF_SIZE-1);
+ − }
+ − else
+ − {
+ − strcpy((char*)idle_data.edt_buf,(char*)data->keyPadLockBuf);
+ − }
+ − showKeyPadLocked = showSOSCallKeyPadLocked;
+ − pin_idle_emerg_call = TRUE;
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − winUpdate((MfwWin*)mfwControl(win));
+ − }
+ − else
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Hide(data->editor);
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtHide(data->edt);
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ −
+ − // Nov 3, 2004 REF: CRR 25887 xkundadu
+ − //Description: Unable to make an emergency call.
+ − //Fix: Changed the code to make the emergency call when the
+ − // screen is locked.
+ − if(strlen((char *)data->keyPadLockBuf) >= 3)
+ − {
+ − //If the buffer length is greater than or equal to 3 ( i.e ECC_LENGTH)
+ − // remove the first character from the buffer. This is to check
+ − // whether the remaining characters are part of ECC.
+ − memcpy(&data->keyPadLockBuf[0], &data->keyPadLockBuf[1], KEYPADLOCK_BUF_SIZE-1);
+ − }
+ − memset(idle_data.edt_buf,'\0',EDITOR_SIZE);
+ − showKeyPadLocked = showNothing;
+ − pin_idle_emerg_call = FALSE;
+ − data->win_info = idle_information_start(win,2000,showPressMenuStar,(T_VOID_FUNC)idle_info_destroy_cb);
+ − winUpdate((MfwWin*)mfwControl(win));
+ − }
+ − }
+ − else
+ − {
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Hide(data->editor);
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtHide(data->edt);
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ − if(strlen((char *)data->keyPadLockBuf) >= 3)
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − memset(idle_data.edt_buf,'\0',EDITOR_SIZE);
+ − showKeyPadLocked = showNothing;
+ − data->win_info = idle_information_start(win,2000,showPressMenuStar,(T_VOID_FUNC)idle_info_destroy_cb);
+ − pin_idle_emerg_call = FALSE;
+ − winUpdate((MfwWin*)mfwControl(win));
+ − }
+ −
+ − break;
+ −
+ − // Sep 22, 2004 REF: CRR 23871 xkundadu
+ − // Description: Screen Locking: Unlocking screen is happening by other keys
+ − // Fix: handled the other key events except '*' not to unlock the keypad.
+ −
+ − case KCD_HASH:
+ − case KCD_MNUDOWN:
+ − case KCD_MNUUP:
+ − case KCD_MNULEFT:
+ − case KCD_MNURIGHT:
+ − case KCD_MNUSELECT:
+ − case KCD_LEFT:
+ − case KCD_3:
+ − case KCD_4:
+ − case KCD_5:
+ − case KCD_6:
+ − case KCD_7:
+ − case KCD_HUP:
+ − // If the user presses key, other than MENU/RSK set the
+ − // menuPressed key to FALSE. This is done to avoid the
+ − // unlocking by keys except MENU and '*'.
+ − data->menuPressed = FALSE;
+ −
+ −
+ − default:
+ − data->menuPressed = FALSE;
+ −
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − ATB_edit_Hide(data->editor);
+ − ATB_edit_Reset(data->editor);
+ − #else /* NEW_EDITOR */
+ − edtHide(data->edt);
+ − edtReset(data->edt);
+ − #endif /* NEW_EDITOR */
+ − memset(idle_data.edt_buf,'\0',EDITOR_SIZE);
+ − memset(data->TempkeyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − memset(data->keyPadLockBuf,'\0',KEYPADLOCK_BUF_SIZE);
+ − showKeyPadLocked = showNothing;
+ − pin_idle_emerg_call = FALSE;
+ − //winUpdate((MfwWin*)mfwControl(win));
+ − data->win_info = idle_information_start(win,2000,showPressMenuStar,(T_VOID_FUNC)idle_info_destroy_cb);
+ − break;
+ − }
+ − break;
+ −
+ − case IDLE_NEW_SMS:
+ − // show the info about incoming sms on the idle screen
+ − showKeyPadLocked = showNothing;
+ −
+ − /* MZ 1942 remove the additional SMS received indication screen */
+ −
+ − //data->win_info = idle_information_start(win,2000,showSMSNewMessage,(T_VOID_FUNC)idle_info_destroy_cb);
+ − windowsUpdate();
+ − break;
+ −
+ − case IDLE_INFO_ENDED:
+ − data->win_info = 0;
+ − win_show(win);
+ − break;
+ −
+ − // Sept 15, 2005 REF: CRR 32410 x0021334
+ − // Description: The keypad unlocks even though the unlocking sequence is not executed in quick succession.
+ − // Handle IDLE_KEYPAD_UNLOCK_TIMER_EXPIRED event.
+ − case IDLE_KEYPAD_UNLOCK_TIMER_EXPIRED:
+ − data->menuPressed = FALSE;
+ − break;
+ − default:
+ − return;
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked_win_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static int idle_key_pad_locked_win_cb(MfwEvt e, MfwWin *w)
+ − {
+ −
+ − // T_idle_key_pad_locked * data = (T_idle_key_pad_locked *)w->user; // RAVI
+ −
+ − TRACE_FUNCTION ("idle_key_pad_locked_win_cb()");
+ −
+ − switch (e)
+ − {
+ − case MfwWinVisible:
+ − /*NM, p022*/
+ − showKeyPadLocked();
+ − break;
+ −
+ − default:
+ − return 0;
+ − }
+ −
+ − return 1;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked_kbd_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ − static int idle_key_pad_locked_kbd_cb (MfwEvt e, MfwKbd *k)
+ − {
+ −
+ − T_MFW_HND win = mfw_parent (mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_key_pad_locked * data = (T_idle_key_pad_locked *)win_data->user;
+ −
+ − TRACE_FUNCTION ("idle_key_pad_locked_kbd_cb()");
+ −
+ − SEND_EVENT(data->win,IDLE_KEYPAD_LOCKED_UPDATE,0,&k->code);
+ − return MFW_EVENT_CONSUMED;
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_key_pad_locked_kbd_long_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static int idle_key_pad_locked_kbd_long_cb (MfwEvt e, MfwKbd *k)
+ − {
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showSOSCallKeyPadLocked
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − static void showSOSCallKeyPadLocked(void)
+ − {
+ − TRACE_FUNCTION("showSOSCallKeyPadLocked");
+ − /*NM p022*/
+ −
+ − /*SPR#2026 - DS - Set up colour for "Emergency?" screen */
+ − resources_setColour(COLOUR_EDITOR);
+ −
+ − idle_displayData(IDLE_LOCKED_ECC,TxtEmergency,NULL);
+ − softKeys_displayId(TxtNull,TxtSoftCall,0,COLOUR_EDITOR); /*SPR#2026 - DS - Changed colour from COLOUR_IDLE */
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showNothing
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static void showNothing(void)
+ − {
+ − TRACE_FUNCTION("showNothing");
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showPressMenuStar
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static void showPressMenuStar(void)
+ − {
+ − TRACE_FUNCTION("showPressMenuStar");
+ −
+ − idle_displayData(IDLE_LOCKED,TxtLocked,NULL);
+ − idle_displayData(IDLE_MENU_PRESS,TxtPressMenu,NULL);
+ −
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showSMSNewMessage
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static void showSMSNewMessage(void)
+ − {
+ − char text[20];
+ − int txtStrId;
+ − int txtNo;
+ − int xOfs; //used to offset text id when a number is to be displayed
+ −
+ − TRACE_FUNCTION("showSMSNewMessage");
+ −
+ − dspl_Clear(WIN_DIALLING_ORG_X,Mmi_layout_line_icons(2),mmiScrX,Mmi_layout_second_line()+YLINE*2);
+ −
+ − txtStrId = smsidle_display_sms_status(&txtNo );
+ −
+ − //If data has been set up, then show it
+ − if (txtStrId != TxtNull)
+ − {
+ − if (txtNo != 0)
+ − {//we have a number to display - number of new messages/missed calls
+ − sprintf((char*)text,"%d",txtNo);
+ − dspl_TextOut(4,24,0,text);//always display numbeer as ascii
+ − if (txtNo < 10)
+ − xOfs = 12;
+ − else
+ − xOfs = 18;
+ − }
+ − else
+ − xOfs = 0;
+ −
+ − dspl_TextOut(4+xOfs,24,DSPL_TXTATTR_CURRENT_MODE,GET_TEXT(txtStrId));//display as chinese or ascii
+ − }
+ −
+ − displaySoftKeys(TxtNull,TxtNull);
+ − }
+ −
+ −
+ −
+ −
+ − /*********************************************************************
+ − **********************************************************************
+ −
+ − Information WINDOW. IMPLEMENTATION
+ −
+ − *********************************************************************
+ − **********************************************************************/
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_create
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − T_MFW_HND idle_information_create(MfwHnd parent_window){
+ −
+ − T_MFW_WIN * win;
+ − T_idle_information * data = (T_idle_information *)ALLOC_MEMORY (sizeof (T_idle_information));
+ −
+ − data->win = win_create (parent_window, 0, E_WIN_VISIBLE, (T_MFW_CB)idle_information_win_cb);
+ − data->kbd = kbd_create (data->win,KEY_ALL,(T_MFW_CB)idle_information_kbd_cb);
+ −
+ − if (data->win EQ 0)
+ − return 0;
+ −
+ − /*
+ − * Create window handler
+ − */
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)idle_information;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->win)->data;
+ − win->user = (void *) data;
+ − data->parent_win = parent_window;
+ − /*
+ − * Create any other handler
+ − */
+ −
+ −
+ −
+ − /*
+ − * return window handle
+ − */
+ − return data->win;
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_destroy
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void idle_information_destroy (T_MFW_HND own_window)
+ − {
+ − T_MFW_WIN * win;
+ − T_idle_information * data;
+ −
+ − if (own_window)
+ − {
+ − win = ((T_MFW_HDR *)own_window)->data;
+ − data = (T_idle_information *)win->user;
+ −
+ − if (data)
+ − {
+ − /*
+ − * Exit Keyboard Handler
+ − */
+ − /*
+ − * Delete WIN Handler
+ − */
+ − win_delete (data->win);
+ − }
+ − SEND_EVENT(data->parent_win,IDLE_INFO_ENDED,0,0);
+ − FREE_MEMORY ((void *)data, sizeof (T_idle_information));
+ − }
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_start
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − T_MFW_HND idle_information_start(MfwHnd win_parent,S32 time,void (*show)(void),T_VOID_FUNC info_cb){
+ −
+ −
+ −
+ − T_MFW_HND win = idle_information_create(win_parent);
+ −
+ −
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
+ − T_idle_information * data = (T_idle_information *)win_data->user;
+ −
+ −
+ − data->timer = timCreate(win,time,(MfwCb)idle_information_tim_cb);
+ − data->info_cb = (T_VOID_FUNC)info_cb;
+ − timStart(data->timer);
+ − showInformation = show;
+ − winShow(win);
+ − return win;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − void idle_information (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
+ − {
+ − // T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; // RAVI
+ − // T_idle_information * data = (T_idle_information *)win_data->user; // RAVI
+ −
+ − TRACE_FUNCTION ("idle_information()");
+ −
+ − switch (event)
+ − {
+ − default:
+ − return;
+ − }
+ −
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_win_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static int idle_information_win_cb(MfwEvt e, MfwWin *w)
+ − {
+ −
+ − TRACE_FUNCTION("idle_information_win_cb");
+ −
+ −
+ − switch (e)
+ − {
+ − case MfwWinVisible:
+ − showInformation();
+ − break;
+ − default:
+ − return 0;
+ − }
+ −
+ − return 1;
+ − }
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_kbd_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static int idle_information_kbd_cb(MfwEvt e, MfwKbd *k)
+ − {
+ − T_MFW_HND win = mfw_parent (mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_information * data = (T_idle_information *)win_data->user;
+ − T_MFW_HND keypad_locked_win;
+ − U8 key_code;
+ −
+ −
+ − keypad_locked_win = data->parent_win;
+ − key_code = k->code;
+ − TRACE_FUNCTION("idle_information_kbd_cb");
+ − idle_information_destroy(data->win);
+ − SEND_EVENT(keypad_locked_win,IDLE_KEYPAD_LOCKED_UPDATE,0,&key_code);
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_kbd_long_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − static int idle_information_kbd_long_cb(MfwEvt e, MfwKbd *k)
+ − {
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −
+ −
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_information_tim_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static int idle_information_tim_cb(MfwEvt e, MfwTim *t){
+ −
+ − T_MFW_HND win = mfw_parent (mfw_header());
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_information * data = (T_idle_information *)win_data->user;
+ −
+ − TRACE_FUNCTION("idle_information_tim_cb");
+ −
+ − // Nov 3, 2004 REF: CRR 25887 xkundadu
+ − //Description: Unable to make an emergency call.
+ − //Fix: Changed the code to make the emergency call when the
+ − // screen is locked.
+ − // If the "keypad locked" message is timed out, reset the key pad buffer to NULL
+ − if(data != NULL)
+ − {
+ − T_MFW_WIN * mywin_data = ((T_MFW_HDR *) data->parent_win)->data;
+ − if(mywin_data != NULL)
+ − {
+ − T_idle_key_pad_locked * mydata = (T_idle_key_pad_locked *)mywin_data->user;
+ −
+ − if(mydata->keyPadLockBuf != NULL)
+ − {
+ − // Set the buffer to null once the 'key locked' message
+ − //in the idle screen is timed out.
+ − memset(mydata->keyPadLockBuf, '\0', KEYPADLOCK_BUF_SIZE);
+ − }
+ − }
+ − }
+ −
+ − timStop(data->timer);
+ − data->info_cb(data->parent_win,NULL,NULL);
+ −
+ − // Sept 15, 2005 REF: CRR 32410 x0021334
+ − // Description: The keypad unlocks even though the unlocking sequence is not executed in quick succession.
+ − // Send event to notify that the timer has expired.
+ − SEND_EVENT(data->parent_win, IDLE_KEYPAD_UNLOCK_TIMER_EXPIRED, 0, 0);
+ −
+ − idle_information_destroy(win);
+ − windowsUpdate(); /* p303 - sbh */
+ − return 1;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_info_destroy_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ −
+ − void idle_info_destroy_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason){
+ −
+ − T_MFW_WIN * win_data = ((T_MFW_HDR *)win)->data;
+ − T_idle_key_pad_locked * data = (T_idle_key_pad_locked *)win_data->user;
+ −
+ − data->win_info = 0;
+ −
+ − }
+ − /*******************************************************************************
+ −
+ − $Function: showIMEI
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ − void showIMEI (T_MFW_HND win, char* IMEI)
+ − {
+ − T_DISPLAY_DATA display_info;
+ −
+ − /* Marcus: Issue 1603: 28/01/2003: Replaced dlg_initDisplayData_TextId with dlg_initDisplayData_TextStr */
+ − dlg_initDisplayData_TextStr( &display_info, TxtSoftOK, TxtNull, MmiRsrcGetText(TxtIMEI), IMEI, COLOUR_STATUS);
+ − dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)idle_imei_info_cb, FOREVER, KEY_CLEAR| KEY_LEFT );
+ −
+ − /*
+ − * Call Info Screen
+ − */
+ −
+ − idle_data.info_win = info_dialog (win, &display_info);
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_imei_info_cb
+ −
+ − $Description:
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ −
+ −
+ −
+ − static int idle_imei_info_cb(T_MFW_HND win, USHORT identifier, UBYTE reason)
+ − {
+ −
+ −
+ − switch (reason) {
+ − case INFO_KCD_HUP:
+ − case INFO_KCD_LEFT:
+ − break;
+ − }
+ −
+ − return 1;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: Ciphering
+ −
+ − $Description: Called by mfw
+ − Now this function doesn t seperate between the GSM and GPRS status
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void idle_Ciphering (UBYTE gsm_ciph, UBYTE gprs_ciph)
+ − {
+ −
+ −
+ − if (gsm_ciph == 0 || gprs_ciph == 0)
+ − {
+ −
+ − TRACE_FUNCTION ("Ciphering: is deactivated");
+ −
+ − idle_data.ciphering = SHOW_CPRS_DEACTIV;
+ − //show the DEACTIVATED ciphering indication
+ − iconsSetState(iconIdCipheringDeActiv);
+ − iconsDeleteState(iconIdCipheringActiv);
+ −
+ − }
+ − else if (gsm_ciph == 1 || gprs_ciph == 1)
+ − {
+ − //show the ACTIVATED ciphering indication
+ −
+ − TRACE_EVENT ("Ciphering: is activated");
+ −
+ − idle_data.ciphering = SHOW_CPRS_ACITV;
+ −
+ − iconsSetState(iconIdCipheringActiv);
+ − iconsDeleteState(iconIdCipheringDeActiv);
+ − }
+ − else if (gsm_ciph == 2 || gprs_ciph == 2)
+ − {
+ − //dont show ANY indication !!!
+ −
+ − TRACE_EVENT ("Ciphering: is disabled");
+ −
+ − idle_data.ciphering = DONT_SHOW_CPRS;
+ −
+ − iconsDeleteState(iconIdCipheringActiv);
+ − iconsDeleteState(iconIdCipheringDeActiv);
+ − }
+ −
+ − //update the screen
+ − windowsUpdate();
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showVersion
+ −
+ − $Description: Displays the version of software and date
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − T_MFW_HND ShowVersion(T_MFW_HND parent_window)
+ − {
+ − T_MFW_HND win = ShowVersion_create(parent_window);
+ − TRACE_FUNCTION("ShowVerion()");
+ − if (win NEQ NULL)
+ − {
+ − SEND_EVENT (win, SHOWVERSION_INIT, 0, 0);
+ − }
+ −
+ − return win;
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: ShowVersion_create
+ −
+ − $Description: creates the window
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static T_MFW_HND ShowVersion_create(MfwHnd parent_window)
+ − {
+ − tShowVerion* data = (tShowVerion*)ALLOC_MEMORY (sizeof (tShowVerion));
+ − T_MFW_WIN * win;
+ −
+ − if (data EQ NULL)
+ − {
+ − return NULL;
+ − }
+ −
+ − // Create window handler
+ − data->win = win_create (parent_window, 0, E_WIN_VISIBLE, NULL);
+ − if (data->win EQ NULL)
+ − {
+ −
+ − return NULL;
+ − }
+ − // connect the dialog data to the MFW-window
+ − data->mmi_control.dialog = (T_DIALOG_FUNC)ShowVersion_DialogCB;
+ − data->mmi_control.data = data;
+ − win = ((T_MFW_HDR *)data->win)->data;
+ − win->user = (void *)data;
+ − data->parent_win = parent_window;
+ −
+ − return data->win;
+ − }
+ −
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showVersion_DialogCB
+ −
+ − $Description: CallBack Function
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static void ShowVersion_DialogCB(T_MFW_HND win, USHORT e, SHORT identifier,
+ − void *parameter)
+ − {
+ − T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
+ − tShowVerion* data = (tShowVerion*) win_data->user;
+ − #ifdef NEW_EDITOR
+ − // T_AUI_EDITOR_DATA editor_data; /* SPR#1428 - SH - New Editor data */ // RAVI - Not Used.
+ − #else
+ − // T_EDITOR_DATA editor_data; // RAVI - Not Used.
+ − #endif
+ −
+ − TRACE_FUNCTION("ShowVersion_DialogCB()");
+ −
+ − switch( e )
+ − { //when window first created
+ − case SHOWVERSION_INIT:
+ − {
+ −
+ − strcat(data->buffer, "Date:");
+ − strcat(data->buffer, date);
+ − strcat(data->buffer,"\n");
+ − strcat(data->buffer, "BMI:");
+ − strcat(data->buffer, bmi);
+ − strcat(data->buffer,"\n");
+ − strcat(data->buffer,"GPRS:");
+ − strcat(data->buffer, gprs);
+ − strcat(data->buffer,"\n");
+ − strcat(data->buffer,"TI:");
+ − strcat(data->buffer, ti);
+ −
+ − ShowVersionSetEditor(win);//set editor with default attribute values
+ −
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − AUI_edit_Start(win, &data->editor_data);
+ − #else /* NEW_EDITOR */
+ − editor_start(win, &(data->editor_data)); /* start the editor */
+ − #endif /* NEW_EDITOR */
+ −
+ − winShow(data->win);
+ − }
+ − break;
+ −
+ − default:
+ − {
+ − TRACE_EVENT("ShowVersion_DialogCB(): Unknown Event");
+ − }
+ − break;
+ −
+ − }
+ −
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: ShowVersionSetEditor
+ −
+ − $Description: Set the editor up
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void ShowVersionSetEditor(T_MFW_HND win)
+ − {
+ − T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
+ − tShowVerion* data = (tShowVerion*) win_data->user;
+ −
+ − /* SPR#1428 - SH - New Editor changes */
+ − #ifdef NEW_EDITOR
+ − AUI_edit_SetDefault(&data->editor_data);
+ − AUI_edit_SetDisplay(&data->editor_data, ZONE_FULL_SK_TITLE, COLOUR_EDITOR, EDITOR_FONT);
+ − AUI_edit_SetEvents(&data->editor_data, 0, TRUE, FOREVER, (T_AUI_EDIT_CB)ShowVerionCB);
+ − AUI_edit_SetBuffer(&data->editor_data, ATB_DCS_ASCII, (UBYTE *)data->buffer, 35);
+ − AUI_edit_SetMode(&data->editor_data, ED_MODE_READONLY, ED_CURSOR_NONE);
+ − AUI_edit_SetTextStr(&data->editor_data, TxtNull, TxtSoftBack, TxtNull, NULL);
+ − #else /* NEW_EDITOR */
+ − editor_attr_init(&((data->editor_data).editor_attr), NULL, edtCurNone, 0, (char *)data->buffer, 35, COLOUR_EDITOR);
+ − editor_data_init(&data->editor_data, NULL, TxtSoftBack, TxtNull, 0, 1, READ_ONLY_MODE, FOREVER);
+ − data->editor_data.hide = FALSE;
+ − data->editor_data.Identifier = 0;
+ − data->editor_data.TextString = NULL;
+ − data->editor_data.destroyEditor = TRUE;
+ − data->editor_data.Callback = (T_EDIT_CB)ShowVerionCB;
+ − #endif /* NEW_EDITOR */
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: ShowVerionCB
+ −
+ − $Description: Callback
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − static void ShowVerionCB( T_MFW_HND win, USHORT Identifier,UBYTE reason)
+ − {
+ − T_MFW_WIN *win_data = ( (T_MFW_HDR *) win )->data;
+ − tShowVerion*data = (tShowVerion*) win_data->user;
+ −
+ −
+ − TRACE_FUNCTION("ShowVerionCB()");
+ −
+ − switch (reason )
+ − {
+ − case INFO_KCD_LEFT:
+ − case INFO_KCD_HUP:
+ − case INFO_KCD_RIGHT:
+ −
+ − default:
+ − showVersion_destroy(data->win);
+ − break;
+ − }
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: showVersion_destroy
+ −
+ − $Description: Destroys the editor
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − void showVersion_destroy(MfwHnd own_window)
+ − {
+ − T_MFW_WIN * win_data;
+ −
+ − tShowVerion* data = NULL;
+ −
+ −
+ − if (own_window == NULL)
+ − {
+ − TRACE_EVENT ("Error : showVersion_destroy called with NULL Pointer");
+ − return;
+ − }
+ −
+ −
+ − win_data = ((T_MFW_HDR *)own_window)->data;
+ − if (win_data != NULL)
+ − data = (tShowVerion*)win_data->user;
+ −
+ − if (data)
+ − {
+ − TRACE_EVENT ("calc_destroy()");
+ −
+ − win_delete (data->win);
+ − // Free Memory
+ − FREE_MEMORY ((void *)data, sizeof (tShowVerion));
+ −
+ − }
+ − else
+ − {
+ − TRACE_EVENT ("calc_destroy() called twice");
+ − }
+ − }
+ − //GW 28/11/02 - debug only - to allod display.c to output a trace (for timing only)
+ − void mmi_trace( char* str)
+ − {
+ − TRACE_FUNCTION(str);
+ − }
+ −
+ − //xrashmic 26 Aug, 2004 MMI-SPR-23931
+ − // To display the indication of new EMS in the idle screen
+ − void addNewEMS(void)
+ − {
+ − UBYTE currentVoiceTone;
+ − idle_data.ems=TRUE;
+ − //Apr 05, 2005 REF: ENH 29994 xdeepadh
+ − //Nov 02, 2005 REF:ER OMAPS00039044 xdeepadh
+ − //Play SMS tone for EMS alert
+ − #ifdef FF_MIDI_RINGER
+ − mfw_ringer_start(AS_RINGER_MODE_SMS,false,sounds_midi_ringer_start_cb);
+ − #else
+ − currentVoiceTone = getcurrentVoiceTone();
+ − #ifdef FF_MMI_RINGTONE /* MSL SMS Tone */
+ − audio_PlaySoundID( AUDIO_BUZZER, SMSTONE_SELECT, 200, AUDIO_PLAY_ONCE );
+ − #else
+ − audio_PlaySoundID( AUDIO_BUZZER, currentVoiceTone, 200, AUDIO_PLAY_ONCE );
+ − #endif
+ − #endif
+ − }
+ −
+ − /*******************************************************************************
+ −
+ − $Function: idle_opername_timer_cb
+ −
+ − $Description: Callback for timer
+ −
+ − $Returns:
+ −
+ − $Arguments:
+ −
+ − *******************************************************************************/
+ − //x0pleela 14 Feb, 2006 ER: OMAPS00065203
+ − int idle_opername_timer_cb( MfwEvt e, MfwTim *tc )
+ − {
+ − TRACE_FUNCTION("idle_opername_timer_cb()");
+ −
+ − //Display text is changed to PLMN name and refresh idle screen
+ − opername_disp_flag = PLMN;
+ − idleEvent(IdleUpdate);
+ −
+ − //Stop and delete timer
+ − if( plmn_display)
+ − {
+ − timStop(plmn_display);
+ − }
+ − return MFW_EVENT_CONSUMED;
+ − }
+ −