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

📄 plxmms_edit.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
        pType= "audio/x-imy";
        MMS_Strcat((char*)obj_name, ".imy");
        break;
    default: 
        goto will_enter_edit;
    }

    if(IsLowSpace(mmsmsg_GetMessageSize(message) + param->sound_length))
    {
        PLIB_MessageBox(PMBTYPE_ERROR, NULL, 
            (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_NOSPACE), 0);
        goto pub_edit_err;
    }

    if(param->sound)
    {
        add_result = mmsmsg_AddContent(message, (char*)obj_name, 
            MMS_AUDIO, (const char*)pType, param->sound_length, 
            param->sound, NULL, 0, 0, 0, 0, FALSE);
    }
    else if(param->sound_file)
    {
        frr = frr_CreateRecord();
        if(!frr)
            goto pub_edit_err;

        //set name
        if(!frr_SetFileName(frr, (S8*)param->sound_file))
        {
            frr_ReleaseRecord(frr);
            goto pub_edit_err;
        }

        add_result = mmsmsg_AddContent(message, (char*)obj_name, 
            MMS_AUDIO, (const char*)pType, param->sound_length, 
            NULL, frr, 0, 0, 0, 0, FALSE);
    }
    else
    {
        goto will_enter_edit;
    }

    if(!add_result)
        goto pub_edit_err;
    
will_enter_edit:

    //enter editing screen
    g_edit_data.mmse = mmse;
    g_edit_data.message = message;
//    g_edit_data.cur_slide_dur = 2000; //get from config
    g_edit_data.pub_callback = callback;
    g_edit_data.bPubCall = TRUE;
    g_edit_data.back_screen = GetActiveScreenId();

    MMS_Strcpy(g_edit_data.to, mmsmsg_GetPhoneNum(g_edit_data.message, 0));
    MmsEditInitRecvLists();
    MmsEditInitSub();

    EnterEditMainMenu();

    return TRUE;

pub_edit_err:
    if(number)
        MMS_Free((void*)number);
    if(utf8_text)
        MMS_Free((void*)utf8_text);
    if(message)
        mmsmsg_ReleaseMmsMessage(message);
    if(mmse)
        MMSE_Close(mmse);

    MMS_Memset((void*)&g_edit_data, 0, sizeof(g_edit_data));
    return FALSE;
}

/***************************************************************************
* Function	SendMmsDirect
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL SendMmsDirect(void* mmse, MmsSendParam* param)
{
    char*       utf8_text = NULL;
    long        utf8_len;
    MmsMessage* msg       = NULL;
    BOOL        bMalloc   = FALSE;

    if(!param || !mmse)
        return FALSE;

    //no number
    if(param->number[0] == 0)
        return FALSE;

    //create message
    msg = mmsmsg_CreateMmsMessage();
    if(!msg)
        goto send_err;

    //init message, same as init a new empty message
    switch(mmsmsg_InitWithMode(msg, mmse, 
        -1, EditCreateNew, MMSE_FOLDER_DRAFT))
    {
    case INIT_ERR_MAXMSGNUM:
        //PLXTipsWin((char*)MMS_STR_MMSFULL, "", 1);
        goto send_err;
    case INIT_ERR_FAILED:
        goto send_err;
    default:
        break;
    }

    //add slide
    mmsmsg_AddSlide(msg, 0, 0);
    //set receiver
    mmsmsg_SetPhoneNum(msg, param->number, MMS_Strlen(param->number), 0);
    //set sub
    mmsmsg_SetSub(msg, param->subject, MMS_Strlen(param->subject));

    //utf8 len
    utf8_len = param->content_len * 3 + 1;
    if(utf8_len == 0 || 
       (param->content[0] == 0 && param->content[1] == 0))
    {
        utf8_text = "";
        utf8_len = 1;
    }
    else
    {
        //utf8 buffer
        utf8_text = (char*)MMS_Malloc(utf8_len);
        if(!utf8_text)
            goto send_err;
        MMS_Memset((void*)utf8_text, 0, utf8_len);

        bMalloc = TRUE;

        //
        utf8_len = PlxMmsWideCharToUTF8((const char*)param->content, 
                    (int)param->content_len, 
	                (char*)utf8_text, (int)utf8_len);

        if(utf8_len <= 0)
        {
            utf8_text[0] = 0;
            utf8_len     = 0;
        }
        else
            utf8_text[utf8_len] = 0;

//        MMS_Memcpy((void*)utf8_text, (void*)param->content, param->content_len);
//        utf8_text[param->content_len] = 0;
//        utf8_len = param->content_len+1;
    }

    //too big content
    if(mmsmsg_IsTooBig(msg, utf8_len))
    {
        goto send_err;
    }
    if(IsLowSpace(mmsmsg_GetMessageSize(msg) + utf8_len))
    {
        goto send_err;
    }

    if(!mmsmsg_AddContent(msg, "text.txt", MMS_TEXT, 
                          MMCT_TEXT_UTF8, 
                          utf8_len, utf8_text, NULL, 0, 0, 100, 100, FALSE))
    {
        goto send_err;
    }

#ifdef MMS_DEBUG
    PlxTrace("will set headers\r\n");
#endif
    MMSE_SetHeaderField(mmse, mmsmsg_GetMsg(msg), 
            MMHF_X_MMS_DELIVERY_REPORT, //"X-Mms-Message-Class", 
            "No");

    MMSE_SetHeaderField(mmse, mmsmsg_GetMsg(msg), 
            MMHF_X_MMS_READ_REPORT, //"X-Mms-Message-Class", 
            "No");

    //save message
    switch(mmsmsg_SaveMmsMessage(msg, SendSave))
    {
    case SAVE_ERR_OK:
#ifdef MMS_DEBUG
    PlxTrace("saved\r\n");
#endif
        //save success, send message
        if(MMSE_SendMessage(mmse, mmsmsg_GetMsgId(msg), 0, MMSE_SEND_DEFAULT) < 0)
            goto send_err;
        else
            break;
    case SAVE_ERR_INVALIDSUB:
        goto send_err;
    case SAVE_ERR_NONUM:
        goto send_err;
    case SAVE_ERR_EMPTY:
        goto send_err;
    case SAVE_ERR_FAILED:
        goto send_err;
    default:
        goto send_err;
    }

    //release
    mmsmsg_ReleaseMmsMessage(msg);
//    MMSE_Close(mmse);
    if(bMalloc)
        MMS_Free(utf8_text);
//    MMS_Free(name);

    return TRUE;

send_err: //error
    if(utf8_text && bMalloc)
        MMS_Free(utf8_text);
    if(msg)
        mmsmsg_ReleaseMmsMessage(msg);
//    if(mmse)
//        MMSE_Close(mmse);
//    if(name)
//        MMS_Free(name);
    return FALSE;
}

//private functions
////////////////////////////////////////////////////////////////////////////
//Edit main menu
/***************************************************************************
* Function	EnterEditMainMenu
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterEditMainMenu()
{
	U8* pHintList[MAX_SUB_MENUS];
    U8* guiBuffer=NULL;
    int i;

    for(i = 0; i < MMS_EDIT_MENU_MAX; i++)
    {
        SetHintHandler(g_edit_mainmenu_table[i].id,
            MmsEditHintHandler);
    }

    if(GetActiveScreenId() != SCR_ID_PLX_MMS_EDIT)
	{
		EntryNewScreen(SCR_ID_PLX_MMS_EDIT, NULL, EnterEditMainMenu,NULL);
		SetParentHandler(MENU_ID_PLX_MMS);
        guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_EDIT);

        InitMainMenuItems();
#ifndef __MMI_TOUCH_SCREEN__
        ConstructInlineStruct();
#endif
		RegisterHighlightHandler(MmsEditHiliteHandler);
		ConstructHintsList(MENU_ID_PLX_MMS_NEW, pHintList);
	}

    if(!g_edit_data.bBackFromDur)
    {
#ifndef __MMI_TOUCH_SCREEN__
	    ShowCategory57Screen(0, IMG_ID_PLX_MMS,
            STR_GLOBAL_OPTIONS, IMG_GLOBAL_OK, 
            STR_GLOBAL_BACK, IMG_GLOBAL_BACK, 
            6, (U16*)gPlxMmsNewIconList, wgui_inline_items, 
		    g_edit_data.cur_hilite_item,guiBuffer);
#else
        ShowCategory52Screen(g_edit_mainmenu_table[g_edit_data.cur_hilite_item].string, 
						      IMG_ID_PLX_MMS,
						      STR_GLOBAL_OPTIONS, IMG_GLOBAL_OK,
						      STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
						      MMS_EDIT_MENU_MAX, 
                              (U16*)gPlxMmsNewStringList, 
                              (U16*)gPlxMmsNewIconList,
						      pHintList, LIST_MENU, 
                              g_edit_data.cur_hilite_item, guiBuffer);
#endif
	    SetRightSoftkeyFunction(ExitEditMainMenu, KEY_EVENT_UP);
    }

    g_edit_data.bBackFromDur = FALSE;

    SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
    if(!IsScreenPresent(SCR_ID_PLX_MMS_MAIN))
        SetDelScrnIDCallbackHandler(SCR_ID_PLX_MMS_EDIT, PlxMmsDelHistoryHdlr);
}

/*
void EnterEditMainMenu()
{
    U16 nStrItemList[MAX_SUB_MENUS];
    U16 nIconList[MAX_SUB_MENUS];
    U8* pHintList[MAX_SUB_MENUS];
    U8* guiBuffer=NULL;	
	int nNumofItem;
    

    for(i = 0; i < MMS_EDIT_MENU_MAX; i++)
    {
        SetHintHandler(g_edit_mainmenu_table[i].id,
            MmsEditHintHandler);
    }

	if(GetActiveScreenId() != SCR_ID_PLX_MMS_EDIT)
	{
		EntryNewScreen(SCR_ID_PLX_MMS_EDIT, NULL, EnterEditMainMenu, NULL);
		SetParentHandler(MENU_ID_PLX_MMS);
		guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_EDIT);
	}

    nNumofItem = GetNumOfChild(MENU_ID_PLX_MMS_NEWMENU);		
	GetSequenceStringIds(MENU_ID_PLX_MMS_NEWMENU, nStrItemList);	
	GetSequenceImageIds(MENU_ID_PLX_MMS_NEWMENU, nIconList);	
	ConstructHintsList(MENU_ID_PLX_MMS_NEWMENU, pHintList);
    
    RegisterHighlightHandler(MmsEditHiliteHandler);

	ShowCategory52Screen(0, 0, 
        STR_GLOBAL_OK, IMG_GLOBAL_OK, 
        STR_GLOBAL_BACK, IMG_GLOBAL_BACK, 
        nNumofItem, (U16*)nStrItemList, nIconList, pHintList, 
		LIST_MENU, 0, guiBuffer);
	
	SetRightSoftkeyFunction(ExitEditMainMenu, KEY_EVENT_UP);
    SetLeftSoftkeyFunction(EnterEditMainMenuMenu, KEY_EVENT_UP);
}
*/

/***************************************************************************
* Function	InitMainMenuItems
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void InitMainMenuItems(void)
{
    MmsEditRecvListNode* p;
    char text[MAX_MAINMENU_TEXT_LEN];
    U8   uni_text[MAX_MAINMENU_TEXT_LEN*2];
    int  i;
    int  content_size_k = 0;
    int  content_size_dec = 0;
    int  content_size = 0;

    //to
    g_edit_data.recv_list.title = STR_ID_PLX_MMS_TO;
    if(!g_edit_data.recv_list.head) //none
    {
        g_edit_data.to_item[0] = 0;
        g_edit_data.to_item[1] = 0;
    }
    else if(g_edit_data.recv_list.count == 1) //only 1
    {
        p = g_edit_data.recv_list.head;

        if(p)
        {
            //get name
            if(p->bEMail)
            {
#ifdef MMS_RECVLIST_NOMAILNAME
                uni_text[0] = uni_text[1] = 0;
#else
                PLIB_GetPhbookName((WCHAR*)uni_text, MAX_MAINMENU_TEXT_LEN*2,
                    PFIELD_EMAIL, (const WCHAR*)p->num);
#endif
            }
            else
            {
                PLIB_GetPhbookName((WCHAR*)uni_text, MAX_MAINMENU_TEXT_LEN*2,
                    PFIELD_NUMBER, (const WCHAR*)p->num);
            }

            if(!pfnUnicodeStrlen((S8*)uni_text)) //no name
            {
                //show number
                pfnUnicodeStrcpy((S8*)g_edit_data.to_item, (S8*)p->num);
            }
            else
            {
                //show name
                pfnUnicodeStrcpy((S8*)g_edit_data.to_item, (S8*)uni_text);
            }
        }
    }
    else //n numbers
    {
        sprintf(text, "%d ", g_edit_data.recv_list.count);
        AnsiiToUnicodeString((S8*)g_edit_data.to_item, (S8*)text);
        pfnUnicodeStrcat((S8*)g_edit_data.to_item, (S8*)GetString(MMS_EDITMENUSTR_RECEIVERS));
    }

    //cc
    g_edit_data.cc_list.title = STR_ID_PLX_MMS_CC;
    if(!g_edit_data.cc_list.head) //none
    {
        g_edit_data.cc_item[0] = 0;
        g_edit_data.cc_item[1] = 0;
    }
    else if(g_edit_data.cc_list.count == 1) //only 1
    {
        p = g_edit_data.cc_list.head;

        if(p)
        {
            //get name
            if(p->bEMail)
            {
#ifdef MMS_RECVLIST_NOMAILNAME
                uni_text[0] = uni_text[1] = 0;
#else
                PLIB_GetPhbookName((WCHAR*)uni_text, MAX_MAINMENU_TEXT_LEN*2,
                    PFIELD_EMAIL, (const WCHAR*)p->num);
#endif
            }
            else
            {
                PLIB_GetPhbookName((WCHAR*)uni_text, MAX_MAINMENU_TEXT_LEN*2,
                    PFIELD_NUMBER, (const WCHAR*)p->num);
            }

            if(!pfnUnicodeStrlen((S8*)uni_text)) //no name
            {

⌨️ 快捷键说明

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