comparison src/aci2/bmi/mmimmsom.c @ 3:93999a60b835

src/aci2, src/condat2: import of g23m/condat source pieces from TCS211
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 26 Sep 2016 00:29:36 +0000
parents
children
comparison
equal deleted inserted replaced
2:c41a534f33c6 3:93999a60b835
1
2 /*******************************************************************************
3
4 TI (Shanghai)
5
6 ********************************************************************************
7
8 This software product is the property of TI (Shanghai) Ltd and may not be
9 disclosed to any third party without the express permission of the owner.
10
11 ********************************************************************************
12
13 $Project name: TISHMMS Project
14 $Project code: BMI (6349)
15 $Module: MMS
16 $File: MmiMMSom.h
17 $Revision: 1.0
18
19 $Author: Yan Bin(bin-yan@ti.com)
20 $Date: 28/08/03
21
22 ********************************************************************************
23
24 Description:
25
26 This module provides definitions of the types and
27 constants which are shared across the MMS
28 application modules.
29
30 ********************************************************************************
31 $History: MmiMMSom.c
32
33 xreddymn Aug-20-2005 MMI-SPR-32709
34 Added support for previewing objects before inserting into MMS
35
36 xrashmic 08 Feb, 2005 MMI-SPR-27853
37 Added more parameters to the information_dialog function
38
39 xreddymn Jan-31-2005 MMI-SPR-28483: Support for MIDI objects
40
41 xrashmic 28 Jan, 2004 MMI-SPR-28166
42 Added support for saving Plugin Images
43
44 xrashmic 7 Dec, 2004 MMI-SPR-23965
45 Description: Not able to extract the objects in EMS message
46 Solution: Extract and store the objects in the Object Manager
47
48 xrashmic 29 Nov, 2004 MMI-SPR-26161
49 Description: The downloaded object through wap was not visible to the MMI
50 Solution: The downloaded wap object is available in the object manager
51 and can be used by the MMS
52
53 Bug Id 1 & 9 : 12 Aug, 2004 - xpradipg
54 Description:"No Media" displayed instead of Options screen
55 Solution: Added the BMI information window instead of writing directly onto the display
56
57 Bug Id 25 : 13 Aug, 2004 - xrashmic
58 Description: Changed the Insert note to Insert, Preview is not yet implemented,
59 therefore commented for time being
60
61 28/08/03 Original TI(Shanghai) BMI version.
62
63 $End
64
65 *******************************************************************************/
66 #define MMI_MMSOM_C
67
68 #define ENTITY_MFW
69
70 /* includes */
71 #include <string.h>
72 #include <stdio.h>
73 #include <stdlib.h>
74
75 #if defined (NEW_FRAME)
76
77 #include "typedefs.h"
78 #include "vsi.h"
79 #include "pei.h"
80 #include "custom.h"
81 #include "gsm.h"
82
83 #else
84
85 #include "STDDEFS.H"
86 #include "custom.h"
87 #include "gsm.h"
88 #include "vsi.h"
89
90 #endif
91 #include "prim.h"
92
93
94 #include "mfw_mfw.h"
95 #include "mfw_win.h"
96 #include "mfw_kbd.h"
97 #include "mfw_edt.h"
98 #include "mfw_tim.h"
99 #include "mfw_phb.h"
100 #include "ksd.h"
101 #include "psa.h"
102 #include "mfw_sms.h"
103 #include "mfw_smsi.h"
104 #include "mfw_icn.h"
105 #include "mfw_mnu.h"
106 #include "mfw_lng.h"
107 #include "mfw_sat.h"
108 #include "mfw_kbd.h"
109 #include "mfw_nm.h"
110
111 #include "psa_util.h"
112
113 #include "dspl.h"
114 // #include "unicode_types.h"
115
116 #include "MmiMain.h"
117 #include "MmiDummy.h"
118 //#include "MmiLists.h"
119 #include "MmiMmi.h"
120 #include "mmiCall.h"//GW 29/11/01 for 'callNumber'
121
122 #include "MmiDialogs.h"
123 #include "MmiLists.h"
124 #include "MmiMenu.h"
125 #include "MmiSoftKeys.h"
126 //#include "MmiEditor.h"
127 #include "MmiBookShared.h" // MZ
128 #include "mmimmsmenu.h"
129 #include "mmimmsom.h"
130 #include "mmiwindow.h"
131 #include "mfw_ffs.h"
132
133 #include "cus_aci.h"
134
135 #include "prim.h"
136 #ifndef PCM_2_FFS
137 #include "pcm.h"
138 #endif
139
140
141 #include "aci_cmh.h" //GW 29/11/01 added for types in aci_fd.h
142 #include "aci_fd.h" //GW 29/11/01 added for types in 'cmh.h'
143 #include "cmh.h" //GW 29/11/01 added for types in 'cmh_phb.h'
144 #include "cmh_phb.h" //GW 29/11/01 added for cmhPHB_getAdrStr
145
146 #include "mmiColours.h"
147
148
149
150 // ronaldc 8-5
151
152 #include "mg4def.h"
153 #include "evtdefs.h"
154 #include "mg4stu.h"
155 #include "Mg4Dal.h"
156 #include "mg4devif.h"
157 #include "dalevt.h"
158 #include "evif.h"
159 #include "mg4str.h"
160 #include "mmif.h"
161 #include "mg4mem.h"
162
163
164 MfwWin* getWinData( MfwHnd win);
165
166 /*********************************************************************
167
168 DYNAMIC MENU WINDOW. DECLARATION
169
170 **********************************************************************/
171
172
173
174 static MfwMnuAttr MmsOm_menuAttrib =
175 {
176 &melody_menuArea,
177 MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
178 -1, /* use default font */
179 NULL, /* with these items */
180 0, /* number of items */
181 COLOUR_LIST_XX, TxtNull, MNUATTRSPARE
182 };
183
184 extern ESTATUS DisplayImageByObjId(MDword id, MBool bFullScreen);
185
186 static int MMSom_OPTexeInsert(MfwMnu* m, MfwMnuItem* i);
187 static int MMSom_OPTexePreview(MfwMnu* m, MfwMnuItem* i);
188 static int MMSom_OPTexeDelete(MfwMnu* m, MfwMnuItem* i);
189 USHORT MMSom_OPTexePreview_Available( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi );
190
191 static MfwMnuItem MMSom_OPTItems [] =
192 {
193 {0,0,0,(char *)TxtMMSInsert,0,(MenuFunc)MMSom_OPTexeInsert,item_flag_none},
194 {0,0,0,(char *)TxtDelete,0,(MenuFunc)MMSom_OPTexeDelete,item_flag_none},
195 {0,0,0,(char *)TxtMMSPreview,0,(MenuFunc)MMSom_OPTexePreview,MMSom_OPTexePreview_Available},
196 };
197
198 static MfwMnuAttr MMSom_OPTAttrib =
199 {
200 &SmsRead_R_OPTArea,
201 MNU_LEFT | MNU_LIST | MNU_CUR_LINE, /* centered page menu */
202 -1, /* use default font */
203 MMSom_OPTItems, /* with these items */
204 sizeof(MMSom_OPTItems)/sizeof(MfwMnuItem), /* number of items */
205 COLOUR_LIST_SMS, TxtNull, MNUATTRSPARE
206
207 };
208 static ListMenuData *menu_list_data=NULL;
209
210 #if 1
211
212 static int currentObjectNumber = 0;
213
214 /***********************************************************************************************************************
215
216
217 ***********************************************************************************************************************/
218
219 #pragma DATA_SECTION (g_ObjectBuffer, ".MMSFSBUF0");
220
221 UCS2 g_ObjectFilename[] = {'j','p','g','0',0};
222 UCS2 g_AMRFilename[] = {'a','m','r','0',0};
223
224 unsigned char g_ObjectBuffer[30 * 1024];//liuyu do not need in mass production
225 //xrashmic 7 Dec, 2004 MMI-SPR-23965
226 extern EV_S_EXTRACTABLE_IN_MESSAGE apExtractableInMessage;
227 extern PP_S_OBJECT_DATA *appObj;
228 extern int attachmentInEMS;
229 UCS2 filename[14];
230 ESTATUS M4_StoreExtractedObject(char *objbuffer, int size, M4_E_OBJECT_TYPE obj_Type);
231 //xrashmic 08 Feb, 2005 MMI-SPR-27853
232 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);
233
234 /*! \brief Notify the menu system that the action has failed
235 */
236 void M4_ActionError(ESTATUS aEStatus)
237 {
238 if(aEStatus==EObjectAlreadyExists)
239 {
240 TRACE_EVENT("EObjectAlreadyExists!!!");
241 }else
242 TRACE_EVENT_P1("MMS action error: %d",(int )aEStatus);
243 }
244
245 /*! \brief Notify the menu system that the action has been completed successfully.
246 *
247 */
248 void M4_ActionComplete()
249 {
250 TRACE_EVENT("MMS action complete");
251 }
252
253 void M4_ObjectAttribFreeFunc (void *aObjectAtrrib)
254 {
255 M4_S_OBJECT_ATTRIB *objectAttrib = aObjectAtrrib;
256 TRACE_FUNCTION("M4_ObjectAttribFreeFunc");
257
258 FREE_MEMORY((void*)objectAttrib, sizeof(*objectAttrib));
259 }
260
261 void M4_ObjectItemFreeFunc ( void *aObjectItem)
262 {
263 M4_S_OBJECT_ITEM *objectItem = aObjectItem;
264 TRACE_FUNCTION("M4_ObjectItemFreeFunc");
265
266 FREE_MEMORY((void*)objectItem, sizeof(*objectItem));
267 }
268 ESTATUS M4_StorePicEventHandler(EVENT_ID aeId, EVENT_TYPE aeType,
269 MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle)
270 {
271 TRACE_FUNCTION("M4_StorePicObjectEventHandlerFunc");
272 switch (aeId)
273 {
274 case EMG4_FileOpDone :
275 currentObjectNumber++;
276 TRACE_EVENT("mms:case EMG4_FileOpDone begin");
277 M4_StoreNextPicObject(EvtHandle);
278 break;
279 default:
280 TRACE_EVENT("mms:default EMG4_FileOpDone begin");
281 FREE_MEMORY((void*)EvtHandle, sizeof(*EvtHandle));
282 }
283
284 return ENoError;
285 }
286
287 ESTATUS M4_StoreSndEventHandler(EVENT_ID aeId, EVENT_TYPE aeType,
288 MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle)
289 {
290 TRACE_FUNCTION("M4_StoreSndObjectEventHandlerFunc");
291 switch (aeId)
292 {
293 case EMG4_FileOpDone :
294 currentObjectNumber++;
295 TRACE_EVENT("mms:case EMG4_FileOpDone begin");
296 M4_StoreNextSndObject(EvtHandle);
297 break;
298 default:
299 TRACE_EVENT("mms:default EMG4_FileOpDone begin");
300 FREE_MEMORY((void*)EvtHandle, sizeof(*EvtHandle));
301 }
302
303 return ENoError;
304 }
305
306 void M4_StoreNextSndObject(EVT_HANDLE aEvtHandler)
307 {
308 TRACE_FUNCTION("M4_StoreNextSndObject");
309 if (currentObjectNumber < MAX_MMS_MEDIA)
310 {
311 ESTATUS estatus;
312 M4_S_OBJECT_ITEM *objectItem = NULL;
313 M4_S_OBJECT_ATTRIB *objectAttrib = NULL;
314
315 objectItem = (M4_S_OBJECT_ITEM*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ITEM));
316 objectAttrib = (M4_S_OBJECT_ATTRIB*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ATTRIB));
317
318 {
319 struct stat_s stat;
320 char filename[]="/amr0";
321 signed char Ffs_ret;
322
323 filename[4]='0'+currentObjectNumber;
324 g_AMRFilename[3]='0'+currentObjectNumber;
325
326 Ffs_ret = ffs_stat(filename, &stat);
327
328 if (Ffs_ret != 0)//empty file id found
329 {
330 //xmzhou_trace_string("M4_StoreNextSndObject file not found");
331 return;
332 }
333
334 TRACE_EVENT_P1("read jpg size: %d", stat.size);
335 ffs_fread(filename, (void *) g_ObjectBuffer,stat.size);
336
337 objectItem->objectSize = stat.size;
338 objectItem->pData = (MByte *)g_ObjectBuffer;
339 objectItem->memHdr.freeFunc = M4_ObjectItemFreeFunc;
340
341 objectAttrib->drmInfo = EDrmNotSet;
342 objectAttrib->memHdr.freeFunc = M4_ObjectAttribFreeFunc;
343 objectAttrib->objectFile.fileNameLen= 10;
344 objectAttrib->objectFile.pFileName = (UCS2 *)g_AMRFilename;
345 objectAttrib->objectId = 100 + currentObjectNumber;
346 objectAttrib->objectSize = stat.size;
347 objectAttrib->type = EMtMimeAmr;
348 }
349
350
351 TRACE_EVENT("MMS: OM_StoreObjectAsync begin");
352 estatus = OM_StoreObjectAsync(aEvtHandler,objectItem,objectAttrib);
353 TRACE_EVENT_P1("MMS: OM_StoreObjectAsync end:%d",estatus);
354 if (estatus != ENoError)
355 {
356 M4_ActionError(estatus);
357 FREE_MEMORY((void*)aEvtHandler, sizeof(*aEvtHandler));
358 }
359 }
360 else
361 {
362 FREE_MEMORY((void*)aEvtHandler, sizeof(*aEvtHandler));
363 M4_ActionComplete();
364 }
365
366 }
367
368 void M4_StoreNextPicObject(EVT_HANDLE aEvtHandler)
369 {
370 TRACE_FUNCTION("M4_StoreNextPicObject");
371 if (currentObjectNumber < MAX_MMS_MEDIA)
372 {
373 ESTATUS estatus;
374 M4_S_OBJECT_ITEM *objectItem = NULL;
375 M4_S_OBJECT_ATTRIB *objectAttrib = NULL;
376
377 objectItem = (M4_S_OBJECT_ITEM*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ITEM));
378 objectAttrib = (M4_S_OBJECT_ATTRIB*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ATTRIB));
379
380 {
381 struct stat_s stat;
382 char filename[]="/jpg0";
383 signed char Ffs_ret;
384
385 filename[4]='0'+currentObjectNumber;
386 g_ObjectFilename[3]='0'+currentObjectNumber;
387
388 Ffs_ret = ffs_stat(filename, &stat);
389
390 if (Ffs_ret != 0)//empty file id found
391 {
392 //xmzhou_trace_string("M4_StoreNextPicObject file not found");
393 return;
394 }
395
396 TRACE_EVENT_P1("read jpg size: %d", stat.size);
397 ffs_fread(filename, (void *) g_ObjectBuffer,stat.size);
398
399 objectItem->objectSize = stat.size;
400 objectItem->pData = (MByte *)g_ObjectBuffer;
401 objectItem->memHdr.freeFunc = M4_ObjectItemFreeFunc;
402
403 objectAttrib->drmInfo = EDrmNotSet;
404 objectAttrib->memHdr.freeFunc = M4_ObjectAttribFreeFunc;
405 objectAttrib->objectFile.fileNameLen= 10;
406 objectAttrib->objectFile.pFileName = (UCS2 *)g_ObjectFilename;
407 objectAttrib->objectId = 100+currentObjectNumber;
408 objectAttrib->objectSize = stat.size;
409 objectAttrib->type = EMtMimeJpeg;;
410 }
411
412
413 TRACE_EVENT("MMS: OM_StoreObjectAsync begin");
414 estatus = OM_StoreObjectAsync(aEvtHandler,objectItem,objectAttrib);
415 TRACE_EVENT_P1("MMS: OM_StoreObjectAsync end:%d",estatus);
416 if (estatus != ENoError)
417 {
418 M4_ActionError(estatus);
419 FREE_MEMORY((void*)aEvtHandler, sizeof(*aEvtHandler));
420 }
421 }
422 else
423 {
424 FREE_MEMORY((void*)aEvtHandler, sizeof(*aEvtHandler));
425 M4_ActionComplete();
426 }
427
428 }
429
430
431 // insert objects into OM.
432 void M4_InsertPicObjectIntoOM()
433 {
434
435 EVT_HANDLE evtHandler=NULL;
436 TRACE_FUNCTION("M4_InsertPicObjectIntoOM");
437
438 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
439
440 memset(evtHandler,0x00,sizeof(EVT_STRUCT));
441 evtHandler->handler = M4_StorePicEventHandler;
442
443 currentObjectNumber = 0;
444
445 M4_StoreNextPicObject(evtHandler);
446 }
447 void M4_InsertSndObjectIntoOM()
448 {
449 EVT_HANDLE evtHandler=NULL;
450 TRACE_FUNCTION("M4_InsertSndObjectIntoOM");
451
452 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
453
454 memset(evtHandler,0x00,sizeof(EVT_STRUCT));
455 evtHandler->handler = M4_StoreSndEventHandler;
456
457 currentObjectNumber = 0;
458
459 M4_StoreNextSndObject(evtHandler);
460 }
461
462 // insert Object into current message
463
464 void M4_InsertObjectIntoMessage(M4_OBJECT_ID aObjectID)
465 {
466 ESTATUS eResult=0;
467 TRACE_FUNCTION("M4_InsertObjectIntoMessage");
468 eResult=DAL_PostMessage(EMG4_InsertObject,EMG4_Type_NotUsed,aObjectID,0);
469 TRACE_EVENT_P2("MMS: M4_InsertObjectIntoMessage:%d, obj:%d", eResult,aObjectID);
470 }
471
472 /*
473 delete obejct from OM.
474 */
475 ESTATUS M4_DeleteObjectEventHandlerFunc(EVENT_ID aeId, EVENT_TYPE aeType, MESSAGE_PARAM ampParam, EVT_HANDLE evtHandle)
476 {
477 TRACE_FUNCTION("M4_DeleteObjectEventHandlerFunc");
478 switch (aeId)
479 {
480 case EMG4_FileOpDone :
481 M4_ActionComplete();
482 break;
483 }
484 FREE_MEMORY((void*)evtHandle, sizeof(*evtHandle));
485 return ENoError;
486 }
487
488
489 void M4_DeleteObjectFromOM(M4_OBJECT_ID aObjectID)
490 {
491 EVT_HANDLE evtHandler;
492 ESTATUS eResult=0;
493
494 /* Create the event handler */
495 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
496 if (evtHandler == NULL)
497 {
498 M4_ActionError(EOutOfMemory);
499 return;
500 }
501
502 memset(evtHandler,0x00,sizeof(EVT_STRUCT)); /* Reset the structure */
503 evtHandler->handler = M4_DeleteObjectEventHandlerFunc;
504
505 eResult=OM_DeleteObjectAsync(evtHandler,aObjectID);
506 TRACE_EVENT_P1("MMS: OM_DeleteObjectAsync:%d", eResult);
507 }
508
509
510 /*
511 List obejct from OM.
512 */
513
514 static M4_S_OBJECT_LIST* g_pObjectList = NULL;
515 static UBYTE g_current_select=0; /*indicate the current object*/
516
517 void M4_ListObjects(UINT32 ObjType)
518 {
519 MDword conditions = 0;
520 ESTATUS eResult=0;
521 TRACE_FUNCTION("M4_ListObjects");
522
523 if (ObjType == MMS_INSERT_SOUND)
524 {
525 conditions = OM_MT_SOUND_NO_DRM;
526 }
527 else if (ObjType == MMS_INSERT_PICTURE)
528 {
529 conditions = OM_MT_IMAGE_NO_DRM;
530 }
531 else if (ObjType == EMS_INSERT_SOUND)
532 {
533 conditions = OM_MT_EMS_PREDEF_SOUND;
534 }
535 else if (ObjType == EMS_INSERT_PICTURE)
536 {
537 conditions = OM_MT_EMS_PREDEF_ANIM;
538 }
539 //xrashmic 7 Dec, 2004 MMI-SPR-23965
540 // Separate lists for the user defined Image and Picture objects
541 else if (ObjType == EMS_INSERT_PICTURE_USR)
542 {
543 conditions = OM_MT_EMS_IMAGE;
544 }
545 else if (ObjType == EMS_INSERT_SOUND_USR)
546 {
547 conditions = OM_MT_EMS_SOUND;
548 }
549
550 else
551 {
552 //xmzhou_trace_string("M4_ListObjects() error ObjType");
553 return;
554 }
555
556 //conditions = OM_MT_SOUND_NO_DRM;
557 eResult=OM_ListObjectsByParam(conditions,&g_pObjectList);
558 if(eResult==EObjectNotFound)
559 {
560 TRACE_EVENT("MMS: OM_ListObjectsByParam:not found");
561 }else
562 { TRACE_EVENT_P1("MMS: OM_ListObjectsByParam:%d", eResult);
563 }
564 M4_ActionComplete(); /* Post back to the menu system to say that we have finished the action */
565 }
566 void M4_FreeListObjectsMemory()
567 {
568 TRACE_FUNCTION("M4_FreeListObjectsMemory");
569 if (g_pObjectList)
570 {
571 g_pObjectList->memHdr.freeFunc(g_pObjectList);
572 g_pObjectList = NULL;
573 }
574 }
575
576 //int ConvertUcs2To8BitString(pUcs2String, uLength, p8BitString)
577
578 #endif
579
580 #define MMS_OM_LIST_BEGIN
581
582
583 /*******************************************************************************
584
585 $Function: MMSomList_cb
586
587 $Description: Callback function for the melody list.
588
589 $Returns: none
590
591 $Arguments: Parent - parent window.
592 ListData - Menu item list
593 *******************************************************************************/
594
595 void MMSomList_cb(T_MFW_HND * Parent, ListMenuData * ListData)
596 {
597
598 if ((ListData->Reason EQ LISTS_REASON_BACK) || (ListData->Reason EQ LISTS_REASON_CLEAR)
599 || (ListData->Reason EQ LISTS_REASON_HANGUP)) // sbh - added hangup key
600 {
601 listsDestroy(ListData->win);
602 MMI_DestoryWindow(Parent);
603 }
604 else if(ListData->Reason EQ LISTS_REASON_SELECT)
605 {
606 g_current_select=ListData->CursorPosition;
607 MMSom_OPT_start(ListData->win,0);
608 }else if(ListData->Reason EQ LISTS_REASON_SCROLL)
609 {
610 TRACE_FUNCTION ("MMSom_OPTexePreview()");
611 DisplayImageByObjId(g_pObjectList->pList[ListData->CursorPosition].objectId,EFalse);
612
613 }
614 }
615
616
617 // Bug Id 1 & 9 : 12 Aug, 2004 - xpradipg
618 /*******************************************************************************
619
620 $Function: No_Media_info_cb
621
622 $Description: Callback function for the information dialogue when media list is empty
623
624 $Returns: none
625
626 $Arguments:
627 *******************************************************************************/
628 static void No_Media_info_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
629 {
630 switch(reason)
631 {
632 case INFO_KCD_HUP:
633 case INFO_KCD_RIGHT:
634 case INFO_KCD_CLEAR:
635 case INFO_TIMEOUT:
636 TRACE_EVENT_P1("the value of win in No_media_info_cb is %x",*((int*)win));
637 MMI_DestoryWindow(win);
638 break;
639 default:
640 break;
641 }
642 }
643
644 /*******************************************************************************
645
646 $Function: MMSom_exec_cb
647
648 $Description: Exec callback function of the MMS Create window
649
650 $Returns: none
651
652 $Arguments: win - window handler
653 event - mfw event
654 parameter - optional data.
655
656 *******************************************************************************/
657 char g_ObjectTitle[MAX_MMS_MEDIA][32];
658
659 void MMSom_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
660 /* callback handler for events sent to to trigger execution */
661 {
662 T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
663 int i;
664 T_DISPLAY_DATA display_info;
665
666 TRACE_FUNCTION ("MMSom_exec_cb()");
667
668 switch (event)
669 {
670 case MWM_CREATE:
671 /* initialization of administrative data */
672 TRACE_EVENT("MWM_CREATE");
673
674 //yanbin: call magic4 function to create object list
675 M4_ListObjects((UINT32)parameter);
676
677 if(g_pObjectList==NULL)
678 {
679 TRACE_EVENT("!!!no media object");
680 TRACE_EVENT ("Insert objects into OM");
681
682 if ((UINT32)parameter == MMS_INSERT_SOUND)
683 {
684 M4_InsertSndObjectIntoOM();
685 }
686 else if ((UINT32)parameter == MMS_INSERT_PICTURE)
687 {
688 M4_InsertPicObjectIntoOM();
689 }
690 else
691 {
692 //xmzhou_trace_string("MMSom_exec_cb error obj type");
693 }
694
695 // xreddymn Aug-09-2004, Why is winShow being called in a Window Callback ?
696 //winShow(win);
697 break;
698 }
699
700 TRACE_EVENT_P1("M4_ListObjects total:%d",g_pObjectList->numItems);
701
702 menu_list_data =(ListMenuData *) ALLOC_MEMORY(sizeof(ListMenuData));
703 if (menu_list_data == NULL)
704 {
705 // xmzhou_trace_string("menu_list_data == NULL error");
706 return;
707 }
708 menu_list_data->List = (T_MFW_MNU_ITEM *)ALLOC_MEMORY( g_pObjectList->numItems * sizeof(T_MFW_MNU_ITEM) );
709
710 if (menu_list_data->List == NULL)
711 {
712 // xmzhou_trace_string("menu_list_data->List == NULL error");
713 return;
714 }
715
716 for (i = 0; i < g_pObjectList->numItems ; i++)
717 {
718 char tempbuf[64];
719 mnuInitDataItem(&menu_list_data->List[i]);
720 menu_list_data->List[i].flagFunc = item_flag_none;
721 ConvertUcs2To8BitString(g_pObjectList->pList[i].objectFile.pFileName,
722 g_pObjectList->pList[i].objectFile.fileNameLen, (MByte*) tempbuf);
723 sprintf(g_ObjectTitle[i],"%d:%s-(%d B)",i,tempbuf, g_pObjectList->pList[i].objectSize);
724 // data->menu_list_data->List[i].str = "pic1";
725 menu_list_data->List[i].str = g_ObjectTitle[i];
726 }
727
728 menu_list_data->ListLength =g_pObjectList->numItems;
729 menu_list_data->ListPosition = 1;
730 menu_list_data->CursorPosition = 1;
731 menu_list_data->SnapshotSize = g_pObjectList->numItems;
732 menu_list_data->Font = 0;
733 menu_list_data->LeftSoftKey = TxtSoftSelect;
734 menu_list_data->RightSoftKey = TxtSoftBack;
735 menu_list_data->KeyEvents = KEY_ALL;
736 menu_list_data->Reason = 0;
737 menu_list_data->Strings = TRUE;
738 menu_list_data->Attr = &MmsOm_menuAttrib;
739 menu_list_data->autoDestroy = FALSE;
740 listDisplayListMenu(win,menu_list_data,(ListCbFunc)MMSomList_cb,0);
741
742 /* put the (new) dialog window on top of the window stack */
743 // xreddymn Aug-09-2004, Why is winShow being called in a Window Callback ?
744 //winShow(win);
745 break;
746
747 case MWM_ONDRAW:
748 TRACE_EVENT("MWM_ONDRAW");
749 //xpradipg 12 Aug, 2004 : Bug Id 1 & 9
750 //"No Media" displayed instead of Options screen
751 //check for any object present in the object buffer before displaying the error screen.
752 //since MWM_ONDRAW is called for every draw. Add the BMI information dialog screen.
753 if(g_pObjectList ==NULL)
754 {
755
756 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtSoftBack, "No Media", TxtNull, COLOUR_STATUS);
757 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)No_Media_info_cb, FOREVER, KEY_HUP| KEY_RIGHT);
758 info_dialog (win, &display_info);
759 }
760 break;
761 case MWM_DESTORY:
762 if(menu_list_data)
763 {
764 if(menu_list_data->List)
765 {
766 FREE_MEMORY((void*)(menu_list_data->List),g_pObjectList->numItems* sizeof(T_MFW_MNU_ITEM ));
767 }
768 FREE_MEMORY((void*)(menu_list_data),sizeof(ListMenuData));
769 }
770 M4_FreeListObjectsMemory();
771 break;
772 default:
773 break;
774 }
775 }
776
777
778 /**/
779 T_MFW_HND l_omwin=NULL;
780 /*******************************************************************************
781
782 $Function: MMSom_start
783
784 $Description: Start the creation of the main window for Create MMS
785
786 $Returns: mfw window handler
787
788 $Arguments: parent_window - Parent window handler
789 menuAttr - Menu attributes.
790
791 *******************************************************************************/
792 T_MFW_HND MMSom_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr)
793 {
794
795 TRACE_FUNCTION ("MMSom_start()");
796 l_omwin= MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)MMSom_exec_cb,(void*)menuAttr, 0, 0, 0);
797 return l_omwin;
798 }
799
800
801 #define MMS_OM_OPTION_BEGIN
802
803 /*******************************************************************************
804
805 $Function: MMSom_OPT_exec_cb
806
807 $Description: Exec callback function for the Option window
808
809 $Returns: none
810
811 $Arguments: win - current window
812 event - event id
813 value - unique id
814 parameter - optional data.
815
816 *******************************************************************************/
817
818 void MMSom_OPT_exec_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
819 /* callback handler for events sent to to trigger execution */
820 {
821 TRACE_FUNCTION ("MMSom_OPT_exec_cb()");
822 switch (event)
823 {
824 case MWM_CREATE:
825
826 TRACE_EVENT("Event:MWM_CREATE");
827 /* initialization of administrative data */
828 // data->parent_data = parent_data;
829 winShow(win);
830 break;
831 case MWM_ONDRAW:
832 dspl_ClearAll();
833 displaySoftKeys(TxtSoftOK,TxtSoftBack);
834 break;
835 case MWM_DESTORY:
836 break;
837 default:
838 return;
839 }
840 }
841
842
843 /*******************************************************************************
844
845 $Function: MMSom_OPT_start
846
847 $Description: Start the creation of the main window for Create MMS
848
849 $Returns: mfw window handler
850
851 $Arguments: parent_window - Parent window handler
852 menuAttr - Menu attributes.
853
854 *******************************************************************************/
855 T_MFW_HND MMSom_OPT_start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr)
856 {
857
858 TRACE_FUNCTION ("SmsRead_R_start()");
859 return MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)MMSom_OPT_exec_cb, (void*)menuAttr,0,&MMSom_OPTAttrib, 0);
860 }
861
862
863
864 static int MMSom_OPTexeInsert(MfwMnu* m, MfwMnuItem* i)
865 {
866 T_MFW_HND win = mfwParent(mfw_header());
867
868 TRACE_EVENT_P1("MMSom_OPTexeInsert():%d",g_current_select);
869 //data->current_select
870 DAL_PostMessage(EMG4_Edit,EMG4_Type_NotUsed,0,NULL);
871 M4_InsertObjectIntoMessage(g_pObjectList->pList[g_current_select].objectId);
872 MMI_DestoryWindow(win);
873 }
874
875 //xreddymn Aug-19-2005 MMI-SPR-32709: Preview of Objects
876
877 extern MDword DeviceMelodyId;
878 extern BOOL g_M4_display_active;
879
880 BOOL g_M4_object_preview = FALSE;
881
882 /*******************************************************************************
883
884 $Function: MMSom_OPTexePreview_Available
885
886 $Description: Decides whether to display "Preview" or not for the selected
887 object
888
889 $Returns: 0 = Do not display the "Preview" option
890 1 = Display the "preview" option
891
892 $Arguments: m = MfwMnuTag, passed by MFW
893 ma = MfwMnuAttrTag, passed by MFW
894 mi = MfwMnuItemTag, passed by MFW
895
896 *******************************************************************************/
897
898 USHORT MMSom_OPTexePreview_Available( struct MfwMnuTag *m, struct MfwMnuAttrTag *ma, struct MfwMnuItemTag *mi )
899 {
900 switch(g_pObjectList->pList[g_current_select].type)
901 {
902 case EMtEmsPredefMelody:
903 case EMtEmsMelody:
904 case EMtMimeAmr:
905 case EMtMimeMidi:
906 // case EMtMimeSMidi:
907 // case EAudioWav:
908 // case EMtSMAF:
909 return 0;
910 case EMtMimeBmp:
911 case EMtMimePng:
912 case EMtMimeGif:
913 case EMtMimeJpeg:
914 case EMtMimeWbmp:
915 return 0;
916 default:
917 return 1;
918 }
919 }
920
921 /*******************************************************************************
922
923 $Function: MMSom_OPTexePreview_kbd_cb
924
925 $Description: Key handler for object preview
926
927 $Returns: MFW_EVENT_CONSUMED
928
929 $Arguments: e = Event
930 k = structure containing key code
931
932 *******************************************************************************/
933
934 static int MMSom_OPTexePreview_kbd_cb (MfwEvt e, MfwKbd *k)
935 {
936 T_MFW_HND win = mfwParent(mfw_header());
937
938 if (e & KEY_LONG)
939 {
940 switch (k->code)
941 {
942 case KCD_HUP:
943 case KCD_RIGHT:
944 MMI_DestoryWindow(win);
945 break;
946 default:
947 return MFW_EVENT_CONSUMED;
948 }
949 }
950 else
951 {
952 switch (k->code)
953 {
954 case KCD_HUP:
955 case KCD_RIGHT:
956 MMI_DestoryWindow(win);
957 break;
958 default:
959 return MFW_EVENT_CONSUMED;
960 }
961 }
962 return MFW_EVENT_CONSUMED;
963 }
964
965 /*******************************************************************************
966
967 $Function: MMSom_OPTexePreview_cb
968
969 $Description: Window handler for object preview
970
971 $Returns: None
972
973 $Arguments: win = Handle to the window
974 event = Window event
975
976 *******************************************************************************/
977
978 void MMSom_OPTexePreview_cb (T_MFW_HND win, USHORT event, SHORT value, void * parameter)
979 /* callback handler for events sent to to trigger execution */
980 {
981 T_MFW_WIN * win_data = ((T_MFW_HDR *) win)->data;
982 int i;
983 T_DISPLAY_DATA display_info;
984 MRect apClientRect;
985
986 switch (event)
987 {
988 case MWM_CREATE:
989 break;
990
991 case MWM_ONDRAW:
992 dspl_Enable(0);
993 g_M4_object_preview = TRUE;
994 g_M4_display_active = TRUE;
995 DeviceGetClientRect(&apClientRect);
996 dspl_SetBgdColour(COL_White);
997 dspl_Clear(apClientRect.topLeft.uX, apClientRect.topLeft.uY, apClientRect.bottomRight.uX, apClientRect.bottomRight.uY);
998 DisplayImageByObjId(g_pObjectList->pList[g_current_select].objectId,EFalse);
999 displaySoftKeys(TxtNull,TxtSoftBack);
1000 g_M4_display_active = FALSE;
1001 g_M4_object_preview = FALSE;
1002 dspl_Enable(1);
1003 break;
1004
1005 case MWM_DESTORY:
1006 break;
1007
1008 default:
1009 break;
1010 }
1011 }
1012
1013 /*******************************************************************************
1014
1015 $Function: MMSom_OPTexePreview_Start
1016
1017 $Description: Opens the object preview window
1018
1019 $Returns: Handle to the object preview window
1020
1021 $Arguments: parent_window = Handle to the parent window
1022 menuAttr = Menu Attributes (Optional)
1023
1024 *******************************************************************************/
1025
1026 T_MFW_HND MMSom_OPTexePreview_Start(T_MFW_HND parent_window, MfwMnuAttr *menuAttr)
1027 {
1028 T_MFW_HND win;
1029 win= MMI_CreateWindow(parent_window, (T_DIALOG_FUNC)MMSom_OPTexePreview_cb,(void*)menuAttr, (MfwCb)MMSom_OPTexePreview_kbd_cb, 0, 0);
1030 return win;
1031 }
1032
1033 /*******************************************************************************
1034
1035 $Function: MMSom_preview_dialog_cb
1036
1037 $Description: Handles dialog events for preview window for sound objects
1038
1039 $Returns: None
1040
1041 $Arguments: win = Handle to the window
1042 identifier = (Not used in this function)
1043 reason = Dialog event
1044
1045 *******************************************************************************/
1046
1047 static void MMSom_preview_dialog_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
1048 {
1049 switch(reason)
1050 {
1051 case INFO_KCD_HUP:
1052 case INFO_KCD_RIGHT:
1053 case INFO_KCD_CLEAR:
1054 case INFO_TIMEOUT:
1055 MMI_DestoryWindow(win);
1056 DeviceCancelMelody(DeviceMelodyId);
1057 break;
1058 default:
1059 break;
1060 }
1061 }
1062
1063 /*******************************************************************************
1064
1065 $Function: MMSom_OPTexePreview
1066
1067 $Description: Called when "preview" is selected in the menu
1068
1069 $Returns: None
1070
1071 $Arguments: win = Handle to the window
1072 identifier = (Not used in this function)
1073 reason = Dialog event
1074
1075 *******************************************************************************/
1076
1077 static int MMSom_OPTexePreview(MfwMnu* m, MfwMnuItem* i)
1078 {
1079 M4_S_OBJECT_ITEM *appObjectItem;
1080 T_MFW_HND win = mfwParent(mfw_header());
1081
1082 TRACE_FUNCTION ("MMSom_OPTexePreview()");
1083
1084 switch(g_pObjectList->pList[g_current_select].type)
1085 {
1086 case EMtEmsPredefMelody:
1087 case EMtEmsMelody:
1088 case EMtMimeAmr:
1089 case EMtMimeMidi:
1090 // case EMtMimeSMidi:
1091 // case EAudioWav:
1092 // case EMtSMAF:
1093 {
1094 T_DISPLAY_DATA display_info;
1095 OM_RetrieveObject(&appObjectItem, g_pObjectList->pList[g_current_select].objectId);
1096 DevicePlayMelody(g_pObjectList->pList[g_current_select].type, appObjectItem->pData, appObjectItem->objectSize, NULL);
1097 dlg_initDisplayData_TextStr( &display_info, TxtNull, TxtSoftBack, "Playing ...", TxtNull, COLOUR_STATUS);
1098 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)MMSom_preview_dialog_cb, FOREVER, KEY_HUP | KEY_RIGHT);
1099 info_dialog (win, &display_info);
1100 }
1101 break;
1102
1103 case EMtMimeBmp:
1104 case EMtMimePng:
1105 case EMtMimeGif:
1106 case EMtMimeJpeg:
1107 case EMtMimeWbmp:
1108 MMSom_OPTexePreview_Start(win, NULL);
1109 break;
1110
1111 default:
1112 break;
1113 }
1114 }
1115
1116 //xreddymn Aug-19-2005 MMI-SPR-32709: Preview of Objects, changes end
1117
1118 static void MMSom_Delete_cb(T_MFW_HND win, UBYTE identifier, UBYTE reason)
1119 {
1120
1121 T_MFW_HND l_parent=NULL;
1122 TRACE_FUNCTION("MMSom_Delete_cb");
1123
1124 switch (reason)
1125 {
1126 case INFO_KCD_LEFT:
1127 //yanbin: Call magic4 function to delete current object
1128 M4_DeleteObjectFromOM(g_pObjectList->pList[g_current_select].objectId);
1129 l_parent=MMI_ParentWindow(win);
1130 MMI_DestoryWindow(win);
1131 TRACE_EVENT_P2("l_omwin:%x,l_parent:%x ", l_omwin, l_parent);
1132 // MMI_DestoryWindow(l_omwin);
1133 break;
1134 case INFO_KCD_HUP:
1135 case INFO_KCD_RIGHT:
1136 case INFO_KCD_CLEAR:
1137 //return back
1138 MMI_DestoryWindow(win);
1139 break;
1140 default:
1141 break;
1142 }
1143 }
1144 static int MMSom_OPTexeDelete(MfwMnu* m, MfwMnuItem* i)
1145 {
1146 T_MFW_HND win = mfwParent(mfw_header());
1147 T_DISPLAY_DATA display_info;
1148 dlg_initDisplayData_TextId( &display_info, TxtSoftOK, TxtSoftBack, TxtPressOk, TxtDelete, COLOUR_STATUS);
1149 dlg_initDisplayData_events( &display_info, (T_VOID_FUNC)MMSom_Delete_cb, FOREVER, KEY_LEFT|KEY_RIGHT|KEY_CLEAR|KEY_HUP);
1150 info_dialog (win, &display_info);
1151 }
1152
1153 #undef MMI_MMSOM_C
1154
1155 /*******************************************************************************
1156
1157 $Function: M4_StoreExtarctedObjectEventHandler
1158
1159 $Description: Event handler for M4_StoreDownloadedObject
1160 xrashmic 7 Dec, 2004 MMI-SPR-21621
1161 $Returns: ESTATUS
1162
1163 $Arguments:
1164 *******************************************************************************/
1165
1166 ESTATUS M4_StoreDownloadObjEventHandler(EVENT_ID aeId, EVENT_TYPE aeType,
1167 MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle)
1168 {
1169 switch (aeId)
1170 {
1171 case EMG4_FileOpDone :
1172 break;
1173 default:
1174 FREE_MEMORY((void*)EvtHandle, sizeof(*EvtHandle));
1175 }
1176
1177 return ENoError;
1178 }
1179
1180 /*******************************************************************************
1181
1182 $Function: M4_StorePluginObjEventHandler
1183
1184 $Description: Event handler for M4_StorePluginObject
1185 xrashmic 28 Jan, 2005 MMI-SPR-28166
1186 $Returns: ESTATUS
1187
1188 $Arguments:
1189 *******************************************************************************/
1190
1191 ESTATUS M4_StorePluginObjEventHandler(EVENT_ID aeId, EVENT_TYPE aeType,
1192 MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle)
1193 {
1194 switch (aeId)
1195 {
1196 case EMG4_FileOpDone :
1197 //xrashmic 28 Jan, 2005 MMI-SPR-28166
1198 information_dialog(TxtSaved, TxtNull, NULL, NULL, TxtNull, TxtSoftBack, THREE_SECS, KEY_RIGHT|KEY_HUP, NULL);
1199 break;
1200 default:
1201 FREE_MEMORY((void*)EvtHandle, sizeof(*EvtHandle));
1202 }
1203
1204 return ENoError;
1205 }
1206
1207 /*******************************************************************************
1208
1209 $Function: M4_StoreExtarctedObjectEventHandler
1210
1211 $Description: Event handler for M4_StoreExtarctedObject
1212 xrashmic 7 Dec, 2004 MMI-SPR-23965
1213 $Returns: ESTATUS
1214
1215 $Arguments:
1216 *******************************************************************************/
1217
1218 ESTATUS M4_StoreExtractedObjectEventHandler(EVENT_ID aeId, EVENT_TYPE aeType,
1219 MESSAGE_PARAM ampParam, EVT_HANDLE EvtHandle)
1220 {
1221 ESTATUS status;
1222 switch (aeId)
1223 {
1224 case EMG4_FileOpDone :
1225 attachmentInEMS++;
1226 if(appObj)
1227 appObj->oms.freeFunc(appObj);
1228 if(attachmentInEMS<apExtractableInMessage.NumOfAttachments)
1229 {
1230 EV_ReadExtractableItem(&apExtractableInMessage.pAttachmentsInMessage[attachmentInEMS],&appObj);
1231 status = M4_StoreExtractedObject((char *)appObj->objData.pByteData, appObj->lObjectDataSize, appObj->contentType);
1232 }
1233 else
1234 {
1235 apExtractableInMessage.omh.freeFunc(&apExtractableInMessage);
1236 //xrashmic 08 Feb, 2005 MMI-SPR-27853
1237 //Added more parameters to the information_dialog function
1238 information_dialog(TxtAllObjects, TxtExtracted, NULL,NULL, TxtNull, TxtSoftBack, FOREVER, KEY_RIGHT|KEY_HUP, NULL);
1239 }
1240 break;
1241 case EOutOfMemory:
1242 //xrashmic 08 Feb, 2005 MMI-SPR-27853
1243 //Added more parameters to the information_dialog function
1244 information_dialog(TxtError, TxtExtracting, NULL,NULL, TxtNull, TxtSoftBack, FOREVER, KEY_RIGHT|KEY_HUP, NULL);
1245 break;
1246 default:
1247 FREE_MEMORY((void*)EvtHandle, sizeof(*EvtHandle));
1248 }
1249
1250 return ENoError;
1251 }
1252
1253 /*******************************************************************************
1254
1255 $Function: M4_StoreIntoObjectManager
1256
1257 $Description: Stores objects into Object manager.
1258 xrashmic 7 Dec, 2004 MMI-SPR-23965, MMI-SPR-26161
1259 $Returns: ESTATUS
1260
1261 $Arguments: objbuffer - The object data
1262 size - The object size
1263 evtHandler - contains the call back function for the events
1264 obj_Type - The type of the object
1265 objectId - Object Id
1266 *******************************************************************************/
1267
1268 ESTATUS M4_StoreIntoObjectManager(char *objbuffer, int size,EVT_HANDLE evtHandler, M4_E_OBJECT_TYPE obj_Type,M4_OBJECT_ID objectId)
1269 {
1270 ESTATUS estatus;
1271 M4_S_OBJECT_ITEM *objectItem = NULL;
1272 M4_S_OBJECT_ATTRIB *objectAttrib = NULL;
1273 TRACE_FUNCTION("M4_StoreIntoObjectManager");
1274
1275 objectItem = (M4_S_OBJECT_ITEM*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ITEM));
1276 objectAttrib = (M4_S_OBJECT_ATTRIB*) ALLOC_MEMORY( sizeof(M4_S_OBJECT_ATTRIB));
1277
1278 objectItem->objectSize = size;
1279 objectItem->pData = (MByte *)objbuffer;
1280 objectItem->memHdr.freeFunc = M4_ObjectItemFreeFunc;
1281
1282 objectAttrib->drmInfo = EDrmNotSet;
1283 objectAttrib->memHdr.freeFunc = M4_ObjectAttribFreeFunc;
1284 objectAttrib->objectFile.fileNameLen= sizeof(filename);
1285 objectAttrib->objectFile.pFileName = filename;
1286 objectAttrib->objectId = objectId;
1287 objectAttrib->objectSize = size;
1288 objectAttrib->type = obj_Type;
1289 estatus = OM_StoreObjectAsync(evtHandler,objectItem,objectAttrib);
1290 if (estatus != ENoError)
1291 {
1292 TRACE_EVENT("ERROR inserting into obejct manager");
1293 switch(estatus)
1294 {
1295 case ENotActive:
1296 TRACE_EVENT("ERROR ENotActive");
1297 break;
1298 case EBadArgument:
1299 TRACE_EVENT("ERROR EBadArgument ");
1300 break;
1301 case EObjectAlreadyExists:
1302 TRACE_EVENT("ERROR EObjectAlreadyExists");
1303 break;
1304 case EOutOfMemory:
1305 TRACE_EVENT("ERROR EOutOfMemory");
1306 break;
1307 default:
1308 TRACE_EVENT("ERROR");
1309 }
1310 }
1311 return estatus;
1312 }
1313 /*******************************************************************************
1314
1315 $Function: M4_StoreExtarctedObject
1316
1317 $Description: Insert the extracted object into Object manager.
1318 xrashmic 7 Dec, 2004 MMI-SPR-23965
1319 $Returns: ESTATUS
1320
1321 $Arguments: objbuffer - The object data
1322 size - The object size
1323 obj_Type - The type of the object
1324 *******************************************************************************/
1325
1326 ESTATUS M4_StoreExtractedObject(char *objbuffer, int size, M4_E_OBJECT_TYPE obj_Type)
1327 {
1328 ESTATUS estatus;
1329 EVT_HANDLE evtHandler=NULL;
1330 char tempFile[14];
1331 int strLength=0;
1332 M4_OBJECT_ID objectId;
1333 TRACE_FUNCTION("M4_StoreExtractedObject");
1334 memset(evtHandler,0x00,sizeof(EVT_STRUCT));
1335
1336 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
1337 evtHandler->handler = M4_StoreExtractedObjectEventHandler;
1338
1339
1340 if(obj_Type== EMtEmsMelody || obj_Type==EMtEmsNoteFormat)
1341 {
1342 FFS_flashData.audio_usr_obj++;
1343 strLength=sprintf(tempFile,"Audio%d",FFS_flashData.audio_usr_obj);
1344 objectId=500+ FFS_flashData.audio_usr_obj;
1345 }
1346 else
1347 {
1348 FFS_flashData.image_usr_obj++;
1349 strLength=sprintf(tempFile,"Image%d",FFS_flashData.image_usr_obj);
1350 objectId=500+ FFS_flashData.image_usr_obj;
1351 }
1352 Convert8BitStringToUcs2((const MByte *)&tempFile,strLength,filename);
1353 estatus = M4_StoreIntoObjectManager(objbuffer,size,evtHandler,obj_Type,objectId);
1354 // To update the number of extracted objects.
1355 flash_write();
1356 return estatus;
1357 }
1358
1359
1360 /*******************************************************************************
1361
1362 $Function: M4_StoreDownloadedObject
1363
1364 $Description: Insert the downloaded object into Object manager.
1365 xrashmic 29 Nov, 2004 MMI-SPR-26161
1366 $Returns: ESTATUS
1367
1368 $Arguments: objbuffer - The object data
1369 size - The object size
1370 obj_Type - The type of the object
1371 *******************************************************************************/
1372 ESTATUS M4_StoreDownloadedObject(char *objbuffer, int size, M4_E_OBJECT_TYPE obj_Type )
1373 {
1374 ESTATUS estatus;
1375 EVT_HANDLE evtHandler=NULL;
1376 char tempFile[14];
1377 int strLength=0;
1378 M4_OBJECT_ID objectId;
1379
1380 TRACE_FUNCTION("M4_StoreDownloadedObject");
1381 memset(evtHandler,0x00,sizeof(EVT_STRUCT));
1382 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
1383 evtHandler->handler = M4_StoreDownloadObjEventHandler;
1384 // xreddymn Jan-31-2005 MMI-SPR-28483: Included MIDI MIME type
1385 if((obj_Type==EMtMimeAmr)||(obj_Type==EMtMimeMidi))
1386 {
1387 FFS_flashData.audio_usr_obj++;
1388 strLength=sprintf(tempFile,"Audio%d",FFS_flashData.audio_usr_obj);
1389 objectId=500+ FFS_flashData.audio_usr_obj;
1390 }
1391 else
1392 {
1393 FFS_flashData.image_usr_obj++;
1394 strLength=sprintf(tempFile,"Image%d",FFS_flashData.image_usr_obj);
1395 objectId=500+ FFS_flashData.image_usr_obj;
1396 }
1397 Convert8BitStringToUcs2((const MByte *)&tempFile,strLength,filename);
1398 estatus = M4_StoreIntoObjectManager(objbuffer,size,evtHandler,obj_Type,objectId);
1399 // To update the number of downloaded objects.
1400 flash_write();
1401 return estatus;
1402
1403 }
1404
1405 /*******************************************************************************
1406
1407 $Function: M4_StorePluginObject
1408
1409 $Description: Insert the Pluign object into Object manager.
1410 xrashmic 28 Jan, 2004 MMI-SPR-28166
1411 $Returns: ESTATUS
1412
1413 $Arguments: objbuffer - The object data
1414 size - The object size
1415 obj_Type - The type of the object
1416 *******************************************************************************/
1417 ESTATUS M4_StorePluginObject(char *objbuffer, int size, M4_E_OBJECT_TYPE obj_Type )
1418 {
1419 ESTATUS estatus;
1420 EVT_HANDLE evtHandler=NULL;
1421 char tempFile[14];
1422 int strLength=0;
1423 M4_OBJECT_ID objectId;
1424
1425 TRACE_FUNCTION("M4_StoreDownloadedObject");
1426 memset(evtHandler,0x00,sizeof(EVT_STRUCT));
1427 evtHandler = (EVT_HANDLE)ALLOC_MEMORY(sizeof(EVT_STRUCT));
1428 evtHandler->handler = M4_StorePluginObjEventHandler;
1429 // xreddymn Jan-31-2005 MMI-SPR-28483: Included MIDI MIME type
1430 if((obj_Type==EMtMimeAmr)||(obj_Type==EMtMimeMidi))
1431 {
1432 FFS_flashData.audio_usr_obj++;
1433 strLength=sprintf(tempFile,"Audio%d",FFS_flashData.audio_usr_obj);
1434 objectId=500+ FFS_flashData.audio_usr_obj;
1435 }
1436 else
1437 {
1438 FFS_flashData.image_usr_obj++;
1439 strLength=sprintf(tempFile,"Image%d",FFS_flashData.image_usr_obj);
1440 objectId=500+ FFS_flashData.image_usr_obj;
1441 }
1442 Convert8BitStringToUcs2((const MByte *)&tempFile,strLength,filename);
1443 estatus = M4_StoreIntoObjectManager(objbuffer,size,evtHandler,obj_Type,objectId);
1444 // To update the number of downloaded objects.
1445 flash_write();
1446 return estatus;
1447
1448 }
1449
1450
1451 #undef MMI_MMSOM_C
1452