⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 jmmscomposeutils.c

📁 MTK_MMI的部分源代码,从code中大致了解到MMI的执行流程
💻 C
📖 第 1 页 / 共 5 页
字号:
 *  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 + -