FreeCalypso > hg > tcs211-fcmodem
diff g23m/condat/ms/src/bmi/mmiemscreate.c @ 0:509db1a7b7b8
initial import: leo2moko-r1
author | Space Falcon <falcon@ivan.Harhan.ORG> |
---|---|
date | Mon, 01 Jun 2015 03:24:05 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/g23m/condat/ms/src/bmi/mmiemscreate.c Mon Jun 01 03:24:05 2015 +0000 @@ -0,0 +1,1582 @@ + +/******************************************************************************* + + TI (Shanghai) + +******************************************************************************** + + This software product is the property of TI (Shanghai) Ltd and may not be + disclosed to any third party without the express permission of the owner. + +******************************************************************************** + + $Project name: TISHMMS Project + $Project code: BMI (6349) + $Module: MMS + $File: MmiEMSCreate.c + $Revision: 1.0 + + $Author: Pinghua create (pinghua-zhang@ti.com ) + $Date: 26/08/03 + +******************************************************************************** + + Description: + + This module provides definitions of the types and + constants which are shared across the MMS + application modules. + +******************************************************************************** + $History: MmiMMSCreate.h + + xrashmic 08 Feb, 2005 MMI-SPR-27853 + Added more parameters to the information_dialog function + + MMI-SPR-27384 Dec-16-2004 - xreddymn + Modifications for EMS inbox presentation + + xrashmic 9 Dec, 2004 MMI-SPR-27385 + Description: No response on selecting the EMS preview option + Solution: Removed the EMS preview option, since the editor itself acts as preview. + + xrashmic 7 Dec, 2004 MMI-SPR-23965 + Description: Not able to extract the objects in EMS message + Solution: Extract and store the objects in the Object Manager + + MMI-SPR-25278: Nov-29-2004 - xreddymn + Implemented FFS limits for MMS/EMS storage + + CRR: 25302 - xpradipg 10 Nov 2004 + Description: Should be able to select the number fro the phonebook while + sending MMS/EMS. + Solution: The new feature to select the number from phonebook while sending + MMS/EMS is added + + CRR: 25329 - xpradipg 27 Oct 2004 + Description: Delete option in EMS create does not work + Solution: the option is removed since a Softkey is provided in the compose + screen, that can be used to delete objects directly. + + MMI-SPR-25273: Oct-14-2004 - xreddymn + Description: EMS forward not working + Solution: Added changes to implement the EMS forward feature + + CRR: 25291 - xrashmic 14 Oct 2004 + Description: The sent EMS is stored in unsent folder. + Solution: The Outbox has been removed, instead we now have Sent folder for the sent EMS + + CRR: 24741 - xpradipg 17 Sept 2004 + Description: Default values to be removed in text editor of MMS and EMS + Solution: The buffer assigned to the text editor is reset. + + MMI-SPR-24735: Sep-16-2004 - xreddymn + Added changes to reduce flickering of EMS editor screen when the user is + deleting or navigating + + xrashmic 13 Sep, 2004 MMI-SPR-24744 + Description: No indication of the EMS sent. Also after sending EMS, the option + screen is displayed. + Solution: Implemented the indication of EMS sent screen. + + MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): Aug-17-2004 - xreddymn + Keep track of MMS/EMS display + + CRR: 23942 - xpradipg 26 Aug 2004 + Description: Default values to be removed in text editor of MMS and EMS + Solution: The buffer assigned to the text editor is reset. + + CRR: 23942 - xpradipg 26 Aug 2004 + Description: Default values to be removed in number editor of MMS and EMS + Solution: The strcpy() of the hardcoded numbers to the editor buffer are commented + + Bug Id 23 : 16 Aug, 2004 - xpradipg + Description:Remove insert slide form options menu + Solution: removed the insert slide item from the menu item array + + 17/01/04 Replace mfw edit with AUI edit. + 26/08/03 Original TI(Shanghai) BMI version. + + $End + +*******************************************************************************/ +#define MMI_MMSCREATE_C + +#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_edt.h" +#include "mfw_tim.h" +#include "mfw_phb.h" +#include "ksd.h" +#include "psa.h" +#include "mfw_sms.h" +#include "mfw_smsi.h" +#include "mfw_icn.h" +#include "mfw_mnu.h" +#include "mfw_lng.h" +#include "mfw_sat.h" +#include "mfw_kbd.h" +#include "mfw_nm.h" + +#include "psa_util.h" + +#include "dspl.h" +// #include "unicode_types.h" + +#include "MmiMain.h" +#include "MmiDummy.h" +//#include "MmiLists.h" +#include "MmiMmi.h" +#include "mmiCall.h"//GW 29/11/01 for 'callNumber' + +#include "MmiDialogs.h" +#include "MmiLists.h" +#include "MmiMenu.h" +#include "MmiSoftKeys.h" + +#ifdef NEW_EDITOR +#include "ATBCommon.h" +#include "ATBDisplay.h" +#include "ATBEditor.h" +#include "AUIEditor.h" +#else /* NEW_EDITOR */ +#ifdef EASY_TEXT_ENABLED +#include "MmiLatinPredText.h" +#endif /* EASY_TEXT_ENABLED */ +#include "MmiEditor.h" +#endif /* NEW_EDITOR */ + +#include "MmiBookShared.h" // MZ +#include "mmimmsmenu.h" +#include "mmiemscreate.h" // pinghua modify +#include "mmimmscreate.h" +#include "mmimmsom.h" +#include "mmiwindow.h" +#include "mfw_ffs.h" + +#include "cus_aci.h" + +#include "prim.h" +#ifndef PCM_2_FFS +#include "pcm.h" +#endif + + +#include "aci_cmh.h" //GW 29/11/01 added for types in aci_fd.h +#include "aci_fd.h" //GW 29/11/01 added for types in 'cmh.h' +#include "cmh.h" //GW 29/11/01 added for types in 'cmh_phb.h' +#include "cmh_phb.h" //GW 29/11/01 added for cmhPHB_getAdrStr + +#include "mmiColours.h" + + +// ronaldc 8-5 + +#include "mg4def.h" +#include "evtdefs.h" +#include "mg4stu.h" +#include "Mg4Dal.h" +#include "mg4devif.h" +#include "dalevt.h" +#include "evif.h" +#include "mg4str.h" +#include "mmif.h" +#include "mg4mem.h" + +#include "AUIWapext.h" +#include "ATBData.h" +#include "dspl.h" // xrashmic 13 Sep, 2004 MMI-SPR-24744 + +// xreddymn Dec-16-2004 MMI-SPR-27384 +#include "Mfw_td.h" + + UCS2 ems_g_insertString[128] = {'t','e','s','t',0}; + MSafeString ems_g_safeString; + + UINT32 gEmsMsgId = MM_INVALID_MESSAGE_ID; + +// xreddymn Dec-16-2004 MMI-SPR-27384 +MM_S_MESSAGE_HEADER *EmsMsgHeader=NULL; +EVT_STRUCT g_EMS_event_struct; +extern T_MFW_TIME current_time; +extern T_MFW_DATE current_date; + +//GW 29/11/01 - added header file - removed extern void callNumber(UBYTE* number); +MfwWin* getWinData( MfwHnd win); + +extern void M4_DebugMessage(unsigned long para); + +//xreddymn Aug-26-2004 +extern UINT8 gucMmsTitleBarHeight; + +//xreddymn Aug-27-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): To keep track of MMS display +extern BOOL g_M4_display_active; + +//xreddymn Oct-14-2004 MMI-SPR-25273: Used to maintain the state when forwarding an EMS message +BOOL gEmsForward=FALSE; + +//xreddymn Nov-26-2004 +extern T_MFW_HND g_inSaveModeWin; +extern BOOL g_inSaveMode; +//xrashmic 08 Feb, 2005 MMI-SPR-27853 +extern T_MFW_HND information_dialog(USHORT TxtId1, USHORT TxtId2,char* Txt1, char* Txt2, USHORT SoftKeyTxtId1, USHORT SoftKeyTxtId2, int timer, T_MFW_EVENT keyEvents, T_VOID_FUNC callback); + + + + +/********************************************************************* + + DYNAMIC MENU WINDOW. DECLARATION + +**********************************************************************/ + + +static int EMSCreate_OPTexeSend(MfwMnu* m, MfwMnuItem* i); +//xrashmic 7 Dec, 2004 MMI-SPR-23965 +static int EMSCreate_OPTexeInsPreDefPicture(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeInsPicture(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeInsPreDefSound(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeInsSound(MfwMnu* m, MfwMnuItem* i); + +static int EMSCreate_OPTexeInsText(MfwMnu* m, MfwMnuItem* i); +//static int MMSCreate_OPTexeInsSlide(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeDelPicture(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeDelSound(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeDelText(MfwMnu* m, MfwMnuItem* i); +static int EMSCreate_OPTexeSave(MfwMnu* m, MfwMnuItem* i); + +static MfwMnuItem EMSCreate_OPTDeleteItems [] = +{ + {0,0,0,(char *)TxtMMSDeletePicture,0,(MenuFunc)EMSCreate_OPTexeDelPicture,item_flag_none}, + {0,0,0,(char *)TxtMMSDeleteSound,0,(MenuFunc)EMSCreate_OPTexeDelSound,item_flag_none}, + {0,0,0,(char *)TxtMMSDeleteText,0,(MenuFunc)EMSCreate_OPTexeDelText,item_flag_none} +}; +static MfwMnuAttr MMSCreate_OPTDeleteAttrib = +{ + &SmsRead_R_OPTArea, + MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ + -1, /* use default font */ + EMSCreate_OPTDeleteItems, /* with these items */ + sizeof(EMSCreate_OPTDeleteItems)/sizeof(MfwMnuItem), /* number of items */ + COLOUR_LIST_SMS, TxtNull, MNUATTRSPARE +}; + +static MfwMnuItem EMSCreate_OPTItems [] = +{ + {0,0,0,(char *)TxtSend,0,(MenuFunc)EMSCreate_OPTexeSend,item_flag_none}, + {0,0,0,(char *)TxtMMSInsertPrePicture,0,(MenuFunc)EMSCreate_OPTexeInsPreDefPicture,item_flag_none}, + {0,0,0,(char *)TxtMMSInsertPicture,0,(MenuFunc)EMSCreate_OPTexeInsPicture,item_flag_none}, + {0,0,0,(char *)TxtMMSInsertPreSound,0,(MenuFunc)EMSCreate_OPTexeInsPreDefSound,item_flag_none}, + {0,0,0,(char *)TxtMMSInsertSound,0,(MenuFunc)EMSCreate_OPTexeInsSound,item_flag_none}, + {0,0,0,(char *)TxtMMSInsertText,0,(MenuFunc)EMSCreate_OPTexeInsText,item_flag_none}, + //Bug Id 23 : 16 Aug, 2004 - xpradipg + //Description:Remove insert slide form options menu +// {0,0,0,(char *)TxtMMSInsertSlide,0,(MenuFunc)EMSCreate_OPTexeInsSlide,item_flag_none}, + {0,0,0,(char *)TxtSave,0,(MenuFunc)EMSCreate_OPTexeSave,item_flag_none}, + //CRR: 25329 - xpradipg 25 Oct 2004 +// {0,0,0,(char *)TxtMMSDelete,&MMSCreate_OPTDeleteAttrib,0,item_flag_none}, + + //xrashmic 9 Dec, 2004 MMI-SPR-27385 + //Removed the EMS preview option, since the editor itself acts as preview. + // {0,0,0,(char *)TxtMMSPreview,0,(MenuFunc)NULL,item_flag_none} +}; + +static MfwMnuAttr EMSCreate_OPTAttrib = +{ + &SmsRead_R_OPTArea, + MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ + -1, /* use default font */ + EMSCreate_OPTItems, /* with these items */ + sizeof(EMSCreate_OPTItems)/sizeof(MfwMnuItem), /* number of items */ + COLOUR_LIST_SMS, TxtNull, MNUATTRSPARE + +}; + +/* 1. User selects 'Preview' from user menu (MMI) */ +/* 2. MMI calls action_ResumeEditor() to resume the magic4 client and suspends the menu system */ +void action_EMS_ResumeEditor() +{ + /* resume magic4 editor */ + DAL_PostMessage(EMG4_Resume,EMG4_Type_NotUsed,0,NULL); + /* if necessary, add code here to suspend display of the menu system */ +} + + +/* 3. After action_ResumeEditor has been completed, MMI then calls action_PreviewMessage() to preview the message currently in the magic4 editor */ + + + +void action_EMS_SuspendEditor() +{ + /* suspend magic4 editor */ + DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); + /* if necessary, add code here to resume display of the menu system */ +} + +/******************************************************************************* + + $Function: set_MMS_current_time_stamp + + $Description: Sets current time in the time stamp structure + + $Returns: none + + $Arguments: t - Time stamp to be updated by this function + + $author : xreddymn + +*******************************************************************************/ + +void set_MMS_current_time_stamp(MM_S_TIME_STAMP *t) +{ + t->day=current_date.day; + t->month=current_date.month; + t->year=current_date.year; + t->hour=current_time.hour; + t->min=current_time.minute; + t->sec=current_time.second; +} + +/******************************************************************************* + + $Function: EMS_update_header_handler + + $Description: Callback function for DAL_ModifyMessageParamsAsync + + $Returns: none + + $Arguments: As specified by M4 + + $author : xreddymn + Currently, this is a dummy function + +*******************************************************************************/ + +ESTATUS EMS_update_header_handler(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle) +{ + +} + +EVT_STRUCT CreatEmsDocumentevtHandle; + +ESTATUS Handler_EMS_CreateDocument(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle) +{ + //xmzhou_trace_string_value("Handler_EMS_CreateDocument aeId = ", aeId); + + switch(aeId) + { + case EMG4_FileOpDone: + + //xmzhou_trace_string_value("gEmsMsgId = ampParam = ", ampParam); + + gEmsMsgId = (UINT32)ampParam; + + if(g_inSaveMode==TRUE) + { + g_inSaveMode=FALSE; + // xreddymn Nov-26-2004 MMI-SPR-25278 + winDelete(g_inSaveModeWin); + //xrashmic 08 Feb, 2005 MMI-SPR-27853 + //Added few more parameters for this function + information_dialog(TxtSaved,TxtNull, NULL,NULL,TxtNull,TxtSoftBack,FOREVER,KEY_CLEAR|KEY_RIGHT|KEY_HUP,NULL); + /* xreddymn Dec-15-2004 MMI-SPR-27384 + * Update EMS message header with the current time stamp + */ + { + ESTATUS eResult= DAL_RetrieveMessageHeader(gEmsMsgId,&EmsMsgHeader); + if(eResult==ENoError) + { + set_MMS_current_time_stamp(&EmsMsgHeader->timestamp); + g_EMS_event_struct.handler = EMS_update_header_handler; + g_EMS_event_struct.parentEvtHandle = NULL; + g_EMS_event_struct.pData = NULL; + g_EMS_event_struct.userFlag = 0; + DAL_ModifyMessageParamsAsync((EVT_HANDLE)&g_EMS_event_struct,gEmsMsgId,EmsMsgHeader); + } + } + } + break; + + // xrashmic Nov-17-2004: Changes for FFS error handling + case EMG4_OpError: + { + MDword reason; + reason = (ampParam & 0x3FFF); + // xreddymn Nov-27-2004 MMI-SPR-25278 + switch(reason) + { + case EFileOpFailed: + winDelete(g_inSaveModeWin); + //xrashmic 08 Feb, 2005 MMI-SPR-27853 + //Added few more parameters for this function + information_dialog(TxtFailed,TxtFatalError,NULL,NULL, TxtNull,TxtSoftBack,FOREVER,KEY_CLEAR|KEY_RIGHT|KEY_HUP,NULL); + break; + } + } + break; + } + + return ENoError; +} + +/******************************************************************************* + + $Function: EMSCreate_exec_cb + + $Description: Exec callback function of the MMS Create window + + $Returns: none + + $Arguments: win - window handler + event - mfw event + parameter - optional data. + $author : pinghua for EMS modify !! + +*******************************************************************************/ +void EMSCreate_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) + /* callback handler for events sent to to trigger execution */ +{ + ESTATUS eStatus; + T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; + + TRACE_FUNCTION ("EMSCreate_exec_cb()"); + + //xmzhou_trace_string_value("EMSCreate_exec_cb called", event); + + switch (event) + { + case MWM_CREATE: + /* initialization of administrative data */ + TRACE_EVENT("MWM_CREATE"); + + // xreddymn Oct-14-2004 MMI-SPR-25273: Open an existing EMS message to forward + if(gEmsForward==TRUE) + { + CreatEmsDocumentevtHandle.handler = Handler_EMS_CreateDocument; + CreatEmsDocumentevtHandle.parentEvtHandle = NULL; + CreatEmsDocumentevtHandle.pData = NULL; + CreatEmsDocumentevtHandle.userFlag = 0; + + eStatus = EV_OpenDocument((EVT_HANDLE) &CreatEmsDocumentevtHandle, (MM_MESSAGE_ID) gEmsMsgId, (MM_MESSAGE_ID) MM_INVALID_MESSAGE_ID); + DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); + } + else + { + //Creat a document for one EMS + CreatEmsDocumentevtHandle.handler = Handler_EMS_CreateDocument; + CreatEmsDocumentevtHandle.parentEvtHandle = NULL; + CreatEmsDocumentevtHandle.pData = NULL; + CreatEmsDocumentevtHandle.userFlag = 0; + + eStatus = EV_CreateDocument((EVT_HANDLE) &CreatEmsDocumentevtHandle, EMtSms, (MM_MESSAGE_ID) MM_INVALID_MESSAGE_ID); + if (eStatus!=ENoError) + { + //xmzhou_trace_string_value("EMSCreate_exec_cb EV_CreateDocument return error num = ", eStatus); + } + else + { + //xmzhou_trace_string("EMSCreate_exec_cb EV_CreateDocument return ENoError"); + gEmsMsgId = MM_INVALID_MESSAGE_ID; + } + } + //xreddymn Aug-27-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): M4 client will now use the display + g_M4_display_active=TRUE; + break; + + case MWM_ONDRAW: + TRACE_EVENT("MWM_ONDRAW"); + dspl_Enable(0); +#if(0) + dspl_ClearAll(); + dspl_TextOut(32, 0, DSPL_TXTATTR_HLIGHT,"Create EMS"); +#else + // xreddymn Aug-26-2004: Modified Title display + { + unsigned short width, height; + DeviceGetScreenMetrics(&width,&height); + dspl_SetBgdColour(COL_White); + dspl_Clear(0, gucMmsTitleBarHeight, width-1, gucMmsTitleBarHeight+height-1); + resources_setTitleColour(COLOUR_EDITOR); + dspl_Clear(0, 0, width-1, gucMmsTitleBarHeight-1); + dspl_TextOut(1, 0, DSPL_TXTATTR_HLIGHT,"Create EMS"); + } +#endif + //xmzhou_trace_string("action_EMS_ResumeEditor in EMSCreate_exec_cb called"); + action_EMS_ResumeEditor(); + displaySoftKeys(TxtSoftOptions,TxtDelete); + dspl_Enable(1); + break; + + // xreddymn Aug-09-2004 + case MWM_SUSPEND: + TRACE_EVENT("MWM_SUSPEND"); + //xreddymn Sep-16-2004 MMI-SPR-24735 + dspl_Enable(1); + //xreddymn Aug-27-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display + g_M4_display_active=FALSE; + action_EMS_SuspendEditor(); + break; + + // xreddymn Aug-27-2004 + case MWM_RESUME: + TRACE_EVENT("MWM_RESUME"); + //xreddymn Aug-27-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): M4 client will now use the display + g_M4_display_active=TRUE; + //xreddymn Sep-16-2004 MMI-SPR-24735: Removed editor resume and refresh + //action_EMS_ResumeEditor(); + //DAL_PostMessage(EMG4_Refresh, EMG4_Type_NotUsed, 0, 0); + break; + + case MWM_DESTORY: + TRACE_EVENT("MWM_DESTROY"); + //xreddymn Sep-16-2004: Changes related to MMI-SPR-24735 + dspl_Enable(1); + //xmzhou_trace_string("EMSCreate_exec_cb EMG4_Exit be posted"); + DAL_PostMessage(EMG4_Exit, EMG4_Type_NotUsed, 0, 0); + //xreddymn Aug-27-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display + g_M4_display_active=FALSE; + break; + default: + break; + } +} + + + + +/******************************************************************************* + + $Function: MMSCreate_kbd_cb + + $Description: Exec callback function for the Option window + + $Returns: execution status + + $Arguments: e - event id + k - keyboard info + $Author : pignhua add these code for EMS () +*******************************************************************************/ + +static int EMSCreate_kbd_cb (MfwEvt e, MfwKbd *k) + /* SmsRead_R_OPT keyboard event handler */ +{ + T_MFW_HND win = mfwParent(mfw_header()); + + + TRACE_FUNCTION ("MMSCreate_kbd_cb()"); + //xreddymn Sep-16-2004 MMI-SPR-24735: Reduce screen flickering in EMS editor when user presses keys + dspl_Enable(0); + if (e & KEY_LONG) + { + switch (k->code) + { + case KCD_HUP: /* back to previous menu */ + MMI_DestoryWindow(win); + break; + case KCD_RIGHT: /* delete one */ + DAL_PostMessage(EMG4_BackSpace, EMG4_Type_NotUsed, 0, NULL); + break ; + case KCD_MNUUP: + DAL_PostMessage(EVT_StartOfMessage, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNUDOWN: + DAL_PostMessage(EVT_EndOfMessage, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNULEFT: + DAL_PostMessage(EVT_StartOfLine, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNURIGHT: + DAL_PostMessage(EVT_EndOfLine, EMG4_Type_NotUsed, 0, NULL); + break; + default: /* no response to all other keys */ + return MFW_EVENT_CONSUMED; + } + } + else + { + switch (k->code) + { + case KCD_MNUSELECT: + case KCD_LEFT: + EMSCreate_OPT_start(win,0); + break; + case KCD_HUP: /* back to previous menu */ + MMI_DestoryWindow(win); + break; + case KCD_RIGHT: /* delete one */ + DAL_PostMessage(EMG4_BackSpace, EMG4_Type_NotUsed, 0, NULL); + break ; + case KCD_MNUUP: + DAL_PostMessage(EVT_CursorUp, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNUDOWN: + DAL_PostMessage(EVT_CursorDown, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNULEFT: + DAL_PostMessage(EMG4_CursorLeft, EMG4_Type_NotUsed, 0, NULL); + break; + case KCD_MNURIGHT: + DAL_PostMessage(EMG4_CursorRight, EMG4_Type_NotUsed, 0, NULL); + break; + default: /* no response to all other keys */ + return MFW_EVENT_CONSUMED; + } + } + return MFW_EVENT_CONSUMED; +} + + +/******************************************************************************* + + $Function: MMSCreate_start + + $Description: Start the creation of the main window for Create MMS + + $Returns: mfw window handler + + $Arguments: parent_window - Parent window handler + menuAttr - Menu attributes. + +*******************************************************************************/ +T_MFW_HND EMSCreate_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr) +{ + TRACE_FUNCTION ("MMSCreate_start()"); + return MMI_CreateWindow(parent_window, (T_DIALOG_FUNC) EMSCreate_exec_cb, (void*)menuAttr,(MfwCb)EMSCreate_kbd_cb, 0,0); +} + + +#define MMS_SEND_SUBJUCT_NUMBER + +static T_MFW_HND editor=NULL; +//CRR: 25302 - xpradipg 10 Nov 2004 +//Global to hold the number editor handle +static T_MFW_HND number_edit=NULL; +static char text[MAX_EMS_TEXT_LEN]; +char EmsNumber[MAX_PHB_NUM_LEN]; +static char topic[MAX_EMS_TOPIC_LEN]="\0"; + + +void Free_MMISafeString(void * paData) +{ + MSafeString *pSafeString = (MSafeString *)paData; + if (pSafeString!= NULL) + { + mfwFree((U8 *)(pSafeString->pString), pSafeString->size); + pSafeString->pString = NULL; + } +} + + +UINT32 EMS_CaculateByteSize(MDword rawDataSize, MM_E_SMS_ENCODING encoding) +{ + UINT32 ulBitLength; + UINT32 ulByteSize; + + switch (encoding) + { + case EEncodingGSM7Bit: + case EEncoding7BitASCII: + { + ulBitLength = rawDataSize * 7; + + if ((ulBitLength & 0x07) == 0) + { + ulByteSize = ulBitLength/8; + } + else + { + ulByteSize = ulBitLength/8 + 1; + } + break; + } + case EEncoding8BitASCII: + case EEncodingGSM8Bit: + { + ulByteSize = rawDataSize; + break; + } + + case EEncodingUCS2: + case EEncodingUNICODE: + { + ulByteSize = rawDataSize; + break; + } + default: + { + //xmzhou_trace_string_value("EMS_CaculateByteSize error case encoding = ", encoding); + ulByteSize = 0; + break; + } + }/* end switch (encoding) */ + + return ulByteSize; +}/* end of EMS_CaculateByteSize */ + +LOCAL MM_S_MESSAGE *EmsMesg; +LOCAL UINT16 ulSendIndex; + +//number +LOCAL void ems_submit_error_proc (T_ACI_AT_CMD cmdId, T_ACI_CMS_ERR err, + T_EXT_CMS_ERROR *ce) +{ + //CRR: 24741 - xpradipg 17 Sept 2004 + //The error message is displayed + T_MFW_HND win = mfwParent(mfw_header()); + T_DISPLAY_DATA displayInfo; + + TRACE_FUNCTION("ems_submit_error_proc called"); + dlg_initDisplayData_TextStr(&displayInfo, TxtSoftOK,TxtNull, "EMS Send", "Failed", COLOUR_STATUS); + dlg_initDisplayData_events(&displayInfo, (T_VOID_FUNC)NULL, FOREVER, KEY_LEFT |KEY_HUP); + info_dialog(win,&displayInfo); + EmsMesg->memHdr.freeFunc(EmsMesg); +} + + +void ems_prepare8bitBufferforACIfrom7bit(MByte* textBuffer, UBYTE NumTxt, UBYTE OriginalOffest, UBYTE* SmsTextOut) +{ + UBYTE ByteOne; + U16 ByteTwo; + U16 ulConcated2Bytes; + UBYTE TextBufferOffset = 0; + UBYTE ByteOffset = 0; + UBYTE BitOffset; + UINT16 i; + + if ((textBuffer == NULL) || (SmsTextOut == NULL)) + { + return; + } + + BitOffset = OriginalOffest; + + for (i = 0; i < NumTxt; i++) + { + ByteOne = textBuffer[TextBufferOffset]; + ByteTwo = textBuffer[TextBufferOffset + 1]; + + ulConcated2Bytes = ByteOne; + ulConcated2Bytes = ulConcated2Bytes | ((ByteTwo <<8) & 0xFF00); + + SmsTextOut[ByteOffset] = 0; + + if (BitOffset == 0) + { + SmsTextOut[ByteOffset] = 0x7f & ByteOne; + BitOffset = 7; + //TextBufferOffset = TextBufferOffset;//do not change + } + else if (BitOffset == 1) + { + SmsTextOut[ByteOffset] = 0x7f & (ByteOne >> BitOffset); + BitOffset = 0; + TextBufferOffset++; + } + else + { + SmsTextOut[ByteOffset] = (UBYTE)(0x7f & (ulConcated2Bytes >> BitOffset)); + BitOffset --; + TextBufferOffset++; + } + + ByteOffset++; + }/* end of for */ + + return; +} +void ems_submit(UBYTE mr, UBYTE numSeg) +{ + T_ACI_TOA toa; + T_ACI_TOA tosca; + SHORT rp; + + T_ACI_UDH_DATA udh; + T_ACI_SM_DATA tar_data; + + T_MFW_SMS_INFO sms_parameter; + + MByte * rawData; + MDword rawDataSize; + UINT32 BytesSize; + UINT32 ulTextByteLengh; + MM_E_SMS_ENCODING M4Encoding; + + T_ACI_RETURN AciReturn; + + UBYTE OriginalOffest; + + //xmzhou_trace_string_value("ems_submit called ulSendIndex = ", ulSendIndex); + TRACE_FUNCTION("ems_submit called"); + + if (ulSendIndex >= EmsMesg->pBody->numMessageParts) + { + /* xreddymn Dec-15-2004 MMI-SPR-27384 + * Update EMS message header with the current time stamp and Destination Address + */ + { + ESTATUS eResult= DAL_RetrieveMessageHeader(gEmsMsgId,&EmsMsgHeader); + if(eResult==ENoError) + { + UCS2 temp_string[128]; + //CRR: 25291 - xrashmic 14 Oct 2004 + //Once the EMS is sent successfully, move this EMS into Sent folder. + EmsMsgHeader->location=EMlSent; + MMS_Convert8BitStringToUcs2((MByte*)EmsNumber,strlen(EmsNumber),(UCS2*)temp_string); + EmsMsgHeader->messageTypeHeader.smsHeader.pszAddress=temp_string; + set_MMS_current_time_stamp(&EmsMsgHeader->timestamp); + g_EMS_event_struct.handler = EMS_update_header_handler; + g_EMS_event_struct.parentEvtHandle = NULL; + g_EMS_event_struct.pData = NULL; + g_EMS_event_struct.userFlag = 0; + DAL_ModifyMessageParamsAsync((EVT_HANDLE)&g_EMS_event_struct,gEmsMsgId,EmsMsgHeader); + } + } + //xmzhou_trace_string("EMS post success!"); + //xrashmic 13 Sep, 2004 MMI-SPR-24744 + //Displaying a dialog after all the parts of EMS are sent. + ems_dialog(TxtEMS,TxtSent,NULL,TxtSoftBack,FOREVER); + EmsMesg->memHdr.freeFunc(EmsMesg); + return; + } + + rp = -1; /* reply path = default *//*for MFW_SMS_SUBMIT*/ + + toa.ton = phb_ncvtTon(NULL); + toa.npi = NPI_IsdnTelephony; + tosca.ton = phb_ncvtTon(NULL); + tosca.npi = NPI_IsdnTelephony; + + SmsSend_get_config_data(&sms_parameter); + + if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingGSM7Bit) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncoding7BitASCII)) + { + sms_parameter.dcs = MFW_DCS_7bits; + + } + else if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingUCS2) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingUNICODE)) + { + sms_parameter.dcs = MFW_DCS_UCS2; + } + else if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncoding8BitASCII) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingGSM8Bit)) + { + sms_parameter.dcs = MFW_DCS_8bits; + } + else + { + //xmzhou_trace_string_value("EMS_RetriveSendMsg error encoding = ", + // EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding); + return; + } + + rawData = EmsMesg->pBody->ppMessageParts[ulSendIndex]->pData; + rawDataSize = EmsMesg->pBody->ppMessageParts[ulSendIndex]->size; + M4Encoding = EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding; + BytesSize = EMS_CaculateByteSize(rawDataSize, M4Encoding); + + if ( EmsMesg->pBody->ppMessageParts[ulSendIndex]->xData == 0x40 ) //EMS + { + //xmzhou_trace_string_value("Call Send EMS, rawDataSize = ", rawDataSize); + //xmzhou_trace_n_bytes((char *) rawData, (UINT32) rawDataSize); + + udh.len = rawData[0]; + memcpy(udh.data, &rawData[1], udh.len); + + //tar_data.len = BytesSize - udh.len - 1; + ulTextByteLengh = BytesSize - udh.len - 1; + + if ((M4Encoding == EEncodingGSM7Bit) ||(M4Encoding == EEncoding7BitASCII)) + { + tar_data.len = rawDataSize - (((udh.len + 1)*8 + 6) / 7); + OriginalOffest = (rawDataSize-tar_data.len) * 7 -(udh.len + 1) * 8; //filing bit of sms + + //tar_data.data will be fit with 8bit buffer for ACI + ems_prepare8bitBufferforACIfrom7bit(&rawData[udh.len+1], tar_data.len, OriginalOffest, tar_data.data); + } + else if ((M4Encoding == EEncodingUCS2) ||(M4Encoding == EEncodingUNICODE)) + { + memcpy(tar_data.data, &rawData[udh.len+1], ulTextByteLengh); + + tar_data.data[ulTextByteLengh] = 0x00; + tar_data.data[ulTextByteLengh + 1] = 0x00; + tar_data.len = ulTextByteLengh + 2; + } + else + { + memcpy(tar_data.data, &rawData[udh.len+1], ulTextByteLengh); + tar_data.len = ulTextByteLengh; + } + + + AciReturn = sAT_PlusCMGS_Gl(CMD_SRC_LCL, EmsNumber, NULL, &tar_data, &udh, sms_parameter.sc_addr, NULL, rp, ems_submit, ems_submit_error_proc); + //AciReturn = sAT_PlusCMGS_Gl(CMD_SRC_LCL, EmsNumber, NULL, &tar_data, NULL, sms_parameter.sc_addr, NULL, rp, ems_submit, ems_submit_error_proc); + if (AciReturn NEQ AT_EXCT) + { + //xmzhou_trace_string("ems_submit sAT_PlusCMGS_Gl fail!"); + } + } + else//SMS + { + tar_data.len = rawDataSize; + + if ((M4Encoding == EEncodingGSM7Bit) ||(M4Encoding == EEncoding7BitASCII)) + { + tar_data.len = rawDataSize; + OriginalOffest = 0; //filing bit of sms is 0 for text only + + //tar_data.data will be fit with 8bit buffer for ACI + ems_prepare8bitBufferforACIfrom7bit(rawData, tar_data.len, OriginalOffest, tar_data.data); + } + else + { + memcpy(tar_data.data, rawData, ulTextByteLengh); + tar_data.len = rawDataSize; + } + + AciReturn = sAT_PlusCMGS_Gl(CMD_SRC_LCL, EmsNumber,NULL, &tar_data, NULL, sms_parameter.sc_addr, NULL, rp, ems_submit, ems_submit_error_proc); + if (AciReturn NEQ AT_EXCT) + { + //xmzhou_trace_string("ems_submit sAT_PlusCMGS_Gl for sms fail!"); + } + } + + ulSendIndex++; + + return ; +}/* end of ems_submit */ + + +void EMS_RetriveSendMsg(UINT32 MsgId) +{ + T_MFW_SMS_INFO sms_parameter; + ESTATUS estatus; + UBYTE mr; + UBYTE numSeg; + + estatus = DAL_RetrieveMessageComplete(&EmsMesg, MsgId); + + if ( estatus != ENoError ) + { + //xmzhou_trace_string("EMS_RetriveSendMsg estatus != ENoError then return"); + return; + } + + if (EmsMesg->pBody->numMessageParts > 255) + { + //xmzhou_trace_string("EMS_RetriveSendMsg numMessageParts > 255 then return"); + return; + } + ulSendIndex = 0; + + SmsSend_get_config_data(&sms_parameter); + + if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingGSM7Bit) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncoding7BitASCII)) + { + sms_parameter.dcs = MFW_DCS_7bits; + } + else if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingUCS2) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingUNICODE)) + { + sms_parameter.dcs = MFW_DCS_UCS2; + } + else if ((EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncoding8BitASCII) || + (EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding == EEncodingGSM8Bit)) + { + sms_parameter.dcs = MFW_DCS_8bits; + } + else + { + //xmzhou_trace_string_value("EMS_RetriveSendMsg error encoding = ", + // EmsMesg->pHeader->messageTypeHeader.smsHeader.encoding); + return; + } + SmsSend_set_dcs_number (&sms_parameter); + + ems_submit(mr, numSeg); + + return; +} +//CRR: 25302 - xpradipg 10 Nov 2004 +/******************************************************************************* + + $Function: EmsSend_PHBK_exec_cb + + $Description: Populates the text structure with the phone Number and sends + an event to update the editor buffer + + $Returns: + + $Arguments: +*******************************************************************************/ + void EmsSend_PHBK_exec_cb(T_MFW_HND win, USHORT event, void *parameter) +{ +#ifdef NEW_EDITOR + T_ATB_TEXT text; /* Used to insert phone numbers into editors */ +#endif + + TRACE_FUNCTION ("EmsSend_PHBK_exec_cb()"); + + switch (event) + { + /* SPR#1428 - SH - New Editor changes. Insert phone number into editor */ +#ifdef NEW_EDITOR + case MMS_EMS_PHBK_NUMBER: /* Service centre number */ + text.dcs = ATB_DCS_ASCII; + text.len = strlen((char *)parameter); + text.data = (UBYTE *)parameter; + SEND_EVENT(number_edit, E_ED_INSERT, 0, (void *)&text); + break; +#endif /* NEW_EDITOR */ + break; + default: + TRACE_EVENT("Err: Default"); + break; + } +} + + + +static void EMSCreate_SEND_edit_cb( T_MFW_HND win, USHORT Identifier,UBYTE reason) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; + T_DISPLAY_DATA display_info; + char temp[100]; + T_MFW_HND parent_win, parent_parent_win;// xrashmic 13 Sep, 2004 MMI-SPR-24744 + + TRACE_EVENT_P1("EMSCreate_SEND_edit_cb() %d", Identifier); + + + switch (reason) + { + case INFO_KCD_LEFT: // confirm (press LEFT soft key) + if (Identifier==E_MODE_TOPIC) + { + // subject input + TRACE_EVENT_P1("topic: %s",topic); + SEND_EVENT(win,E_MODE_NUMBER, 0, 0); + // wait for getting number (below) and do it all together. + } + else if (Identifier==E_MODE_NUMBER) + { + // phone number input + TRACE_EVENT_P2("topic: %s, number: %s",topic,EmsNumber); + + //After phone number OK, retrive and send EMS + if (gEmsMsgId != MM_INVALID_MESSAGE_ID) + { + EMS_RetriveSendMsg(gEmsMsgId); + //xmzhou_trace_string("EMS_RetriveSendMsg return"); + } + else + { + //xmzhou_trace_string("EMSCreate_SEND_edit_cb MM_INVALID_MESSAGE_ID error!!!"); + } + // xrashmic 13 Sep, 2004 MMI-SPR-24744 + // Geting the Options and the Message preview screen. + parent_win= MMI_ParentWindow(win); + parent_parent_win= MMI_ParentWindow(parent_win); + + MMI_DestoryWindow(win); //This deletes the number entry screen + + // xrashmic 13 Sep, 2004 MMI-SPR-24744 + // Deleting the Options and the Message preview screens. + MMI_DestoryWindow(parent_win); + MMI_DestoryWindow(parent_parent_win); + //CRR: 25302 - xpradipg 10 Nov 2004 + //the number editor needs to be destroyed explicitly + AUI_edit_Destroy(number_edit); + } + else + { + TRACE_EVENT_P1("text: %s",text); + ems_g_safeString.size=2*(strlen(text)+1); + //ems_g_safeString.memHeader.freeFunc = DummyFreeFunc; + ems_g_safeString.memHeader.freeFunc = Free_MMISafeString; + + MMS_ConvertStringToUcs2((const MByte *)(text), + strlen(text), + ems_g_insertString); + ems_g_safeString.pString = ems_g_insertString; + DAL_PostMessage(EMG4_InsertString, EMG4_Type_NotUsed, (MESSAGE_PARAM)&ems_g_safeString, 0); + + MMI_DestoryWindow(win); + } + break; + //CRR: 25302 - xpradipg 10 Nov 2004 + //the alternate left softkey event is handled for the number entry screen + case INFO_KCD_ALTERNATELEFT: + bookPhonebookStart(win, PhbkFromMms); + break; + case INFO_KCD_RIGHT: + case INFO_KCD_HUP: + //CRR: 25302 - xpradipg 10 Nov 2004 + //the number editor needs to be destroyed explicitly + AUI_edit_Destroy(number_edit); + MMI_DestoryWindow(win); + break; + default: + TRACE_EVENT("Err: Default"); + break; + } +} + + +/******************************************************************************* + + $Function: EMSCreate_SEND_exec_cb + + $Description: Callback handler for events sent by the window itself + + $Returns: none + + $Arguments: win - current window + event - event id + parameter - optional data. +*******************************************************************************/ +//CRR: 25302 - xpradipg 10 Nov 2004 +//added new parameter Identifier - optional - but helps decode the data +static void EMSCreate_SEND_exec_cb(T_MFW_HND win, USHORT event, USHORT Identifier,void *parameter) +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; + T_AUI_EDITOR_DATA editor_data; + + TRACE_FUNCTION ("EMSCreate_SEND_exec_cb()"); + //xmzhou_trace_string_value("EMSCreate_SEND_exec_cb called", event); + + switch (event) + { + case MWM_CREATE: + break; + case E_MODE_TOPIC: + + AUI_edit_SetDefault(&editor_data); + AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE_SCROLL, COLOUR_EDITOR, EDITOR_FONT); + AUI_edit_SetEvents(&editor_data, E_MODE_TOPIC, TRUE, FOREVER, (T_AUI_EDIT_CB)EMSCreate_SEND_edit_cb); + AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtDelete, TxtTopics, NULL); + AUI_edit_SetAltTextStr(&editor_data, 0, NULL, TRUE, TxtSoftBack); + AUI_edit_SetMode(&editor_data,ED_MODE_ALPHA, ED_CURSOR_UNDERLINE); + //void AUI_edit_SetBuffer(T_AUI_EDITOR_DATA *editor_data, UBYTE dcs, UBYTE *text, USHORT size) + //void AUI_edit_SetBuffer(T_AUI_EDITOR_DATA *editor_data, UBYTE dcs, UBYTE *text, USHORT size); + AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII,(UBYTE*) topic, sizeof(topic)); + editor = AUI_edit_Start(win, &editor_data); + + + break; + case E_MODE_NUMBER: + TRACE_EVENT("enter number"); + //CRR: 23942 - xpradipg 26 Aug 2004 + //comment the hardcoded string. This will display an empty number editor. + //strcpy(EmsNumber,"01792910943");//"13816687053");//13801639314//01792910943 + //CRR: 25302 - xpradipg 10 Nov 2004 + //the changes are made to hold the alternate softkey and functionality + //for the same + AUI_edit_SetDefault(&editor_data); + AUI_edit_SetDisplay(&editor_data, PHNO_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); + AUI_edit_SetEvents(&editor_data, E_MODE_NUMBER, FALSE, FOREVER, (T_AUI_EDIT_CB)EMSCreate_SEND_edit_cb); + AUI_edit_SetTextStr(&editor_data, TxtSend, TxtDelete, TxtSmsEnterNumber, NULL); + AUI_edit_SetAltTextStr(&editor_data, 1, TxtNames, TRUE, TxtSoftBack); + //AUI_edit_SetMode(&editor_data,ED_MODE_ALPHA, ED_CURSOR_UNDERLINE); + AUI_edit_SetMode(&editor_data,0, ED_CURSOR_UNDERLINE); + memset(EmsNumber,'\0',sizeof(EmsNumber)); + AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE*)EmsNumber, sizeof(EmsNumber)); + number_edit = AUI_edit_Start(win, &editor_data); + +#if 0 + AUI_edit_SetDefault(&editor_data); + AUI_edit_SetDisplay(&editor_data, PHNO_EDITOR, COLOUR_EDITOR_XX, EDITOR_FONT); + AUI_edit_SetEvents(&editor_data, SMSSEND_ID_NBEDIT, FALSE, FOREVER, (T_AUI_EDIT_CB)SmsSend_NBEDIT_edit_cb); + AUI_edit_SetTextStr(&editor_data, TxtSend, TxtDelete, TxtSmsEnterNumber, NULL); + AUI_edit_SetAltTextStr(&editor_data, 1, TxtNames, TRUE, TxtSoftBack); + AUI_edit_SetMode(&editor_data, 0, ED_CURSOR_UNDERLINE); + AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, parent_data->edt_data.NumberBuffer, PHB_MAX_LEN); + parent_data->number_editor = AUI_edit_Start(parent_data->win, &editor_data); + +#endif + break; + case E_MODE_TEXT: + TRACE_EVENT("enter text"); + AUI_edit_SetDefault(&editor_data); + AUI_edit_SetDisplay(&editor_data, ZONE_FULL_SK_TITLE_SCROLL, COLOUR_EDITOR, EDITOR_FONT); + AUI_edit_SetEvents(&editor_data, E_MODE_TEXT, TRUE, FOREVER, (T_AUI_EDIT_CB)EMSCreate_SEND_edit_cb); + AUI_edit_SetTextStr(&editor_data, TxtSoftOK, TxtDelete, TxtMessage, NULL); + AUI_edit_SetAltTextStr(&editor_data, 0, NULL, TRUE, TxtSoftBack); + AUI_edit_SetMode(&editor_data,ED_MODE_ALPHA, ED_CURSOR_UNDERLINE); + //CRR: 23942 - xpradipg 26 Aug 2004 + //reset the text buffer + memset(text,'\0',MAX_EMS_TEXT_LEN); + AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE*)text, sizeof(text)); + editor = AUI_edit_Start(win, &editor_data); + + break; + //CRR :25302 - xpradipg 10 Nov 2004 + case MMS_EMS_PHBK_NUMBER: + // TRACE_EVENT("calling MmsSend_PHBK_exec_cb() from MmsCreate_send_exec_cb()"); + EmsSend_PHBK_exec_cb(number_edit, event, parameter); + break; + case MWM_ONDRAW: + break; + case MWM_DESTORY: + break; + default: + TRACE_EVENT("Err: Default"); + break; + } +} + + +/******************************************************************************* + + $Function: MMSCreate_SEND_start + + $Description: Create SMS send window + + $Returns: execution status + + $Arguments: parent_window - parent window. + UserData - SMS data +*******************************************************************************/ + +T_MFW_HND EMSCreate_SEND_start(T_MFW_HND parent_window, void *UserData) +{ + T_MFW_HND win; + TRACE_FUNCTION ("EMSCreate_SEND_start()"); + win=MMI_CreateWindow(parent_window, (T_DIALOG_FUNC) EMSCreate_SEND_exec_cb, (void*)UserData,0, 0,0); + if(UserData) SEND_EVENT(win, (USHORT)UserData, 0, 0); + return win; +} + +#define MMS_CREATE_OPTION + + +/******************************************************************************* + + $Function: MMSCreate_OPTexeSend + + $Description: Called when the user press send in the Option menu + + $Returns: event status. + + $Arguments: m - pointer to menu. + i - index if selected menu item. +*******************************************************************************/ + +static int EMSCreate_OPTexeSend(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + + DAL_PostMessage(EMG4_SaveMsg, EMG4_Type_NotUsed, 0, 0); + + EMSCreate_SEND_start(win, (void*)E_MODE_NUMBER); + + +} + +/******************************************************************************* + + $Function: EMSCreate_OPTexeInsPreDefPicture + + $Description: Displays list of the pre-defined pictures for EMS + //xrashmic 7 Dec, 2004 MMI-SPR-23965 + $Returns: + + $Arguments: + +*******************************************************************************/ + +static int EMSCreate_OPTexeInsPreDefPicture(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); +// MMSom_start(win, (MfwMnuAttr *) MMS_INSERT_PICTURE); +// pinghua modify for test EMS + MMSom_start(win, (MfwMnuAttr *) EMS_INSERT_PICTURE); +} + +/******************************************************************************* + + $Function: EMSCreate_OPTexeInsPicture + + $Description: Displays list of the user-defined pictures for EMS + //xrashmic 7 Dec, 2004 MMI-SPR-23965 + $Returns: + + $Arguments: + +*******************************************************************************/ +static int EMSCreate_OPTexeInsPicture(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + MMSom_start(win, (MfwMnuAttr *) EMS_INSERT_PICTURE_USR); +} + +/******************************************************************************* + + $Function: EMSCreate_OPTexeInsPreDefSound + + $Description: Displays list of the pre-defined sound for EMS + //xrashmic 7 Dec, 2004 MMI-SPR-23965 + $Returns: + + $Arguments: + +*******************************************************************************/ +static int EMSCreate_OPTexeInsPreDefSound(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); +// MMSom_start(win, (MfwMnuAttr *) MMS_INSERT_SOUND); +// pinghua modify for test EMS!! + MMSom_start(win, (MfwMnuAttr *) EMS_INSERT_SOUND); +} + +/******************************************************************************* + + $Function: EMSCreate_OPTexeInsSound + + $Description: Displays list of the user-defined sound for EMS + //xrashmic 7 Dec, 2004 MMI-SPR-23965 + $Returns: + + $Arguments: + +*******************************************************************************/ +static int EMSCreate_OPTexeInsSound(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + MMSom_start(win, (MfwMnuAttr *) EMS_INSERT_SOUND_USR); +} + + +static int EMSCreate_OPTexeInsText(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + EMSCreate_SEND_start(win, (void*)E_MODE_TEXT); +} +static int EMSCreate_OPTexeSave(MfwMnu* m, MfwMnuItem* i) +{ + DAL_PostMessage(EMG4_SaveMsg, EMG4_Type_NotUsed, 0, 0); + + // xreddymn Nov-27-2004 MMI-SPR-25278 + g_inSaveMode=TRUE; + //xrashmic 08 Feb, 2005 MMI-SPR-27853 + //Added few more parameters for this function + g_inSaveModeWin = information_dialog(TxtPleaseWait,TxtNull,NULL,NULL, TxtNull,TxtNull,FOREVER,0,NULL); +} +#if 0 +static int MMSCreate_OPTexeInsSlide(MfwMnu* m, MfwMnuItem* i) +{ + TRACE_EVENT("insert pic into OM"); + M4_InsertPicObjectIntoOM(); +} + +#endif +/******************************************************************************* + + $Function: MMSCreate_OPT_exec_cb + + $Description: Exec callback function for the Option window + + $Returns: none + + $Arguments: win - current window + event - event id + value - unique id + parameter - optional data. + +*******************************************************************************/ + +void EMSCreate_OPT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter) + /* callback handler for events sent to to trigger execution */ +{ + T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data; + TRACE_FUNCTION ("MMSCreate_OPT_exec_cb()"); + //xmzhou_trace_string_value("EMSCreate_OPT_exec_cb called", event); + switch (event) + { + case MWM_CREATE: + TRACE_EVENT("MWM_CREATE"); + /* initialization of administrative data */ + winShow(win); + break; + case MWM_ONDRAW: + dspl_ClearAll(); + displaySoftKeys(TxtSoftOK,TxtSoftBack); + break; + case MWM_DESTORY: + //xmzhou_trace_string("action_EMS_ResumeEditor in EMSCreate_OPT_exec_cb called"); + // xreddymn Sep-14-2004 MMI-SPR-24735: EMS editor is now resumed in EMSCreate_exec_cb + // action_EMS_ResumeEditor(); + break; + default: + return; + } +} + +/******************************************************************************* + + $Function: MMSCreate_OPT_start + + $Description: Start the creation of the main window for Create MMS + + $Returns: mfw window handler + + $Arguments: parent_window - Parent window handler + menuAttr - Menu attributes. + $Authors : pinghua add for EMS test + +*******************************************************************************/ +T_MFW_HND EMSCreate_OPT_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr) +{ + TRACE_FUNCTION ("SmsRead_R_start()"); + // xreddymn Sep-14-2004 MMI-SPR-24735: EMS editor is now suspended in EMSCreate_exec_cb + // action_EMS_SuspendEditor(); + return MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)EMSCreate_OPT_exec_cb,(void*)menuAttr, (T_MFW_CB)0, &EMSCreate_OPTAttrib,0); +} + + +static void EMSCreate_Delete_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason) +{ + TRACE_FUNCTION("EMSCreate_Delete_cb"); + + switch (reason) + { + case INFO_KCD_LEFT: + switch(identifier) + { + case EMS_DELETE_PICTURE: + DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); + DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteImage,NULL); + break; + case EMS_DELETE_SOUND: + DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); + DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteAudio,NULL); + break; + case EMS_DELETE_TEXT: + DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); + DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteText,NULL); + break; + } + MMI_DestoryWindow(win); + break; + case INFO_KCD_HUP: + case INFO_KCD_RIGHT: + case INFO_KCD_CLEAR: + MMI_DestoryWindow(win); + break; + default: + break; + } +} +static int EMSCreate_OPTexeDelPicture(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + T_DISPLAY_DATA display_info; + dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftBack, TxtPressOk, TxtDelete, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)EMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); + display_info.Identifier=EMS_DELETE_PICTURE; + info_dialog (win, &display_info); +} +static int EMSCreate_OPTexeDelSound(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + T_DISPLAY_DATA display_info; + dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftBack, TxtPressOk, TxtDelete, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)EMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); + display_info.Identifier=EMS_DELETE_SOUND; + info_dialog (win, &display_info); +} +static int EMSCreate_OPTexeDelText(MfwMnu* m, MfwMnuItem* i) +{ + T_MFW_HND win = mfwParent(mfw_header()); + T_DISPLAY_DATA display_info; + dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftBack, TxtPressOk, TxtDelete, COLOUR_STATUS); + dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)EMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); + display_info.Identifier=EMS_DELETE_TEXT; + info_dialog (win, &display_info); +} + +#if 0 +void FUN_TRACE_EVENT(char * text, unsigned long param) +{ + TRACE_EVENT_P1(text, param); +} +#endif + + +/******************************************************************************* + + $Function: ems_cb + + $Description: Call back for ems_dialog + xrashmic 13 Sep, 2004 MMI-SPR-24744 + + $Returns: None. + + $Arguments: +*******************************************************************************/ + +static void ems_cb(T_MFW_HND win, USHORT identifier, USHORT reason) +{ + TRACE_FUNCTION("ems_cb"); +} + + +/******************************************************************************* + + $Function: ems_dialog + + $Description: To display the indication of EMS sent + xrashmic 13 Sep, 2004 MMI-SPR-24744 + + $Returns: None. + + $Arguments: +*******************************************************************************/ + +void ems_dialog(USHORT TxtId1, USHORT TxtId2, USHORT SoftKeyTxtId1, USHORT SoftKeyTxtId2, int timer) +{ + T_DISPLAY_DATA display_info; + T_MFW_HND parent_win = mfwParent(mfw_header()); + T_MFW_HND win; + TRACE_FUNCTION("ems_dialog"); + dlg_initDisplayData_TextId( &display_info, SoftKeyTxtId1, SoftKeyTxtId2, TxtId1, TxtId2, COLOUR_WAP_POPUP); + dlg_initDisplayData_events( &display_info,(T_VOID_FUNC)ems_cb, timer, KEY_RIGHT); + display_info.Identifier = 0; + win=info_dialog(parent_win, &display_info); + win_show(win); + dspl_Enable(1); + return; +} + + + + +#undef MMI_MMSCREATE_C