📄 jmmscomposeutils.c
字号:
* size [IN]
* 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_template(
U8 *buffer,
U8 *content_type,
U32 size,
U8 type,
U8 is_attachment,
U8 page_index)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MEDIA_INFO *media_info_p;
JC_RETCODE ret_code = JC_OK;
JMMS_COMP_ERRCODE err_code;
U32 media_id;
U8 *media_buffer_p = NULL;
U8 region_size = 0;
U8 object_name_size = 0;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_add_media_template"));
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;
}
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))
{
region_size = strlen(STRING_IMAGE);
media_info_p->PresentationInfo.pRegionName = (JC_CHAR*) jdd_MemAlloc(sizeof(JC_CHAR), region_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_FALSE;
media_info_p->pMimeInfo->ContentData.eCopyMemory = E_FALSE;
media_buffer_p = (U8*) jdd_MemAlloc(size, sizeof(U8));
if (media_buffer_p == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
memcpy(media_buffer_p, buffer, size);
media_info_p->pMimeInfo->ContentData.pBuffer = media_buffer_p;
media_info_p->pMimeInfo->ContentData.uiCurSize = size;
media_info_p->pMimeInfo->ContentData.uiTotalSize = size;
media_info_p->pMimeInfo->ContentData.cbReadCallback = NULL;
media_info_p->pMimeInfo->ContentData.cbWriteCallback = NULL;
media_info_p->pMimeInfo->ContentData.uiStartOffset = 0;
media_info_p->pMimeInfo->ContentData.pFileName = NULL;
media_info_p->pMimeInfo->MimeHeaders.bIsAttachment = is_attachment;
if (is_attachment == E_FALSE && (type == E_MEDIA_IMAGE || type == E_MEDIA_VIDEO))
{
object_name_size = strlen(STRING_IMAGE);
}
else if (is_attachment == E_FALSE)
{
object_name_size = strlen(STRING_AUDIO);
}
else
{
object_name_size = strlen(STRING_ATTACHMENT);
}
media_info_p->pMimeInfo->MimeHeaders.pObjectName = (JC_CHAR*) jdd_MemAlloc(sizeof(JC_CHAR), object_name_size + 1);
if (media_info_p->pMimeInfo->MimeHeaders.pObjectName == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
if (is_attachment == E_FALSE && (type == E_MEDIA_IMAGE || type == E_MEDIA_VIDEO))
{
AnsiiToUnicodeString((PS8)(media_info_p->pMimeInfo->MimeHeaders.pObjectName), (PS8) (STRING_IMAGE));
}
else if (is_attachment == E_FALSE)
{
AnsiiToUnicodeString((PS8)(media_info_p->pMimeInfo->MimeHeaders.pObjectName), (PS8) (STRING_AUDIO));
}
else
{
AnsiiToUnicodeString((PS8)(media_info_p->pMimeInfo->MimeHeaders.pObjectName), (PS8) (STRING_ATTACHMENT));
}
media_info_p->pMimeInfo->MimeHeaders.pContentType =
(JC_INT8*) jdd_MemAlloc(sizeof(JC_INT8), strlen((S8*) content_type) + 1);
if (media_info_p->pMimeInfo->MimeHeaders.pContentType == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
strcpy((S8*) media_info_p->pMimeInfo->MimeHeaders.pContentType, (S8*) content_type);
/* add media */
ret_code = mmi_jmms_jdi_add_media(g_jmms_context->msg_handle, media_info_p, page_index, &media_id);
ERROR_HANDLE:
err_code = mmi_jmms_compose_handle_error(ret_code, 0);
switch (err_code)
{
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;
}
mmi_jmms_set_region_list();
if (media_info_p != NULL)
{
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
return err_code;
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_compose_add_text
* DESCRIPTION
* fn to add text.
* PARAMETERS
* page_index [IN]
* text_font [IN]
* txt_color [IN]
* a(?) [IN/OUT] Nil(?)
* b(?) [IN] Nil(?)
* RETURNS
* void
*****************************************************************************/
/* U8 media_buffer_p[3000]; */
JMMS_COMP_ERRCODE mmi_jmms_compose_add_text(U8 page_index, UI_font_type text_font, U32 txt_color, S32 update_text_id)
{
/*----------------------------------------------------------------*/
/* Local Variables */
/*----------------------------------------------------------------*/
MEDIA_INFO *media_info_p;
JC_RETCODE ret_code = JC_OK;
JMMS_COMP_ERRCODE err_code;
U32 media_id;
U32 buffer_size;
U8 size;
U8 *media_buffer_p = NULL;
/*----------------------------------------------------------------*/
/* Code Body */
/*----------------------------------------------------------------*/
PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_add_text"));
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;
}
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 = E_MEDIA_TEXT;
media_info_p->PresentationInfo.pTextAttributes =
(TEXT_ATTRIBUTES*) jdd_MemAlloc(sizeof(TEXT_ATTRIBUTES), sizeof(U8));
if (media_info_p->PresentationInfo.pTextAttributes == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
if (text_font->bold == 1)
{
media_info_p->PresentationInfo.pTextAttributes->bIsBold = E_TRUE;
}
if (text_font->italic == 1)
{
media_info_p->PresentationInfo.pTextAttributes->bIsItalic = E_TRUE;
}
media_info_p->PresentationInfo.pTextAttributes->pFontColor =
(JC_INT8*) jdd_MemAlloc((strlen("#rrggbb") + 1), sizeof(JC_INT8));
if (media_info_p->PresentationInfo.pTextAttributes->pFontColor == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
mmi_jmms_convert_u32To_hash_col_string(txt_color, media_info_p->PresentationInfo.pTextAttributes->pFontColor);
switch (text_font->size)
{
case SMALL_FONT:
media_info_p->PresentationInfo.pTextAttributes->uiFontSize = MMS_SIZE_SMALL;
break;
case LARGE_FONT:
media_info_p->PresentationInfo.pTextAttributes->uiFontSize = MMS_SIZE_LARGE;
break;
case MEDIUM_FONT:
media_info_p->PresentationInfo.pTextAttributes->uiFontSize = MMS_SIZE_NORMAL;
break;
}
media_info_p->pMimeInfo->MimeHeaders.pContentType =
(JC_INT8*) jdd_MemAlloc(jc_strlen("text/plain") + 1, sizeof(JC_INT8));
if (media_info_p->pMimeInfo->MimeHeaders.pContentType == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
jc_strcpy(media_info_p->pMimeInfo->MimeHeaders.pContentType, "text/plain");
size = strlen(STRING_TEXT);
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_TEXT));
buffer_size = jc_tcslen((UI_character_type*) g_jmms_context->compose_context->curr_slide_info.edit_content_buffer) *
sizeof(JC_CHAR);
media_info_p->pMimeInfo->ContentData.uiTotalSize = buffer_size;
media_info_p->pMimeInfo->ContentData.uiCurSize = buffer_size;
media_buffer_p = (U8*) jdd_MemAlloc(buffer_size + 1, sizeof(U16));
if (media_buffer_p == NULL)
{
ret_code = JC_ERR_MEMORY_ALLOCATION;
goto ERROR_HANDLE;
}
jc_tcscpy(
(UI_character_type*) media_buffer_p,
(UI_character_type*) g_jmms_context->compose_context->curr_slide_info.edit_content_buffer);
media_info_p->pMimeInfo->ContentData.pBuffer = media_buffer_p;
ret_code = mmi_jmms_jdi_add_media(g_jmms_context->msg_handle, media_info_p, page_index, &media_id);
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(update_text_id)
g_jmms_context->compose_context->curr_slide_info.text_ID = media_id;
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->MimeHeaders.pContentType != NULL)
{
jdd_MemFree(media_info_p->pMimeInfo->MimeHeaders.pContentType);
}
jdd_MemFree(media_info_p->pMimeInfo);
}
if (media_info_p->PresentationInfo.pRegionName != NULL)
{
jdd_MemFree(media_info_p->PresentationInfo.pRegionName);
}
if (media_info_p->PresentationInfo.pTextAttributes != NULL)
{
jdd_MemFree(media_info_p->PresentationInfo.pTextAttributes);
}
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
if (media_buffer_p != NULL)
{
jdd_MemFree(media_buffer_p);
}
}
err_code = JMMS_COMP_FAIL;
break;
}
mmi_jmms_set_region_list();
if (media_info_p != NULL)
{
jdd_MemFree(media_info_p);
media_info_p = NULL;
}
return err_code;
}
/*****************************************************************************
* FUNCTION
* mmi_jmms_compose_update_text
* DESCRIPTION
* fn to update text media.
* PARAMETERS
* page_index [IN]
* media_id [IN]
* a(?) [IN/OUT] Nil(?)
* b(?) [IN] Nil(?)
* RETURNS
* void
*****************************************************************************/
/* U8 media_buffer_p[3000]; */
JMMS_COMP_ERRCODE mmi_jmms_compose_update_text(U8 page_index, U32 media_id)
{
/*----------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -