/******************************************************************************* 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: MmiMMSCreate.h $Revision: 1.0 $Author: Yan Bin(bin-yan@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 Nov 05, 2005 REF: OMAPS00049502 Sumanth Kumar. C Description: MMS: During MMS Reply, Enter Number shows Empty. Solution: Senders number is extracted from the Message Header and is displayed. xrashmic 17 Jun, 2005 MMI-SPR-29992 For sending MMS on CHT sim, the FROM address should be NULL. May 11 2005 REF: MMI-SPR-29887 x0012849 To Implement the deferred MMS retrieval. xreddymn Mar-08-2005, MMI-SPR-28820 Fix for flickering issue (drawing occuring more than once) when forwarding MMS and creating new MMS xreddymn Feb-07-2005, MMI-SPR-28277 Fix for blank content on entering the MMS Editor-Viewer when forwarding MMS messages. xreddymn Mar-04-2005 MMI-SPR-26144 Added changes for cancel sending MMS xrashmic 08 Feb, 2005 MMI-SPR-27853 Error handling in sending MMS and also displaying the progress value x0012849 Feb- 03 -2005 : MMI-SPR-28224 To allow user to scroll up and down if contents of MMS are bigger than screen size. xrashmic 14 Dec, 2004 MMI-SPR-23921 Implementing the forward functionality for MMS xrashmic 30 Nov, 2004 MMI-SPR-26145 xrashmic 22 Dec, 2004 MMI-SPR-27798 Moving the MMS to sent folder after it is sent xrashmic 3 Nov, 2004 MMI-SPR-26145 Deleting the compose and option window after sending the MMS 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 from the phonebook while sending MMS/EMS. Solution: The new feature to select the number from phonebook while sending MMS/EMS is added xrashmic 9 Nov, 2004 MMI-SPR-26147 Description: The inserted text in the MMS message was not editable and the text editor was limited to a maximum of 32 characters. Solution: The text buffer is memset to '\0' only once at the time of MMS create - MWM_CREATE and increased the editor max size to 512. xrashmic 6 Oct, 2004 MMI-SPR-25147 MMS not saving to unsent folder for all scenarios. MMI-SPR-24735: Sep-16-2004 - xreddymn Changes related to EMS screen flickering issue MMI-SPR-24733, Sep-17-2004 - xreddymn Modified case MWM_REFRESH to prevent edit mode being disabled 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. xreddymn 03 Sep, 2004 Display issue MMI-SPR-23961 related changes: Modified suspend and resume operation of MMS editor CRR:23923 - xpradipg 06 Sept 2004 Description: MMS Preview not working Solution: The preview is displayed in a new window by posting the appropriate events to MMS client 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 xreddymn 20 Aug, 2004 Display issue MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): Added mechanism to prevent MMS/EMS display, while outside the MMS/EMS editor MMS save issue MMI-SPR-24113 (TII_MMS53): Prevented creation of entries for unsaved messages on pressing back from MMS editor xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 All the status screen, .i.e sending, receiving etc. are displayed separatly for the MMS module. Previously the WAP screens were being used. Bug Id 23 : 16 Aug, 2004 - xpradipg Description:Remove insert slide from 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 "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"//CRR: 25302 - xpradipg 10 Nov 2004#include "mmiSmsMenu.h"#include "mmismssend.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 "AUIWap.h"//xmzhou02 to include definition for ALL_WIN & WAP_MMS//GW 29/11/01 - added header file - removed extern void callNumber(UBYTE* number);MfwWin* getWinData( MfwHnd win);//xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42extern int MMSactive;extern void M4_DebugMessage(unsigned long para);//CRR:23923 - xpradipg 06 Sept 2004extern int MMSBox_Read_kbd_cb (MfwEvt e, MfwKbd *k);//xrashmic 30 Nov, 2004 MMI-SPR-26145//xrashmic 20 Dec, 2004 MMI-SPR-23921T_MFW_HND mms_create_opt_hnd=NULL;T_MFW_HND mms_create_hnd=NULL;//xrashmic 14 Dec, 2004 MMI-SPR-23921T_MFW_HND mms_Fwdcreate_hnd=NULL;extern MM_S_MESSAGE_HEADER_LIST* g_pMessageHeaderList;extern int g_currentMessage;MM_S_MESSAGE_HEADER *fwd_msg_header;/********************************************************************* DYNAMIC MENU WINDOW. DECLARATION**********************************************************************/static int MMSCreate_OPTexeSend(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeInsPicture(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeInsSound(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeInsText(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeInsSlide(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeDelPicture(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeDelSound(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeDelText(MfwMnu* m, MfwMnuItem* i);static int MMSCreate_OPTexeSave(MfwMnu* m, MfwMnuItem* i);//CRR:23923 - xpradipg 06 Sept 2004static int MMSCreate_OPTpreviewMsg(MfwMnu* m, MfwMnuItem* i);static MfwMnuItem MMSCreate_OPTDeleteItems [] ={ {0,0,0,(char *)TxtMMSDeletePicture,0,(MenuFunc)MMSCreate_OPTexeDelPicture,item_flag_none}, {0,0,0,(char *)TxtMMSDeleteSound,0,(MenuFunc)MMSCreate_OPTexeDelSound,item_flag_none}, {0,0,0,(char *)TxtMMSDeleteText,0,(MenuFunc)MMSCreate_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 */ MMSCreate_OPTDeleteItems, /* with these items */ sizeof(MMSCreate_OPTDeleteItems)/sizeof(MfwMnuItem), /* number of items */ COLOUR_LIST_SMS, TxtNull, MNUATTRSPARE};static MfwMnuItem MMSCreate_OPTItems [] ={ {0,0,0,(char *)TxtSend,0,(MenuFunc)MMSCreate_OPTexeSend,item_flag_none}, {0,0,0,(char *)TxtMMSInsertPicture,0,(MenuFunc)MMSCreate_OPTexeInsPicture,item_flag_none}, {0,0,0,(char *)TxtMMSInsertSound,0,(MenuFunc)MMSCreate_OPTexeInsSound,item_flag_none}, {0,0,0,(char *)TxtMMSInsertText,0,(MenuFunc)MMSCreate_OPTexeInsText,item_flag_none}, //Bug Id 23 : 16 Aug, 2004 - xpradipg //Description:Remove insert slide from options menu //{0,0,0,(char *)TxtMMSInsertSlide,0,(MenuFunc)MMSCreate_OPTexeInsSlide,item_flag_none}, {0,0,0,(char *)TxtSave,0,(MenuFunc)MMSCreate_OPTexeSave,item_flag_none}, {0,0,0,(char *)TxtMMSDelete,&MMSCreate_OPTDeleteAttrib,0,item_flag_none}, //CRR:23923 - xpradipg 06 Sept 2004 //Added the functionality for preview message //xrashmic 6 Oct, 2004 MMI-SPR-25147 //Since the Compose screen itself is in preview mode, no need for this //in the options menu // {0,0,0,(char *)TxtMMSPreview,0,(MenuFunc)MMSCreate_OPTpreviewMsg,item_flag_none}};static MfwMnuAttr MMSCreate_OPTAttrib ={ &SmsRead_R_OPTArea, MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */ -1, /* use default font */ MMSCreate_OPTItems, /* with these items */ sizeof(MMSCreate_OPTItems)/sizeof(MfwMnuItem), /* number of items */ COLOUR_LIST_SMS, TxtNull, MNUATTRSPARE};#if 1// bernards bbssoo 25.9.2003 begintypedef enum { MMI2_NEW_MSG= -9, MMI2_DELETE_MSG, MMI2_STORE_MSG_HDR, MMI2_SEND_MSG, MMI2_GET_MSG, MMI2_FWD_MSG, MMI2_PROCESSACK}MMI2_EVT_TYPE;typedef struct { EVT_STRUCT evtStruct; MMI2_EVT_TYPE eType;}MMI2_EVT_STRUCT;typedef MMI2_EVT_STRUCT* MMI2_EVT_HANDLE;static ESTATUS MMI_2_EventHandler(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle);MM_S_MESSAGE_HEADER *msgHeader=NULL;// ronaldc 9-4 to 9-5: add startMM_S_MESSAGE_HEADER g_msg_header;EVT_STRUCT g_event_struct;EVT_STRUCT g_doc_event_struct;MM_MESSAGE_ID g_msg_id;EV_S_NEWSLIDE_INFO g_NewSlideInfo;UCS2 g_insertString[128] = {'t','e','s','t',0};MSafeString g_safeString;BOOL g_inSendMode=FALSE;//xreddymn Aug-16-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): To keep track of MMS displayBOOL g_M4_display_active=FALSE;//xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): To keep track of saved messagesBOOL g_M4_message_saved=FALSE;BOOL g_inSaveMode=FALSE;//xreddymn Aug-26-2004extern UINT8 gucMmsTitleBarHeight;//xreddymn Nov-26-2004 MMI-SPR-25278T_MFW_HND g_inSaveModeWin;//xrashmic 08 Feb, 2005 MMI-SPR-27853extern void AUI_mms_status_notify(int status);//xrashmic 9 Nov, 2004 MMI-SPR-26147static char text[MAX_MMS_TEXT_LEN];//xreddymn Feb-02-2005 MMI-SPR-28277: Used to trigger EMG4_Refresh when forwarding MMSBOOL gMmsForwardStart=FALSE;void DummyFreeFunc(void *pMemBlock){ return;}//xrashmic 08 Feb, 2005 MMI-SPR-27853int progressValue=0;ESTATUS MMI_1_EventHandler(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle){ M4_DebugMessage((unsigned long) 0x9700); M4_DebugMessage((unsigned long) aeId); M4_DebugMessage((unsigned long) aeType); M4_DebugMessage((unsigned long) ampParam); M4_DebugMessage((unsigned long) evtHandle); switch(aeId) {#if 0 case EMG4_PlayComplete: switch(MMI1EvtHandle->mmievtType) { case MMI1_EV_PLAY_MSG: // Message has finished playing, so tell user thru EV window aPoint.uX = 0; aPoint.uY = 0; DeviceClearOffscreenBuffer(); DAL_DrawText(&aPoint, _T("(End of show)"), 13, afmStyle, &aColour); DeviceUpdateScreen(); break; }; break; case EMG4_PreviewComplete: switch(MMI1EvtHandle->mmievtType) { case MMI1_EV_CREATE_MSG: case MMI1_EV_OPEN_MSG: /*Call Preview Routine to post end Preview */ if(l_bIsPreview) { MMI_1_Preview(g_hwndMMI1); } break; default: break; }; break;#endif/********************* Editor Viewer CallBacks *********************/ case EMG4_FileOpDone: M4_DebugMessage((unsigned long) 0x9701); // xreddymn Feb-02-2005 MMI-SPR-28277: If forwarding an MMS message, post EMG4_Refresh if(gMmsForwardStart == TRUE) { // xreddymn Mar-08-2005 MMI-SPR-28820: change sequence of posting // EMG4_Preview and EMG4_Resume action_PreviewMessage(); action_ResumeEditor(); gMmsForwardStart = FALSE; } if (g_inSendMode == TRUE) { M4_DebugMessage((unsigned long) 0x9702); //xrashmic 08 Feb, 2005 MMI-SPR-27853 //Indicate the saving is done and sending has started // xreddymn Mar-04-2005 MMI-SPR-26144 // MMS send progress is updated by WAP FSM // progressValue=0; // AUI_mms_status_notify(MMS_SEND_PROGRESS); MMI_2_OnSendMessage(); //xrashmic 08 Feb, 2005 MMI-SPR-27853 //Indicate the saving is done and sending has started // progressValue=0; // AUI_mms_status_notify(MMS_SEND_PROGRESS); g_inSendMode=FALSE; // xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): To keep track of saved messages g_M4_message_saved=TRUE; } // xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): To keep track of saved messages if(g_inSaveMode == TRUE) { winDelete(g_inSaveModeWin); g_inSaveMode=FALSE; g_M4_message_saved=TRUE; // xreddymn Nov-27-2004 MMI-SPR-25278: Display "Saved" dialog here //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); } break; // xrashmic Nov-17-2004 MMI-SPR-25278: Changes for FFS error handling case EMG4_OpError: { MDword reason; // xreddymn Feb-02-2005 MMI-SPR-28277: If forwarding an MMS message and OpenDocument fails, reset gMmsForwardStart if(gMmsForwardStart==TRUE) { gMmsForwardStart=FALSE; } if(g_inSaveMode == TRUE) { winDelete(g_inSaveModeWin); g_inSaveMode=FALSE; g_M4_message_saved=FALSE; } reason = (ampParam & 0x3FFF); switch(reason) { case EFileOpFailed: //xrashmic 08 Feb, 2005 MMI-SPR-27853 //When sending MMS if there are file op erros, we need to handle them here if (g_inSendMode == TRUE) { g_inSendMode=FALSE; AUI_mms_status_notify(MMS_SEND_FAIL); } else { // xreddymn Nov-27-2004 MMI-SPR-25278: Display "Error" dialog here //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; default: break; } return ENoError;}ESTATUS Handler_MM_CreateMessageEntryAsync(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle){ ESTATUS eStatus;// TRACE_EVENT("MAGIC4: Handler_MM_CreateMessageEntryAsync()"); g_msg_id = (MM_MESSAGE_ID) ampParam; M4_DebugMessage((unsigned long) 0x30000); M4_DebugMessage((unsigned long) g_msg_id); g_doc_event_struct.handler = MMI_1_EventHandler; g_doc_event_struct.parentEvtHandle = NULL; g_doc_event_struct.pData = NULL; g_doc_event_struct.userFlag = 0; eStatus=EV_CreateDocument(&g_doc_event_struct, EMtMmsSmil, g_msg_id); if (eStatus!=ENoError) { M4_DebugMessage((unsigned long) 0x34000); M4_DebugMessage((unsigned long) eStatus); } g_NewSlideInfo.omh.freeFunc = DummyFreeFunc;// xreddymn Aug-27-2004 MMI-SPR-23919 (TII_MMS6): Modified slide duration to infinite// g_NewSlideInfo.slideDuration = 5000; g_NewSlideInfo.slideDuration = 0; g_NewSlideInfo.slidePosition = 1;// rvf_delay(10); DAL_PostMessage(EMG4_InsertNewSlide, EMG4_Type_NotUsed, (MESSAGE_PARAM)&g_NewSlideInfo, 0);#if 0 // rvf_delay(10); DAL_PostMessage(EMG4_InsertString, EMG4_Type_NotUsed, (MESSAGE_PARAM)g_TestString, 0);// rvf_delay(10); DAL_PostMessage(EMG4_SaveMsg, EMG4_Type_NotUsed, 0, 0);// rvf_delay(10); DAL_PostMessage(EMG4_Exit, EMG4_Type_NotUsed, 0, 0);// rvf_delay(10);#endif M4_DebugMessage((unsigned long) 0x30001); return ENoError;}void OrthusCreateMessageEntryAsync(void){ ESTATUS eResult; TRACE_EVENT("MAGIC4: OrthusCreateMessageEntryAsync()"); g_msg_header.memHdr.freeFunc = DummyFreeFunc; g_msg_header.id = MM_INVALID_MESSAGE_ID; g_msg_header.messageFlags = 0; g_msg_header.reference = 0; g_msg_header.read = EFalse; g_msg_header.complete = EFalse; g_msg_header.drmSet = EFalse; memset(&(g_msg_header.timestamp), 0, sizeof(MM_S_TIME_STAMP)); g_msg_header.timestamp.type = ETimestampAbsolute; g_msg_header.location = EMlDraft; g_msg_header.type = EMtMmsSmil; g_msg_header.messageTypeHeader.mmsHeader.pBccList = NULL; g_msg_header.messageTypeHeader.mmsHeader.pCcList = NULL; g_msg_header.messageTypeHeader.mmsHeader.pContentType = NULL; g_msg_header.messageTypeHeader.mmsHeader.pFrom = NULL; g_msg_header.messageTypeHeader.mmsHeader.pMmsTransactionId = NULL; g_msg_header.messageTypeHeader.mmsHeader.pServerMessageId = NULL; g_msg_header.messageTypeHeader.mmsHeader.pSubject = NULL; g_msg_header.messageTypeHeader.mmsHeader.pToList = NULL; g_msg_header.messageTypeHeader.mmsHeader.pUrl = NULL; g_msg_header.messageTypeHeader.mmsHeader.size = 0; g_msg_header.messageTypeHeader.mmsHeader.version = 1; g_msg_header.messageTypeHeader.mmsHeader.deliveryReport = EFalse; g_msg_header.messageTypeHeader.mmsHeader.readReport = EFalse; memset(&(g_msg_header.messageTypeHeader.mmsHeader.expiryTime), 0, sizeof(MM_S_TIME_STAMP)); memset(&(g_msg_header.messageTypeHeader.mmsHeader.currentDate), 0, sizeof(MM_S_TIME_STAMP)); g_msg_header.messageTypeHeader.mmsHeader.currentDate.type = ETimestampAbsolute; g_msg_header.messageTypeHeader.mmsHeader.expiryTime.type = ETimestampRelative; g_msg_header.messageTypeHeader.mmsHeader.priority = EMPnormal; g_msg_header.messageTypeHeader.mmsHeader.setDeferred = EFalse; g_msg_header.messageTypeHeader.mmsHeader.setRejected = EFalse; g_msg_header.messageTypeHeader.mmsHeader.expired = EFalse; g_msg_header.messageTypeHeader.mmsHeader.retrieved = EFalse; g_msg_header.messageTypeHeader.mmsHeader.readRemote = EFalse; g_event_struct.handler = Handler_MM_CreateMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; M4_DebugMessage((unsigned long) g_event_struct.handler); eResult = MM_CreateMessageEntryAsync((EVT_HANDLE) &g_event_struct, &g_msg_header); if(eResult!=ENoError) { TRACE_EVENT("MAGIC4: MM_CreateMessageEntryAsync() fail"); } // xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): To keep track of when the MMS is saved else { g_M4_message_saved=FALSE; } g_safeString.memHeader.freeFunc = DummyFreeFunc; /*!< Pointer to memory deallocation function */ g_safeString.size=10; /*!< size of the string */ g_safeString.pString=g_insertString; /*!< Pointer to UCS2 string */}/*************************************************************************//** Send the selected message... \param hWnd [in] Of this Window...i.e MMI_2 \return <???>/*************************************************************************/BOOL MMI_2_OnSendMessage(){ //MInt32 nSel=0; MMI2_EVT_HANDLE pHandle=NULL; ESTATUS eResult=ENoError; pHandle = (MMI2_EVT_HANDLE)malloc(sizeof(MMI2_EVT_STRUCT)); if(!pHandle) { //M4_SIM_DisplayError(hWnd,_T("Mem Alloc Error")); return TRUE; } pHandle->evtStruct.handler = MMI_2_EventHandler; pHandle->evtStruct.parentEvtHandle = NULL; pHandle->evtStruct.pData = NULL; pHandle->evtStruct.userFlag = 0; pHandle->eType = MMI2_SEND_MSG; M4_DebugMessage((unsigned long) 0x94001); eResult= TM_SendMessageAsync((EVT_HANDLE)pHandle, g_msg_id); M4_DebugMessage((unsigned long)g_msg_id); if(eResult!=ENoError) { //M4_SIM_ReportError(eResult,hWnd); free(pHandle); pHandle=NULL; } return TRUE;}/*********************///NM moved this function to mmimmsbox.c#if 0UCS2 * MMS_ConvertStringToUcs2 (const MByte * const p8BitString, const MUint uLength, UCS2 * pUcs2String){ if ((UCS2 *) NULL == pUcs2String) { pUcs2String = (UCS2 *)MM_MALLOC(sizeof(UCS2) * (1 + uLength)); } if ((UCS2 *)NULL != pUcs2String) { register MUint uIndex; for (uIndex = 0; uIndex < uLength; ++uIndex) { pUcs2String[uIndex] = (UCS2)p8BitString[uIndex]; } pUcs2String[uIndex] = NULLCHAR; } return pUcs2String;}#endif/******************************************************************************* $Function: cancel_TMsend $Description: Posts MMS send cancel to MMS client $Returns: none $Arguments: none*******************************************************************************///xrashmic 26144void cancel_TMsend(void){ char temp[100]; ESTATUS eResult=ENoError; TRACE_EVENT("cancelSendingMMS"); sprintf(temp, "####cancelSendingMMS"); M4_DebugStringMessage(temp, strlen(temp), 0); eResult= TM_SendMessageCancel( g_msg_id); if(eResult!=ENoError) { sprintf(temp, "####cancelSendingMMS done"); M4_DebugStringMessage(temp, strlen(temp), 0); } }//May 17 2005 REF: MMI-SPR-29887 x0012849// Called when user cancels the recieving operationvoid cancel_TMrecieve(void){ ESTATUS eResult=ENoError; TRACE_EVENT("cancel_TMrecieve"); eResult= TM_GetMessageCancel ( g_pMessageHeaderList->ppList[g_currentMessage].id); if(eResult!=ENoError) { TRACE_EVENT("CancelRecievingMMS done"); } }//Jun 28 2005 REF: MMI-SPR-29887 x0012849 ESTATUS Handler_MM_DeleteMessageBodyEntryAsync(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle){ return ENoError;}//Jun 28 2005 REF: MMI-SPR-29887 x0012849 void Delete_Body(void) { g_event_struct.handler = Handler_MM_DeleteMessageBodyEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; MM_DeleteMessageBodyAsync((EVT_HANDLE) &g_event_struct, g_pMessageHeaderList->ppList[g_currentMessage].id); }void MMI_2_SaveHeaderInfo(char *topic, char *number){ //char from[]="13801639314/TYPE=PLMN";//bernard //char from[]="60765943/TYPE=PLMN"; char from[]="/TYPE=PLMN"; UCS2 *pUcsFrom= NULL; UCS2 *pUcsTopic = NULL; UCS2 *pUcsNumber = NULL; MMI2_EVT_HANDLE evtHandle=NULL; ESTATUS eResult; char temp[100]; char tempNumber[100]; sprintf(temp, "MMI_2_SaveHeaderInfo called %s, %s", topic, number); //M4_DebugStringMessage(temp, strlen(temp), 0); //xrashmic 17 Jun, 2005 MMI-SPR-29992 //For sending MMS on CHT sim, the FROM address should be NULL. /*pUcsFrom= (UCS2 *)MMS_ConvertStringToUcs2((const MByte *)from, GetByteStringLength((const MByte *)from), pUcsFrom); */ pUcsTopic = (UCS2 *)MMS_ConvertStringToUcs2((const MByte *)topic, GetByteStringLength((const MByte *)topic), pUcsTopic); if (NULL == pUcsTopic) { sprintf(temp, "MMI_2_SaveHeaderInfo called pUcsTopic = NULL"); //M4_DebugStringMessage(temp, strlen(temp), 0); return; } sprintf(temp, "MMI_2_SaveHeaderInfo number=%s", number); //M4_DebugStringMessage(temp, strlen(temp), 0); strcpy(tempNumber, number); strcat(tempNumber,"/TYPE=PLMN"); sprintf(temp, "MMI_2_SaveHeaderInfo tempNumber=%s", tempNumber); //M4_DebugStringMessage(temp, strlen(temp), 0); pUcsNumber= (UCS2 *)MMS_ConvertStringToUcs2((const MByte *)tempNumber, GetByteStringLength((const MByte *)tempNumber), pUcsNumber); if (pUcsNumber == NULL) { sprintf(temp, "MMI_2_SaveHeaderInfo pUcsNumber == NULL"); //M4_DebugStringMessage(temp, strlen(temp), 0); } if (NULL == pUcsNumber) { MMS_FREE(pUcsTopic); return; }//----------------------- eResult= DAL_RetrieveMessageHeader(g_msg_id,&msgHeader); if(eResult!=ENoError) { M4_DebugMessage((unsigned long)0x4400); return; } msgHeader->messageTypeHeader.mmsHeader.pFrom = pUcsFrom; msgHeader->messageTypeHeader.mmsHeader.pToList = pUcsNumber; msgHeader->messageTypeHeader.mmsHeader.pSubject = pUcsTopic;//----------------------- /* Form the event Handler */ evtHandle = (MMI2_EVT_HANDLE)malloc(sizeof(MMI2_EVT_STRUCT)); evtHandle->evtStruct.handler = MMI_2_EventHandler; evtHandle->evtStruct.parentEvtHandle = NULL; evtHandle->evtStruct.pData = NULL; evtHandle->evtStruct.userFlag = 0; evtHandle->eType = MMI2_STORE_MSG_HDR; DAL_ModifyMessageParamsAsync((EVT_HANDLE)evtHandle,g_msg_id,msgHeader); //msgHeader->memHdr.freeFunc(msgHeader);}/*************************************************************************//** EVENT HANDLER: Message Dialog (MMI_2) \param aeId [in] EVENT_ID \param ampParam [in] MESSAGE_PARAM \param evtHandle [in] EVT_HANDLE \return None [out] /*************************************************************************/ESTATUS MMI_2_EventHandler(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle){ MMI2_EVT_HANDLE MMI2evtHandle = (MMI2_EVT_HANDLE) EvtHandle; BOOL bProcessed = FALSE; T_WAP_DATA *data = AUI_wap_data(); data->View->Title[0] = 0; M4_DebugMessage((unsigned long) 0x9800); M4_DebugMessage((unsigned long) aeId); M4_DebugMessage((unsigned long) aeType); M4_DebugMessage((unsigned long) ampParam); M4_DebugMessage((unsigned long) EvtHandle); switch(aeId) { case EMG4_NetworkOpDone: switch(MMI2evtHandle->eType) { case MMI2_SEND_MSG: //xrashmic 22 Dec, 2004 MMI-SPR-27798 // MMS send is successful, save it to sent folder MM_BeginUpdateHeader(g_msg_id); MM_UtilSetFolder(g_msg_id,EMlSent); MM_CommitUpdateHeaderAsync(NULL, g_msg_id); //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 // To display the MMS send Success dialog here. //xrashmic 08 Feb, 2005 MMI-SPR-27853 AUI_mms_status_notify(MMS_SEND_SUCCESS); bProcessed=TRUE; break; default: break; } break; //xrashmic 08 Feb, 2005 MMI-SPR-27853 // Need to display to the user the send progress infomation case EMG4_OpProgress: switch(MMI2evtHandle->eType) { case MMI2_SEND_MSG: // xreddymn Mar-04-2005 MMI-SPR-26144 // MMS progress is updated by WAP FSM // progressValue=ampParam; // AUI_mms_status_notify(MMS_SEND_PROGRESS); break; default: break; } break; //xrashmic 08 Feb, 2005 MMI-SPR-27853 //Need to catch the errors when the sending fails case EMG4_OpError: switch(MMI2evtHandle->eType) { case MMI2_SEND_MSG: AUI_mms_status_notify(MMS_SEND_FAIL); break; } break; } if(MMI2evtHandle && bProcessed) { free(MMI2evtHandle); MMI2evtHandle= NULL; } return ENoError;}/* 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_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_PreviewMessage(){ /* inform magic4 editor to preview the current message */ DAL_PostMessage(EMG4_Preview,EMG4_Type_NotUsed,0,NULL);}/* 4. After action_PreviewMessage has been completed, MMI then calls action_SuspendEditor() to suspend the magic4 client and resume the menu system */void action_SuspendEditor(){ /* suspend magic4 editor */ DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_PlayMode,EMG4_Type_NotUsed, EPlayModeStop,NULL); /* if necessary, add code here to resume display of the menu system */}/* 5. Done */#endif// ronaldc 9-4 to 9-5: add end/******************************************************************************* $Function: MMSCreate_exec_cb $Description: Exec callback function of the MMS Create window $Returns: none $Arguments: win - window handler event - mfw event parameter - optional data.*******************************************************************************/void MMSCreate_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_exec_cb()"); switch (event) { case MWM_CREATE: /* initialization of administrative data */ TRACE_EVENT("MWM_CREATE"); //yanbin init MMS create bbssoo - EV_createmessageasync() // ronaldc 9-5 OrthusCreateMessageEntryAsync(); //TraceOrthusCreateMessageEntryAsyncReturn(); //xrashmic 9 Nov, 2004 MMI-SPR-26147 //The text buffer is memset to '\0' only once at the time of MMS create - MWM_CREATE memset(text,'\0',MAX_MMS_TEXT_LEN); //xreddymn Aug-16-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); // xreddymn Aug-26-2004: Modified Title display { unsigned short width, height; DeviceGetScreenMetrics(&width,&height); dspl_SetBgdColour(COL_White); dspl_Clear(0, gucMmsTitleBarHeight, width-1, height-1); resources_setTitleColour(COLOUR_EDITOR); dspl_Clear(0, 0, width-1, gucMmsTitleBarHeight-1); dspl_TextOut(1, 0, DSPL_TXTATTR_HLIGHT,"Create MMS"); } //yanbin: here call Magic4 functions to show MMS slides // bbssoo - After Creating MMS, display the "create MMS display" in the middle screen. // xreddymn Mar-08-2005 MMI-SPR-28820: changed order of posting EMG4_Preview and EMG4_Resume action_PreviewMessage(); action_ResumeEditor(); //xrashmic 6 Oct, 2004 MMI-SPR-25147 //comenting action_SuspendEditor() as the Sound was not heard in the //compose screen //action_SuspendEditor(); displaySoftKeys(TxtSoftOptions,TxtSoftBack); dspl_Enable(1); break; case MWM_DESTORY: TRACE_EVENT("MWM_DESTROY"); //xreddymn Sep-16-2004: Changes related to MMI-SPR-24735 dspl_Enable(1); DAL_PostMessage(EMG4_Exit, EMG4_Type_NotUsed, 0, 0); //xreddymn Aug-16-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display g_M4_display_active=FALSE; //xrashmic 20 Dec, 2004 MMI-SPR-23921 // On deleting the window, set the handler to NULL mms_create_hnd=NULL; break; case MWM_SUSPEND: TRACE_EVENT("MWM_SUSPEND"); //xreddymn Sep-16-2004: Changes related to MMI-SPR-24735 dspl_Enable(1); //xreddymn Aug-16-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display g_M4_display_active=FALSE; // xreddymn Sep-03-2004 MMI-SPR-23961 DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_PlayMode,EMG4_Type_NotUsed, EPlayModeStop,NULL); //xrashmic 6 Oct, 2004 MMI-SPR-25147 //The editor needs to be in EDIT mode when inserting, Saving, etc. DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); break; case MWM_RESUME: TRACE_EVENT("MWM_RESUME"); //xreddymn Aug-16-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-03-2004 MMI-SPR-23961 // xreddymn Sep-17-2004 MMI-SPR-24733: Removed EMG4_Preview from here as it was disabling edit mode // xreddymn Sep-17-2004, Removed EMG4_Resume here as it is redundant (See MWM_ONDRAW of this function) // DAL_PostMessage(EMG4_Preview,EMG4_Type_NotUsed,0,NULL); // DAL_PostMessage(EMG4_Resume,EMG4_Type_NotUsed,0,NULL); break; default: break; }}// xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): Delete message handlerESTATUS Handler_MM_DeleteMessageEntryAsync(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle){ return ENoError;}/******************************************************************************* $Function: MMSCreate_kbd_cb $Description: Exec callback function for the Option window $Returns: execution status $Arguments: e - event id k - keyboard info*******************************************************************************/static int MMSCreate_kbd_cb (MfwEvt e, MfwKbd *k) /* SmsRead_R_OPT keyboard event handler */{ T_MFW_HND win = mfwParent(mfw_header()); TRACE_FUNCTION ("MMSCreate_kbd_cb()"); if (e & KEY_LONG) { switch (k->code) { case KCD_HUP: /* back to previous menu */ //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 //Once outside the MMS create screen, this flag needs to be unset MMSactive=FALSE; /* xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): Delete message on pressing back, * if it has not been saved. (Otherwise, it appears in the Unsent messages folder) */ if(g_M4_message_saved == FALSE) { g_event_struct.handler = Handler_MM_DeleteMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; MM_DeleteMessageAsync((EVT_HANDLE) &g_event_struct, g_msg_id); } MMI_DestoryWindow(win); break; case KCD_RIGHT: /* Power Down */ return MFW_EVENT_REJECTED; /* handled by idle */ default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } else { switch (k->code) { case KCD_MNUSELECT: case KCD_LEFT: MMSCreate_OPT_start(win,0); break; case KCD_HUP: /* back to previous menu */ case KCD_RIGHT: /* back to previous menu */ //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 //Once outside the MMS create screen, this flag needs to be unset MMSactive=FALSE; /* xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): Delete message on pressing back, * if it has not been saved. (Otherwise, it appears in the Unsent messages folder) */ if(g_M4_message_saved == FALSE) { g_event_struct.handler = Handler_MM_DeleteMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; MM_DeleteMessageAsync((EVT_HANDLE) &g_event_struct, g_msg_id); } MMI_DestoryWindow(win); break; //x0012849 Feb-03-2005 MMI-SPR-28224 : //Handled the cases of scroll up and down case KCD_MNUDOWN: DAL_PostMessage(EMG4_ScrollDown,EMG4_Type_NotUsed,0,NULL); break; case KCD_MNUUP : DAL_PostMessage(EMG4_ScrollUp,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 MMSCreate_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr){ TRACE_FUNCTION ("MMSCreate_start()"); //xrashmic 3 Nov, 2004 MMI-SPR-26145 //Storing the handle of the create window to delete later mms_create_hnd =MMI_CreateWindow(parent_window, (T_DIALOG_FUNC) MMSCreate_exec_cb, (void*)menuAttr,(MfwCb)MMSCreate_kbd_cb, 0,0); return mms_create_hnd ;}#define MMS_SEND_SUBJUCT_NUMBERstatic 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 number[MAX_PHB_NUM_LEN];static char topic[MAX_MMS_TOPIC_LEN]="\0";static void MMSCreate_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]; TRACE_EVENT_P1("MMSCreate_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,number); //yanbin: Call magic4 function to send MMS, bbssoo - send MMS with the topic (subject) and number, then save the MMS. //topic: topic; //number: number; M4_DebugMessage(0x93000); //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 //This dialog screen is displayed as soon as the user selects the left softkey after entering the number to start sending MMS //xrashmic 08 Feb, 2005 MMI-SPR-27853 AUI_mms_status_notify(MMS_PLEASEWAIT); MMI_2_SaveHeaderInfo(topic,number); DAL_PostMessage(EMG4_SaveMsg, EMG4_Type_NotUsed, 0, 0); //DAL_PostMessage(EMG4_Exit,EMG4_Type_NotUsed,0,NULL); g_inSendMode=TRUE; M4_DebugMessage(0x93001); MMI_DestoryWindow(win); //CRR: 25302 - xpradipg 10 Nov 2004 //Number entry editor needs to be deleted explicitly AUI_edit_Destroy(number_edit); } else { TRACE_EVENT_P1("text: %s",text); M4_DebugMessage(0x92000);// rvf_delay(10); g_safeString.size=2*(strlen(text)+1); MMS_ConvertStringToUcs2((const MByte *)(text), strlen(text), g_insertString); g_safeString.pString=g_insertString; DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); //xrashmic 9 Nov, 2004 MMI-SPR-26147 //Text in the MMS message needs to be deleted, before inserting the edited text. DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteText,NULL); DAL_PostMessage(EMG4_InsertString, EMG4_Type_NotUsed, (MESSAGE_PARAM)&g_safeString, 0);// M4_DebugMessage(g_safeString.size); M4_DebugMessage(0x92001);// rvf_delay(10); MMI_DestoryWindow(win); //yanbin: Call magic4 function to insert text into MMS //text: text; // bbssoo - insert string to MMS message. } 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 explicitly destroyed on pressing back sk if(E_MODE_NUMBER == Identifier) AUI_edit_Destroy(number_edit); MMI_DestoryWindow(win); break; default: TRACE_EVENT("Err: Default"); break; }}// Nov 05, 2005 REF: OMAPS00049502 Sumanth Kumar. C// Fix: A global variable to store the Mms Number extracted from the message header.char MmsNumber[MAX_PHB_NUM_LEN];/******************************************************************************* $Function: MMSCreate_SEND_exec_cb $Description: Callback handler for events sent by the window itself and to recieve the data $Returns: none $Arguments: win - current window event - event id Identifier - optional data parameter - optional data.*******************************************************************************/static void MMSCreate_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 ("MMSCreate_SEND_exec_cb()"); 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)MMSCreate_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(number,"01705713488");//"13816687053");//13801639314 //strcpy(number,"+38516610401"); //CRR: 25302 - xpradipg 10 Nov 2004 // The editor attributes are changed to hold alternate strings 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)MMSCreate_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,0, ED_CURSOR_UNDERLINE); memset(number,'\0', sizeof(number)); //Nov 05, 2005 REF: OMAPS00049502 Sumanth Kumar. C //Fix: Get only the 13digits corresponding to the senders phone number from the senders address strncpy(number,MmsNumber,13); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE*)number, sizeof(number)); number_edit = AUI_edit_Start(win, &editor_data); 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)MMSCreate_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 //xrashmic 9 Nov, 2004 MMI-SPR-26147 //Moved it to MMCreate_exec_cb MWM_CREATE as the user should be able to edit the inserted text. Hence we need to // retain the data in "text" buffer. //memset(text,'\0',MAX_MMS_TEXT_LEN); AUI_edit_SetBuffer(&editor_data, ATB_DCS_ASCII, (UBYTE*)text, sizeof(text)); editor = AUI_edit_Start(win, &editor_data); break; // case PHBK_ID: //CRR: 25302 - xpradipg 10 Nov 2004 //handle the even sent back by the phone number module case MMS_EMS_PHBK_NUMBER: MmsSend_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 MMSCreate_SEND_start(T_MFW_HND parent_window, void *UserData){ T_MFW_HND win; TRACE_FUNCTION ("MMSCreate_SEND_start()"); win=MMI_CreateWindow(parent_window, (T_DIALOG_FUNC) MMSCreate_SEND_exec_cb, (void*)UserData,0, 0,0); if(UserData) SEND_EVENT(win, (USHORT)UserData, 0, 0); return win;}//CRR:23923 - xpradipg 06 Sept 2004/******************************************************************************* $Function: MMSCreate_Prev_exec_cb $Description: Callback handler for events sent by the window itself $Returns: none $Arguments: win - current window event - event id parameter - optional data.*******************************************************************************/void MMSCreate_Prev_exec_cb(T_MFW_HND win, USHORT event, SHORT value, void * parameter)/* callback handler for events sent to to trigger execution */{ TRACE_FUNCTION ("MMSBox_read_exec_cb()"); switch (event) { case MWM_CREATE: g_M4_display_active = TRUE; break; case MWM_ONDRAW: dspl_Enable(0); dspl_SetBgdColour(COL_White); dspl_ClearAll(); DAL_PostMessage(EMG4_Resume,EMG4_Type_NotUsed,0,NULL); //xrashmic 6 Oct, 2004 MMI-SPR-25147 //EMG4_Preview does not require any EPlayModeRun. DAL_PostMessage(EMG4_Preview, EMG4_Type_NotUsed, 0, 0); displaySoftKeys(TxtNull,TxtSoftBack); dspl_Enable(1); break; case MWM_DESTORY: DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); //xrashmic 6 Oct, 2004 MMI-SPR-25147 //Exiting the Preview screen, the editor should be in editable mode. DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); g_M4_display_active=FALSE; break; case MWM_SUSPEND: g_M4_display_active=FALSE; DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_Preview,EMG4_Type_NotUsed, EPlayModeStop,NULL); break; case MWM_RESUME: g_M4_display_active=TRUE; DAL_PostMessage(EMG4_Resume,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_Refresh, EMG4_Type_NotUsed, 0, 0);break; default: break; }}//CRR:23923 - xpradipg 06 Sept 2004/******************************************************************************* $Function: MMSCreate_Prev_start $Description: Create Preview window $Returns: window handler $Arguments: parent_window - parent window. menuAttr - Menu attributes*******************************************************************************/T_MFW_HND MMSCreate_Prev_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr){ return MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)MMSCreate_Prev_exec_cb,(void*)menuAttr,(T_MFW_CB)MMSBox_Read_kbd_cb,0,0);}#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 MMSCreate_OPTexeSend(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfwParent(mfw_header()); MMSCreate_SEND_start(win, (void*)E_MODE_TOPIC);}//CRR:23923 - xpradipg 06 Sept 2004/******************************************************************************* $Function: MMSCreate_OPTpreviewMsg $Description: Called when the user press Preview in the Option menu $Returns: event status. $Arguments: m - pointer to menu. i - index if selected menu item.*******************************************************************************/static int MMSCreate_OPTpreviewMsg(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfwParent(mfw_header()); MMSCreate_Prev_start(win,NULL);}static int MMSCreate_OPTexeInsPicture(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfwParent(mfw_header()); MMSom_start(win, (MfwMnuAttr *) MMS_INSERT_PICTURE);}static int MMSCreate_OPTexeInsSound(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfwParent(mfw_header()); MMSom_start(win, (MfwMnuAttr *) MMS_INSERT_SOUND);}static int MMSCreate_OPTexeInsText(MfwMnu* m, MfwMnuItem* i){ T_MFW_HND win = mfwParent(mfw_header()); MMSCreate_SEND_start(win, (void*)E_MODE_TEXT);}static int MMSCreate_OPTexeSave(MfwMnu* m, MfwMnuItem* i){ //xrashmic 6 Oct, 2004 MMI-SPR-25147 //The Messages are saved only in EDIT mode. DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_SaveMsg, EMG4_Type_NotUsed, 0, 0); //xreddymn Aug-18-2004 MMI-SPR-24113 (TII_MMS53): To keep track of saved messages g_inSaveMode=TRUE; // xreddymn Nov-26-2004 MMI-SPR-25278: Display an "In Progress" screen //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);}static int MMSCreate_OPTexeInsSlide(MfwMnu* m, MfwMnuItem* i){ TRACE_EVENT("insert pic into OM"); M4_InsertPicObjectIntoOM();}//CRR: 25302 - xpradipg 10 Nov 2004/******************************************************************************* $Function: MmsSend_PHBK_exec_cb $Description: Populates the text structure with the phone Number and sends an event to update the editor buffer $Returns: $Arguments: *******************************************************************************/ void MmsSend_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 ("MmsSend_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; }}/******************************************************************************* $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 MMSCreate_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()"); 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: //xrashmic 20 Dec, 2004 MMI-SPR-23921 // On deleting the window, set the handler to NULL mms_create_opt_hnd=NULL; 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.*******************************************************************************/T_MFW_HND MMSCreate_OPT_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr){ TRACE_FUNCTION ("MMSCreate_OPT_start()"); //xrashmic 3 Nov, 2004 MMI-SPR-26145 //Storing the handle of the options window to delete later mms_create_opt_hnd = MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)MMSCreate_OPT_exec_cb,(void*)menuAttr, (T_MFW_CB)0, &MMSCreate_OPTAttrib,0); return mms_create_opt_hnd;}#define MMS_DELETE_PICTURE 0#define MMS_DELETE_SOUND 1#define MMS_DELETE_TEXT 2static void MMSCreate_Delete_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason){ TRACE_FUNCTION("MMSCreate_Delete_cb"); switch (reason) { case INFO_KCD_LEFT: switch(identifier) { case MMS_DELETE_PICTURE: DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteImage,NULL); break; case MMS_DELETE_SOUND: DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteAudio,NULL); break; case MMS_DELETE_TEXT: DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_DeleteObject,EMG4_Type_NotUsed, EDeleteText,NULL); //xrashmic 9 Nov, 2004 MMI-SPR-26147 //The text buffer should be reset when the text data //is deleted in the MMS message memset(text,'\0',MAX_MMS_TEXT_LEN); 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 MMSCreate_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)MMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); display_info.Identifier=MMS_DELETE_PICTURE; info_dialog (win, &display_info);}static int MMSCreate_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)MMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); display_info.Identifier=MMS_DELETE_SOUND; info_dialog (win, &display_info);}static int MMSCreate_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)MMSCreate_Delete_cb, FOREVER, KEY_LEFT |KEY_RIGHT|KEY_CLEAR|KEY_HUP); display_info.Identifier=MMS_DELETE_TEXT; info_dialog (win, &display_info);}void FUN_TRACE_EVENT(char * text, unsigned long param){ TRACE_EVENT_P1(text, param);}/******************************************************************************* $Function: Handler_Fwd_CreateMessageEntryAsync $Description: Callback function for MM_CreateMessageEntryAsync for forward. //xrashmic 14 Dec, 2004 MMI-SPR-23921 $Returns: None. $Arguments: *******************************************************************************/ESTATUS Handler_Fwd_CreateMessageEntryAsync(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle){ ESTATUS eResult; //Using the same create editor event handler for forward editor g_doc_event_struct.handler = MMI_1_EventHandler; g_doc_event_struct.parentEvtHandle = NULL; g_doc_event_struct.pData = NULL; g_doc_event_struct.userFlag = 0; g_msg_id= (MM_MESSAGE_ID) ampParam; eResult = DAL_OpenDocument((EVT_HANDLE) &g_doc_event_struct, g_pMessageHeaderList->ppList[g_currentMessage].id, g_msg_id);}/******************************************************************************* $Function: MMSBox_Forward $Description: Creating a new Id for the MMS message being forwarded //xrashmic 14 Dec, 2004 MMI-SPR-23921 $Returns: None. $Arguments: *******************************************************************************/void MMSBox_Forward(void){ ESTATUS eResult; MDword MessageID = g_pMessageHeaderList->ppList[g_currentMessage].id; TRACE_FUNCTION ("MMSBox_Forward()"); eResult = DAL_RetrieveMessageHeader(MessageID,&fwd_msg_header); fwd_msg_header->location = EMlDraft; g_event_struct.handler = Handler_Fwd_CreateMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; eResult=MM_CreateMessageEntryAsync((EVT_HANDLE) &g_event_struct, fwd_msg_header); g_safeString.memHeader.freeFunc = DummyFreeFunc; /*!< Pointer to memory deallocation function */ g_safeString.size=10; /*!< size of the string */ g_safeString.pString=g_insertString; /*!< Pointer to UCS2 string */}/******************************************************************************* $Function: MMSFwd_exec_cb $Description: Event handler for the MMS forward window //xrashmic 14 Dec, 2004 MMI-SPR-23921 $Returns: None. $Arguments: *******************************************************************************/void MMSFwd_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 ("MMSFwd_exec_cb()"); switch (event) { case MWM_CREATE: //xrashmic 14 Dec, 2004 MMI-SPR-23921 // Create a new Msg ID, Open the editor and copy the message being forwarded, into this editor. MMSBox_Forward(); //xrashmic 9 Nov, 2004 MMI-SPR-26147 //The text buffer is memset to '\0' only once at the time of MMS create - MWM_CREATE memset(text,'\0',MAX_MMS_TEXT_LEN); g_M4_display_active=TRUE; // xreddymn Feb-02-2005 MMI-SPR-28277: This is set to TRUE when forwarding MMS messages gMmsForwardStart=TRUE; break; case MWM_ONDRAW: TRACE_EVENT("MWM_ONDRAW"); dspl_Enable(0); { unsigned short width, height; DeviceGetScreenMetrics(&width,&height); dspl_SetBgdColour(COL_White); dspl_Clear(0, gucMmsTitleBarHeight, width-1, height-1); resources_setTitleColour(COLOUR_EDITOR); dspl_Clear(0, 0, width-1, gucMmsTitleBarHeight-1); dspl_TextOut(1, 0, DSPL_TXTATTR_HLIGHT,"Forwarding MMS"); } //yanbin: here call Magic4 functions to show MMS slides // bbssoo - After Creating MMS, display the "create MMS display" in the middle screen. // xreddymn Mar-08-2005 MMI-SPR-28820: changed order of posting // EMG4_Preview and EMG4_Resume. // When forwarding MMS, the first Preview-Resume occurs // through the callback MMI_1_EventHandler if(FALSE == gMmsForwardStart) { action_PreviewMessage(); action_ResumeEditor(); } //xrashmic 6 Oct, 2004 MMI-SPR-25147 //comenting action_SuspendEditor() as the Sound was not heard in the //compose screen //action_SuspendEditor(); displaySoftKeys(TxtSoftOptions,TxtSoftBack); dspl_Enable(1); break; case MWM_DESTORY: TRACE_EVENT("MWM_DESTROY"); //xreddymn Sep-16-2004: Changes related to MMI-SPR-24735 dspl_Enable(1); DAL_PostMessage(EMG4_Exit, EMG4_Type_NotUsed, 0, 0); //xreddymn Aug-16-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display g_M4_display_active=FALSE; //xrashmic 20 Dec, 2004 MMI-SPR-23921 // On deleting the window, set the handler to NULL mms_Fwdcreate_hnd=NULL; break; case MWM_SUSPEND: TRACE_EVENT("MWM_SUSPEND"); //xreddymn Sep-16-2004: Changes related to MMI-SPR-24735 dspl_Enable(1); //xreddymn Aug-16-2004 MMI-SPR-23926 (TII_MMS12) and MMI-SPR-24115 (TII_MMS55): BMI will now use the display g_M4_display_active=FALSE; // xreddymn Sep-03-2004 MMI-SPR-23961 DAL_PostMessage(EMG4_Suspend,EMG4_Type_NotUsed,0,NULL); DAL_PostMessage(EMG4_PlayMode,EMG4_Type_NotUsed, EPlayModeStop,NULL); //xrashmic 6 Oct, 2004 MMI-SPR-25147 //The editor needs to be in EDIT mode when inserting, Saving, etc. DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL); break; case MWM_RESUME: TRACE_EVENT("MWM_RESUME"); //xreddymn Aug-16-2004: M4 client will now use the display g_M4_display_active=TRUE; break; default: break; }}/******************************************************************************* $Function: MMSFwd_kbd_cb $Description: Keyboard handler for the MMS forward window //xrashmic 14 Dec, 2004 MMI-SPR-23921 $Returns: None. $Arguments: *******************************************************************************/static int MMSFwd_kbd_cb (MfwEvt e, MfwKbd *k){ T_MFW_HND win = mfwParent(mfw_header()); TRACE_FUNCTION ("MMSFwd_kbd_cb()"); if (e & KEY_LONG) { switch (k->code) { case KCD_HUP: /* back to previous menu */ //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 //Once outside the MMS create screen, this flag needs to be unset MMSactive=FALSE; if(g_M4_message_saved == FALSE) { g_event_struct.handler = Handler_MM_DeleteMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; MM_DeleteMessageAsync((EVT_HANDLE) &g_event_struct, g_msg_id); } MMI_DestoryWindow(win); break; case KCD_RIGHT: /* Power Down */ return MFW_EVENT_REJECTED; /* handled by idle */ default: /* no response to all other keys */ return MFW_EVENT_CONSUMED; } } else { switch (k->code) { case KCD_MNUSELECT: case KCD_LEFT: MMSCreate_OPT_start(win,0); break; case KCD_HUP: /* back to previous menu */ case KCD_RIGHT: /* back to previous menu */ //xrashmic 19 Aug, 2004 Bug: 2, 3, 36 and 42 //Once outside the MMS create screen, this flag needs to be unset MMSactive=FALSE; if(g_M4_message_saved == FALSE) { g_event_struct.handler = Handler_MM_DeleteMessageEntryAsync; g_event_struct.parentEvtHandle = NULL; g_event_struct.pData = NULL; g_event_struct.userFlag = 0; MM_DeleteMessageAsync((EVT_HANDLE) &g_event_struct, g_msg_id); } MMI_DestoryWindow(win); break; case KCD_MNUUP: //x0012849 Feb-03-2005 MMI-SPR-28224 //send the scrollup event to see the contents above the screen DAL_PostMessage(EMG4_ScrollUp,EMG4_Type_NotUsed,0,NULL); break; case KCD_MNUDOWN: //x0012849 Feb-03-2005 MMI-SPR-28224 //send the scrolldown event to see the contents below the screen DAL_PostMessage(EMG4_ScrollDown,EMG4_Type_NotUsed,0,NULL); break; case KCD_MNULEFT: case KCD_MNURIGHT: break; return MFW_EVENT_CONSUMED; } } return MFW_EVENT_CONSUMED;}/******************************************************************************* $Function: MMSFwd_start $Description: Creates Forward window for the selected MMS. //xrashmic 14 Dec, 2004 MMI-SPR-23921 $Returns: None. $Arguments: *******************************************************************************/T_MFW_HND MMSFwd_start(void){ T_MFW_HND win = mfwParent(mfw_header()); TRACE_FUNCTION ("MMSCreate_start()"); mms_Fwdcreate_hnd=MMI_CreateWindow(win, (T_DIALOG_FUNC) MMSFwd_exec_cb, NULL,(MfwCb)MMSFwd_kbd_cb, 0,0); return mms_Fwdcreate_hnd;}#undef MMI_MMSCREATE_C