📄 jmmscomposeutils.c
字号:
* hMsg [IN]
* pCallbackArg [?] [?]
* pCBStruct [?] [?]
* error [IN]
* RETURNS
*
*****************************************************************************/
JC_RETCODE mmi_jmms_error_ind_cb(MSG_HANDLE hMsg, void *pCallbackArg, void *pCBStruct, ErrorCode error)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
JC_RETCODE ret_code = JC_OK;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
/*DIlip 30 aug 2006 commented to handel Is media already exist error indicator call back*/
/* g_jmms_context->is_add_media_warning = 0;*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "mmi_jmms_error_ind_cb %d", error));
switch (error)
{
case E_WARNING_CREATION_MODE:
g_jmms_context->is_add_media_warning = 1;
break;
case E_WARNING_DRM_FORWARD_RESTRICTED:
ret_code = JC_ERR_MSG_DRM_FORWARD_RESTRICTED;
break;
}
return ret_code;
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_compose_add_media
* DESCRIPTION
* fn to add media.
* PARAMETERS
* path_p [?] [?]
* type [IN]
* is_attachment [IN]
* page_index [IN]
* a(?) [IN/OUT] Nil(?)
* b(?) [IN] Nil(?)
* RETURNS
* void
*****************************************************************************/
JMMS_COMP_ERRCODE mmi_jmms_compose_add_media(void *path_p, U8 type, U8 is_attachment, U8 page_index)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MEDIA_INFO *media_info_p;
S8 *file_name_p;
U32 file_size = 0;
/* FS_HANDLE file_handle; */
JC_RETCODE ret_code = JC_OK;
JMMS_COMP_ERRCODE err_code;
U32 media_id;
JDD_FILE file_handle;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_add_media"));
media_info_p = (MEDIA_INFO*) jdd_MemAlloc(sizeof(MEDIA_INFO), sizeof(U8));
if (media_info_p == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
if (g_jmms_context->jmms_fs_handle == NULL)
{
if (jdd_FSInitialize(&g_jmms_context->jmms_fs_handle) != JC_OK)
{
ret_code = JC_ERR_FILE_SYS_INIT;
goto ERROR_HANDLE;
}
}
file_name_p = mmi_fmgr_extract_file_name((S8*) path_p);
file_handle = jdd_FSOpen(g_jmms_context->jmms_fs_handle, (U16*) path_p, E_OPEN_READ_MODE);
if (file_handle == NULL)
{
ret_code = JC_ERR_FILE_OPEN;
goto ERROR_HANDLE;
}
jdd_FSGetSize(file_handle, &file_size);
jdd_FSClose(file_handle);
media_info_p->pMimeInfo = (MEDIA_MIME_INFO*) jdd_MemAlloc(sizeof(MEDIA_MIME_INFO), sizeof(U8));
if (media_info_p->pMimeInfo == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
media_info_p->eMediaType = type;
if (is_attachment == E_FALSE && (type == E_MEDIA_IMAGE || type == E_MEDIA_VIDEO))
{
U8 size;
size = strlen(STRING_IMAGE);
media_info_p->PresentationInfo.pRegionName = (JC_CHAR*) jdd_MemAlloc(sizeof(JC_CHAR), size + 1);
if (media_info_p->PresentationInfo.pRegionName == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
AnsiiToUnicodeString((PS8)(media_info_p->PresentationInfo.pRegionName), (PS8) (STRING_IMAGE) );
}
media_info_p->pMimeInfo->ContentData.bIsStream = E_TRUE;
media_info_p->pMimeInfo->ContentData.eCopyMemory = E_FALSE;
media_info_p->pMimeInfo->ContentData.pBuffer = NULL;
media_info_p->pMimeInfo->ContentData.uiCurSize = 0;
media_info_p->pMimeInfo->ContentData.uiTotalSize = file_size;
media_info_p->pMimeInfo->ContentData.cbReadCallback = mmi_jmms_read_callback;
media_info_p->pMimeInfo->ContentData.cbWriteCallback = NULL;
media_info_p->pMimeInfo->ContentData.uiStartOffset = 0;
media_info_p->pMimeInfo->ContentData.pFileName =
(JC_CHAR*) jdd_MemAlloc((jc_tcslen((JC_CHAR*) path_p) + 1), sizeof(JC_CHAR));
if (media_info_p->pMimeInfo->ContentData.pFileName == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
jc_tcscpy((UI_character_type*) media_info_p->pMimeInfo->ContentData.pFileName, (UI_character_type*) path_p);
media_info_p->pMimeInfo->ContentData.pStream = media_info_p->pMimeInfo->ContentData.pFileName;
media_info_p->pMimeInfo->MimeHeaders.bIsAttachment = is_attachment;
if ((GetUCS2Flag((S8*) file_name_p) == FALSE )&& (IsExtendedCharPresent((S8*) file_name_p)== FALSE))
{
media_info_p->pMimeInfo->MimeHeaders.pObjectName =
(JC_CHAR*) jdd_MemAlloc((jc_tcslen((JC_CHAR*) file_name_p) + 1), sizeof(JC_CHAR));
if (media_info_p->pMimeInfo->MimeHeaders.pObjectName == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
jc_tcscpy((JC_CHAR*) media_info_p->pMimeInfo->MimeHeaders.pObjectName, (JC_CHAR*) file_name_p);
}
else
{
ret_code = mmi_jmms_convert_chinese_english_filename(
(JC_CHAR **) & (media_info_p->pMimeInfo->MimeHeaders.pObjectName),
(JC_CHAR*) file_name_p);
if (ret_code != JC_OK)
{
goto ERROR_HANDLE;
}
}
#ifdef __DRM_SUPPORT__
if(jMMS_is_sep_delivery_content(path_p))/* && (mmi_jmms_compose_settings_creation_mode() == E_CREATION_MODE_RESTRICTED))*/
{
media_info_p->pMimeInfo->MimeHeaders.pContentType = jdi_UtilsStrdup("application/vnd.oma.drm.content");
}
else
{
#endif /* __DRM_SUPPORT__ */
media_info_p->pMimeInfo->MimeHeaders.pContentType =
(JC_INT8*) mmi_mms_get_mms_content_type_file((UI_character_type*) file_name_p);
#ifdef __DRM_SUPPORT__
}
#endif
if (media_info_p->pMimeInfo->MimeHeaders.pContentType == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
/* add media */
ret_code = mmi_jmms_jdi_add_media(g_jmms_context->msg_handle, media_info_p, page_index, &media_id);
if(ret_code != JC_OK)
{
goto ERROR_HANDLE;
}
#ifdef __DRM_SUPPORT__
if(is_add_media_as_drm)
{
ret_code = jdi_MsgSetMediaDRMType (g_jmms_context->msg_handle, page_index,
media_id, E_DRM_FWD_LOCK,
media_info_p->pMimeInfo->MimeHeaders.bIsAttachment);
mmi_jmms_jdi_msg_register_callback(g_jmms_context->msg_handle,
E_CB_DRM_COMPOSE,
(void*)jMMS_drm_compose_handler);
is_add_media_as_drm = MMI_FALSE;
}
else
{
ret_code = jdi_MsgSetMediaDRMType (g_jmms_context->msg_handle, page_index,
media_id, E_DRM_NONE,
media_info_p->pMimeInfo->MimeHeaders.bIsAttachment);
}
#endif
ERROR_HANDLE:
err_code = mmi_jmms_compose_handle_error(ret_code, 0);
switch (err_code)
{
case JMMS_COMP_OK:
case JMMS_COMP_POPUP_OK:
{
if (is_attachment == E_FALSE)
{
U32 start_time = 0;
U32 duration = 0, audio_duration = 0;
U32 max = 999;
#ifdef __MMI_VIDEO_PLAYER__
U64 video_duration = 0;
#endif
switch (type)
{
case E_MEDIA_IMAGE:
{
g_jmms_context->compose_context->curr_slide_info.image_ID = media_id;
g_jmms_context->compose_context->curr_slide_info.img_info.pFileName =
(U8*) media_info_p->pMimeInfo->ContentData.pFileName;
break;
}
case E_MEDIA_AUDIO:
g_jmms_context->compose_context->curr_slide_info.audio_ID = media_id;
mdi_audio_get_duration((S8*) path_p, &audio_duration);
duration = audio_duration / 1000;
duration = (duration >= max)? max : ((audio_duration % 1000) > 0)?(duration + 1) : duration;
err_code = mmi_jmms_set_media_time(
start_time,
duration,
g_jmms_context->compose_context->curr_slide_info.audio_ID,
g_jmms_context->compose_context->curr_page_index);
break;
case E_MEDIA_VIDEO:
g_jmms_context->compose_context->curr_slide_info.video_ID = media_id;
g_jmms_context->compose_context->curr_slide_info.img_info.pFileName =
(U8*) media_info_p->pMimeInfo->ContentData.pFileName;
#ifdef __MMI_VIDEO_PLAYER__
video_duration = mmi_jdd_videoapp_get_video_file_duration_info((S8*) path_p);
duration = (U32)( video_duration / 1000);
duration = (duration >= max)? max : ((video_duration % 1000) > 0)?(duration + 1) : duration;
err_code = mmi_jmms_set_media_time(
start_time,
duration,
g_jmms_context->compose_context->curr_slide_info.video_ID,
g_jmms_context->compose_context->curr_page_index);
#endif
break;
}
}
else
{
g_jmms_context->num_attachments++;
}
}
break;
case JMMS_COMP_FAIL:
case JMMS_COMP_OUT_MEMORY: /* deallocate memory for new slide and out of mmeory case. */
{
if (media_info_p != NULL)
{
if (media_info_p->pMimeInfo != NULL)
{
if (media_info_p->pMimeInfo->ContentData.pFileName != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->ContentData.pFileName);
}
if (media_info_p->pMimeInfo->MimeHeaders.pContentType != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->MimeHeaders.pContentType);
}
if (media_info_p->pMimeInfo->MimeHeaders.pObjectName != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->MimeHeaders.pObjectName);
}
jdd_MemFree(media_info_p->pMimeInfo);
}
if (media_info_p->PresentationInfo.pRegionName != NULL)
{
jdd_MemFree(media_info_p->PresentationInfo.pRegionName);
}
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
}
err_code = JMMS_COMP_FAIL;
break;
case JMMS_COMP_NEW_SLIDE:
{
JMMS_COMP_ERRCODE temp_err_code;
if (media_info_p != NULL)
{
if (media_info_p->pMimeInfo != NULL)
{
if (media_info_p->pMimeInfo->ContentData.pFileName != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->ContentData.pFileName);
}
if (media_info_p->pMimeInfo->MimeHeaders.pContentType != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->MimeHeaders.pContentType);
}
if (media_info_p->pMimeInfo->MimeHeaders.pObjectName != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->MimeHeaders.pObjectName);
}
jdd_MemFree(media_info_p->pMimeInfo);
}
if (media_info_p->PresentationInfo.pRegionName != NULL)
{
jdd_MemFree(media_info_p->PresentationInfo.pRegionName);
}
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
temp_err_code = mmi_jmms_compose_insert_slide();
if (temp_err_code == JMMS_COMP_OK)
{
HistoryReplace(SCR_ID_JMMS_EDIT_CONTENT, SCR_ID_JMMS_EDIT_CONTENT, mmi_jmms_entry_edit_content_screen); /* to delete guibuffer details as entering new slide. */
temp_err_code = mmi_jmms_compose_add_media(path_p, type, is_attachment, (U8) (page_index + 1));
}
if (temp_err_code != JMMS_COMP_OK)
{
err_code = temp_err_code;
}
else
{
err_code = JMMS_COMP_POPUP_OK;
}
}
break;
}
mmi_jmms_set_region_list();
if (g_jmms_context->jmms_fs_handle != NULL)
{
jdd_FSDeinitialize(g_jmms_context->jmms_fs_handle);
g_jmms_context->jmms_fs_handle = NULL;
}
if (media_info_p != NULL)
{
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
return err_code;
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_compose_add_media_template
* DESCRIPTION
* fn to add media.
* PARAMETERS
* buffer [?] [?]
* content_type [?] [?]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -