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

📄 jmmscomposeutils.c

📁 MTK_MMI的部分源代码,从code中大致了解到MMI的执行流程
💻 C
📖 第 1 页 / 共 5 页
字号:
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_UINT8 *media_buffer_p;
    U32 buffer_size;
    JC_RETCODE ret_code = JC_OK;
    JMMS_COMP_ERRCODE err_code;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_update_text"));
    buffer_size = jc_tcslen((JC_CHAR*) g_jmms_context->compose_context->curr_slide_info.edit_content_buffer) * sizeof(JC_CHAR);
    media_buffer_p = (U8*) jdd_MemAlloc(buffer_size + 1, sizeof(JC_CHAR));
    if (media_buffer_p == NULL)
    {
        ret_code = JC_ERR_MEMORY_ALLOCATION;
        goto ERROR_HANDLE;
    }
    jc_tcscpy(
        (JC_CHAR*) media_buffer_p,
        (JC_CHAR*) g_jmms_context->compose_context->curr_slide_info.edit_content_buffer);

    ret_code = mmi_jmms_jdi_update_inline_text(
                g_jmms_context->msg_handle,
                (JC_UINT8*) media_buffer_p,
                buffer_size,
                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_buffer_p != NULL)
            {
                jdd_MemFree(media_buffer_p);
            }
            err_code = JMMS_COMP_FAIL;
            break;
    }
    return err_code;

}


/*****************************************************************************
 * FUNCTION
 *  mmi_mms_get_mms_content_type_file
 * DESCRIPTION
 *  returns the content type of media file.
 * PARAMETERS
 *  file_name_p     [?]     [?]
 *  a(?)            [IN/OUT]        Nil(?)
 *  b(?)            [IN]            Nil(?)
 * RETURNS
 *  void
 *****************************************************************************/
U8 *mmi_mms_get_mms_content_type_file(JC_CHAR *file_name_p)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    U8 *content_type_p = NULL;
    JC_CHAR *tmp_file_name = NULL;
    applib_mime_type_struct *mime_info = NULL;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_mms_get_mms_content_type_file"));
    if (file_name_p)
    {
        U32 iIndex = 0;

        tmp_file_name = jdi_UtilsTcsDup(file_name_p);
        tmp_file_name = jdi_UtilsTcsUpperToLower((JC_CHAR*) tmp_file_name);

        iIndex = jdi_UtilsLastIndexOfTchar('.', tmp_file_name, jc_tcslen(tmp_file_name) - 1);
        if (iIndex > 0 && jc_tcslen(tmp_file_name) != (U32) iIndex)
        {
            U16 uhCounter = 0;

            iIndex++;
            while (*(g_content_type_list[uhCounter][0]) != 0)
            {
                if (jdi_UtilsTcsStrCmp(tmp_file_name + iIndex, g_content_type_list[uhCounter][1]) == 0)
                {
                    content_type_p = (U8*) jdi_UtilsStrdup(g_content_type_list[uhCounter][0]);
                    break;
                }
                uhCounter++;
            }
        }
    }
    if (tmp_file_name)
    {
        jdd_MemFree(tmp_file_name);
    }
    if (content_type_p == NULL)
    {
         if(mime_get_extension(file_name_p) != NULL)
         {
             mime_info = mime_get_file_type(file_name_p);
         }

        if (mime_info == NULL)
        {
            content_type_p = (U8*) jdi_UtilsStrdup("application/octet-stream");
        }
        else
        {
            content_type_p = (U8*) jdi_UtilsStrdup(mime_info->mime_string);
        }
    }
    return content_type_p;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_is_mime_found_in_g_content_type_list
 * DESCRIPTION
 *  returns the content type of media file.
 * PARAMETERS
 *  pszContentType     [IN]
 * RETURNS
 *  JC_BOOLEAN
 *****************************************************************************/
JC_BOOLEAN mmi_jmms_is_mime_found_in_g_content_type_list(JC_INT8 *pszContentType)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    S32 uhCounter = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    while (*(g_content_type_list[uhCounter][0]) != 0)
    {
        if (strcmp(pszContentType, (PS8)(g_content_type_list[uhCounter][0])) == 0)
        {
            return E_TRUE;
        }
        uhCounter++;
    }
    return E_FALSE;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_compose_delete_media
 * DESCRIPTION
 *  fn to delete media.
 * PARAMETERS
 *  media_id            [IN]        
 *  page_index          [IN]        
 *  is_attachment       [IN]        
 *  a(?)                [IN/OUT]        Nil(?)
 *  b(?)                [IN]            Nil(?)
 * RETURNS
 *  void
 *****************************************************************************/
/* U8 media_buffer_p[3000]; */
JMMS_COMP_ERRCODE mmi_jmms_compose_delete_media(U32 media_id, U8 page_index, U8 is_attachment)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE ret_code = JC_OK;
    JMMS_COMP_ERRCODE err_code;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_delete_media"));
    ret_code = mmi_jmms_jdi_delete_media(g_jmms_context->msg_handle, page_index, media_id, is_attachment);

    err_code = mmi_jmms_compose_handle_error(ret_code, 0);
    return err_code;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_compose_delete_page
 * DESCRIPTION
 *  fn to delete media.
 * PARAMETERS
 *  page_index      [IN]        
 *  a(?)            [IN/OUT]        Nil(?)
 *  b(?)            [IN]            Nil(?)
 * RETURNS
 *  void
 *****************************************************************************/
/* U8 media_buffer_p[3000]; */
JMMS_COMP_ERRCODE mmi_jmms_compose_delete_page(U8 page_index)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE ret_code = JC_OK;
    JMMS_COMP_ERRCODE err_code;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_delete_page"));
    ret_code = mmi_jmms_jdi_delete_page(g_jmms_context->msg_handle, page_index);

    err_code = mmi_jmms_compose_handle_error(ret_code, 1);

    return err_code;

}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_compose_get_media_list
 * DESCRIPTION
 *  fn to delete media.
 * PARAMETERS
 *  page_index          [IN]        
 *  media_info_p        [IN]        
 *  media_count         [?]         [?]
 *  is_attachment       [IN]        
 *  a(?)                [IN/OUT]        Nil(?)
 *  b(?)                [IN]            Nil(?)
 * RETURNS
 *  void
 *****************************************************************************/
/* U8 media_buffer_p[3000]; */
JMMS_COMP_ERRCODE mmi_jmms_compose_get_media_list(
                    U8 page_index,
                    MEDIA_INFO **media_info_p,
                    U8 *media_count,
                    U8 is_attachment)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE ret_code = JC_OK;
    JMMS_COMP_ERRCODE err_code;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_get_media_list"));
    ret_code = mmi_jmms_jdi_get_media_list(g_jmms_context->msg_handle, page_index, media_info_p, media_count, is_attachment);

    err_code = mmi_jmms_compose_handle_error(ret_code, 0);
    if (*media_count == 0)
    {
        err_code = JMMS_COMP_FAIL;
    }
    return err_code;
}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_compose_insert_slide
 * DESCRIPTION
 *  This fn inserts a slide.
 * PARAMETERS
 *  void
 *  a(?)        [IN/OUT]        Nil(?)
 *  b(?)        [IN]            Nil(?)
 * RETURNS
 *  void
 *****************************************************************************/
JMMS_COMP_ERRCODE mmi_jmms_compose_insert_slide(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JC_RETCODE ret_code = JC_OK;
    JMMS_COMP_ERRCODE err_code;
    U8 max_page = 0, count = 0;
    U32 slide_time = 0;

    /*----------------------------------------------------------------*/
    /* Code Body                                                      */
    /*----------------------------------------------------------------*/
    PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s", "Inside mmi_jmms_compose_insert_slide"));
	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "Previous Set Values: Text Size of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.size, g_jmms_context->jmms_inline_items.text_settings_items.size_selected));
	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "Previous Set Values: Italic Selection of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.italic, g_jmms_context->jmms_inline_items.text_settings_items.italic_selected));
	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "Previous Set Values: Bold Selection of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.bold, g_jmms_context->jmms_inline_items.text_settings_items.bold_selected));

    max_page = (U8) mmi_jmms_compose_settings_max_no_pages();

    if (max_page > g_jmms_context->compose_context->curr_page_index)
    {
        ret_code = mmi_jmms_jdi_add_page(
                    g_jmms_context->msg_handle,
                    (U8) (g_jmms_context->compose_context->curr_page_index + 1));
    }
    else
    {
        ret_code = JC_ERR_MSG_MAX_REACHED;
    }

    err_code = mmi_jmms_compose_handle_error(ret_code, 1);

    switch (err_code)
    {
        case JMMS_COMP_OK:
        {
            g_jmms_context->compose_context->curr_page_index++;
            /* shuffling of compose_context->duration handling array  */
            for(count = MAX_POSSIBLE_SLIDES - 1; count >= g_jmms_context->compose_context->curr_page_index ; count-- )
            {
                g_jmms_context->compose_context->duration[count].txt_dur_max_set = g_jmms_context->compose_context->duration[count - 1].txt_dur_max_set;
                g_jmms_context->compose_context->duration[count].img_dur_max_set = g_jmms_context->compose_context->duration[count - 1].img_dur_max_set;
                g_jmms_context->compose_context->duration[count].audio_dur_max_set = g_jmms_context->compose_context->duration[count - 1].audio_dur_max_set;
                g_jmms_context->compose_context->duration[count].video_dur_max_set = g_jmms_context->compose_context->duration[count - 1].video_dur_max_set;
            }
            mmi_jmms_compose_fill_default_values_slide_settings();
            slide_time = mmi_jmms_compose_settings_default_slide_time();
            err_code = mmi_jmms_save_page_time(slide_time);
            if (err_code == JMMS_COMP_OK)
            {
                g_jmms_context->compose_context->curr_slide_info.slide_prop.slide_time = slide_time;
            }

            memset(
                g_jmms_context->compose_context->curr_slide_info.edit_content_buffer,
                0,
                (JMMS_COMPOSE_TEXT_LENGTH + 1) * ENCODING_LENGTH);
            g_jmms_context->compose_context->curr_slide_info.text_ID = 0;
            g_jmms_context->compose_context->curr_slide_info.image_ID = 0;
            g_jmms_context->compose_context->curr_slide_info.audio_ID = 0;
            g_jmms_context->compose_context->curr_slide_info.video_ID = 0;

            /* shuffling of is_image_first handling array  */
            for(count = MAX_POSSIBLE_SLIDES - 1; count >= g_jmms_context->compose_context->curr_page_index ; count-- )
            {
               g_jmms_context->compose_context->is_image_first[ count ] = g_jmms_context->compose_context->is_image_first[ count - 1 ]; 
            }

            g_jmms_context->compose_context->is_image_first[ g_jmms_context->compose_context->curr_page_index - 1 ] = 0;

        }
            break;
    }

	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "After Set Values: Text Size of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.size, g_jmms_context->jmms_inline_items.text_settings_items.size_selected));
	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "After Set Values: Italic Selection of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.italic, g_jmms_context->jmms_inline_items.text_settings_items.italic_selected));
	PRINT_INFORMATION_2((MMI_TRACE_INFO, "%s %d %d", "After Set Values: Bold Selection of compose context and inline item is: ", g_jmms_context->compose_context->curr_slide_info.slide_prop.text_font.bold, g_jmms_context->jmms_inline_items.text_settings_items.bold_selected));

    return err_code;

}


/*****************************************************************************
 * FUNCTION
 *  mmi_jmms_exit_curr_slide
 * DESCRIPTION
 *  This fn inserts a slide.
 * PARAMETERS
 *  void
 *  a(?)        [IN/OUT]        Nil(?)
 *  b(?)        [IN]            Nil(?)
 * RETURNS
 *  JMMS_COMP_ERRCODE
 *****************************************************************************/
JMMS_COMP_ERRCODE mmi_jmms_exit_curr_slide(void)
{
    /*----------------------------------------------------------------*/
    /* Local Variables                                                */
    /*----------------------------------------------------------------*/
    JMMS_COMP_ERRCODE err_code = JMMS_COMP_OK;

    /*----------------------------------------------------------------*

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -