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

📄 plxmms_edit.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
    if(g_edit_data.hMenu)
        PlxDestroyDMenu(g_edit_data.hMenu);
/*
    if(g_edit_data.hInsMenu)
        PlxDestroyDMenu(g_edit_data.hInsMenu);
    if(g_edit_data.hArrMenu)
        PlxDestroyDMenu(g_edit_data.hArrMenu);
    if(g_edit_data.hDelMenu)
        PlxDestroyDMenu(g_edit_data.hDelMenu);
*/   
    if(g_edit_data.hMainMenuMenu)
        PlxDestroyDMenu(g_edit_data.hMainMenuMenu);

    //to
    p = g_edit_data.recv_list.head;
    while(p)
    {
        g_edit_data.recv_list.head = p->next;
        MMS_Free((void*)p);
        p = g_edit_data.recv_list.head;
    }
    //cc
    p = g_edit_data.cc_list.head;
    while(p)
    {
        g_edit_data.cc_list.head = p->next;
        MMS_Free((void*)p);
        p = g_edit_data.cc_list.head;
    }
    //bcc
    p = g_edit_data.bcc_list.head;
    while(p)
    {
        g_edit_data.bcc_list.head = p->next;
        MMS_Free((void*)p);
        p = g_edit_data.bcc_list.head;
    }

    //content buf
	PlxEndShowAllGifs();
    g_edit_data.hGif = NULL;
    if(g_edit_data.utfText)
        MMS_Free((void*)g_edit_data.utfText);

    if(g_edit_data.text_show)
		MMS_Free((void*)g_edit_data.text_show);

    if(g_edit_data.image)
		MMS_Free((void*)g_edit_data.image);

    //reset edit data
    MMS_Memset((void*)&g_edit_data, 0, sizeof(g_edit_data));
#ifdef __MMI_TOUCH_SCREEN__
    mmi_wgui_reset_list_item_selected_callback();
#endif
}

/***************************************************************************
* Function	CreateMmsEdit
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL CreateMmsEdit(void* mmse, long id, enum EditMode mode, 
                   char* folder, U16 screen, U16 send_screen, PlxMmsBoxEditCBPtr box_callback)
{
    BOOL bTooBig = FALSE;

    if(!mmse)
        return FALSE;

    //second edit
    if(g_edit_data.mmse)
    {
        //save current message
        MmsEditGoBackToIdle();
    }

    //init message
    MMS_Memset((void*)&g_edit_data, 0, sizeof(MmsEditData));
    
    g_edit_data.mmse = mmse;
    g_edit_data.message = mmsmsg_CreateMmsMessage();
    g_edit_data.cur_slide_dur = 2000; //get from config
    g_edit_data.back_screen = screen;
	g_edit_data.send_back_screen = send_screen;
    g_edit_data.box_callback = box_callback;

    if(!g_edit_data.message)
    {
        MMS_Memset((void*)&g_edit_data, 0, sizeof(MmsEditData));
        return FALSE;
    }

    if(!folder)
        folder = (char*)MMSE_FOLDER_DRAFT;
    
    switch(mmsmsg_InitWithMode(g_edit_data.message, mmse, id, mode, folder))
    {
    case INIT_ERR_MAXMSGNUM:
        //full
        g_edit_data.message = mmsmsg_ReleaseMmsMessage(g_edit_data.message);
        PLIB_MessageBox(PMBTYPE_ERROR, NULL, 
            (WCHAR*)GetString(STR_ID_PLX_MMS_EDIT_FULLMSG), 0);
        MMS_Memset((void*)&g_edit_data, 0, sizeof(MmsEditData));
        return TRUE;
    case INIT_ERR_FAILED:
        //init failed
        g_edit_data.message = mmsmsg_ReleaseMmsMessage(g_edit_data.message);
        MMS_Memset((void*)&g_edit_data, 0, sizeof(MmsEditData));
        return FALSE;
    case INIT_ERR_MSGTOOBIG:
        bTooBig = TRUE;
        break;
    default:
        break;
    }

    if(mode == -1 || 
       mode == EditReply ||
       mode == EditReplyAll ||
	   ( (mode == EditTrans || mode == EditOld) && 
         mmsmsg_GetSlideCount(g_edit_data.message) == 0)
	  )
    {
        if(!mmsmsg_AddSlide(g_edit_data.message, 0, g_edit_data.cur_slide_dur))
        {
            g_edit_data.message = mmsmsg_ReleaseMmsMessage(g_edit_data.message);
            MMS_Memset((void*)&g_edit_data, 0, sizeof(MmsEditData));
            return FALSE;
        }
        mmsmsg_SetMessageModified(g_edit_data.message, FALSE);
        mmsmsg_SetImageModified(g_edit_data.message, FALSE);
        mmsmsg_SetSoundModified(g_edit_data.message, FALSE);
        mmsmsg_SetTextModified(g_edit_data.message, FALSE);
    }

    //get to,cc,bcc list
    MMS_Strcpy(g_edit_data.to, mmsmsg_GetPhoneNum(g_edit_data.message, 0));
    MMS_Strcpy(g_edit_data.cc, mmsmsg_GetPhoneNum(g_edit_data.message, 1));
    MMS_Strcpy(g_edit_data.bcc, mmsmsg_GetPhoneNum(g_edit_data.message, 2));
    MmsEditInitRecvLists();
    
//    MMS_Strcpy(g_edit_data.sub, mmsmsg_GetSub(g_edit_data.message));
    MmsEditInitSub();

    EnterEditMainMenu();

    if(bTooBig)
    {
        PLIB_MessageBox(PMBTYPE_ERROR, NULL, 
            (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_MSGTOOLARGE), 0);
    }
    return TRUE;
}

/***************************************************************************
* Function	CreateMmsEditWithContent
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL CreateMmsEditWithContent(PlxMmsContentParam* param, 
                              PlxMmsPubCallback callback)
{
    void*		mmse = NULL;
    MmsMessage* message = NULL;
    U8*			number = NULL;
    U8*			utf8_text = NULL;
    long		utf8_len;
    char*	    pType = NULL;
    BOOL		add_result;
    FRRecord*	frr;
	int			hFile;
    U32			file_len;
    char       obj_name[32];

    if(IsLowSpace(0))
	{
		PLIB_MessageBox(PMBTYPE_ERROR, NULL, 
                (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_NOSPACE), 0);
		return FALSE;
	}
    //second edit
    if(g_edit_data.mmse)
    {
        //save current message
        MmsEditGoBackToIdle();
    }

    MMS_Memset((void*)&g_edit_data, 0, sizeof(g_edit_data));

    //open mmse
    mmse = MMSE_Open(MMSE_ACCESS_READ);
    if(!mmse)
        return FALSE;

    //create message
    message = mmsmsg_CreateMmsMessage();
    if(!message)
    {
        MMSE_Close(mmse);
        return FALSE;
    }

    switch(mmsmsg_InitWithMode(message, mmse, -1, 
        EditCreateNew, MMSE_FOLDER_DRAFT))
    {
    case INIT_ERR_MAXMSGNUM:
        MMSE_Close(mmse);
        mmsmsg_ReleaseMmsMessage(message);
        return FALSE;
    case INIT_ERR_FAILED:
        MMSE_Close(mmse);
        mmsmsg_ReleaseMmsMessage(message);
        return FALSE;
    default:
        break;
    }

    mmsmsg_AddSlide(message, 0, 0);

    //add contents
    //receiver
    if(!param->receiver)
    {
        mmsmsg_SetPhoneNum(message, (const char*)NULL, 0, 0);
    }
    else
    {
        number = (U8*)MMS_Malloc(sizeof(U8) * (param->receiver_length+1));
        if(!number)
            goto pub_edit_err;
        UnicodeToAnsii((S8*)number, (S8*)param->receiver);

        mmsmsg_SetPhoneNum(message, (const char*)number, MMS_Strlen((char*)number), 0);
    
        MMS_Free((void*)number);
        number = NULL;
    }

    //text
    if(!param->text)
        goto add_image;

    utf8_len = param->text_length * 3 + 1;
    utf8_text = (U8*)MMS_Malloc(sizeof(U8) * utf8_len);
    if(!utf8_text)
        goto pub_edit_err;
    MMS_Memset((void*)utf8_text, 0, utf8_len);

    //unicode to utf8
    utf8_len = PlxMmsWideCharToUTF8((const char*)param->text, (int)param->text_length, 
	            (char*)utf8_text, (int)utf8_len);
    utf8_text[utf8_len] = 0;

    if(IsLowSpace(mmsmsg_GetMessageSize(g_edit_data.message) + utf8_len))
    {
        PLIB_MessageBox(PMBTYPE_ERROR, NULL, 
            (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_NOSPACE), 0);
        goto pub_edit_err;
    }

    //add text
    if(!mmsmsg_AddContent(message, "text.txt", MMS_TEXT, MMCT_TEXT_UTF8, 
                          utf8_len+1, utf8_text, NULL, 10, 10, 100, 100, FALSE))
    {
        goto pub_edit_err;
    }

    MMS_Free((void*)utf8_text);
    utf8_text = NULL;

    //image
add_image:
    if(!param->image && !param->image_file)
        goto add_sound;
	if ( param->image_length == 0 && param->image_file ) 
	{
		hFile = FS_Open((unsigned short*)param->image_file, FS_READ_ONLY);
		if(hFile < 0)
			goto pub_edit_err;
		
		FS_GetFileSize(hFile, &file_len);
		FS_Close(hFile);

		param->image_length = file_len;
	}


    if(mmsmsg_IsTooBig(message, param->image_length))
    {
        //too big
        PLIB_MessageBox(PMBTYPE_WARNING, NULL, 
            (WCHAR*)GetString(MMS_EDIT_POP_TOOLARGE), 0);
        goto pub_edit_err;
    }

    MMS_Strcpy((char*)obj_name, "image");
    switch(param->image_type)
    {
    case MMS_OBJ_BMP:
        pType = "image/bmp";
        MMS_Strcat((char*)obj_name, ".bmp");
        break;
    case MMS_OBJ_WBMP:
        pType = MMCT_IMAGE_WBMP;
        MMS_Strcat((char*)obj_name, ".wbmp");
        break;
    case MMS_OBJ_GIF:
        pType = MMCT_IMAGE_GIF;
        MMS_Strcat((char*)obj_name, ".gif");
        break;
    case MMS_OBJ_JPG:
        pType = MMCT_IMAGE_JPG;
        MMS_Strcat((char*)obj_name, ".jpg");
        break;
    case MMS_OBJ_PNG:
        pType = MMCT_IMAGE_PNG;
        MMS_Strcat((char*)obj_name, ".png");
        break;
    case MMS_OBJ_UNKNOWN:
        pType = "*/*";
        break;
    default:
        goto add_sound;
    }

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

    if(param->image)
    {
        if(param->image_type == MMS_OBJ_UNKNOWN) //att
        {
            add_result = mmsmsg_AddContent(message, (char*)obj_name, 
                MMS_IMAGE, (const char*)pType, param->image_length, 
                param->image, NULL, 0, 0, 100, 100, TRUE);
        }
        else
        {
            add_result = mmsmsg_AddContent(message, (char*)obj_name, 
                MMS_IMAGE, (const char*)pType, param->image_length, 
                param->image, NULL, 0, 0, 100, 100, FALSE);
        }
    }
    else if(param->image_file)
    {
        frr = frr_CreateRecord();
        if(!frr)
            goto pub_edit_err;

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

        if(param->image_type == MMS_OBJ_UNKNOWN) //att
        {
            add_result = mmsmsg_AddContent(message, (char*)obj_name, 
                MMS_IMAGE, (const char*)pType, param->image_length, 
                NULL, frr, 0, 0, 100, 100, TRUE);
        }
        else
        {
            add_result = mmsmsg_AddContent(message, (char*)obj_name, 
                MMS_IMAGE, (const char*)pType, param->image_length, 
                NULL, frr, 0, 0, 100, 100, FALSE);
        }
    }
    else
    {
        goto add_sound;
    }

    if(!add_result)
        goto pub_edit_err;
    
    //sound
add_sound:
    if(!param->sound && !param->sound_file)
        goto will_enter_edit;
	if ( param->sound_length == 0 && param->sound_file ) 
	{
		hFile = FS_Open((unsigned short*)param->sound_file, FS_READ_ONLY);
		if(hFile < 0)
			goto pub_edit_err;
		
		FS_GetFileSize(hFile, &file_len);
		FS_Close(hFile);

		param->sound_length = file_len;
	}

    if(mmsmsg_IsTooBig(message, param->sound_length))
    {
        //too big
        PLIB_MessageBox(PMBTYPE_WARNING, NULL, 
            (WCHAR*)GetString(MMS_EDIT_POP_TOOLARGE), 0);
        goto pub_edit_err;
    }

    MMS_Strcpy((char*)obj_name, "sound");
    switch(param->sound_type)
    {
    case MMS_OBJ_MID:
        pType = MMCT_AUDIO_MIDI;
        MMS_Strcat((char*)obj_name, ".mid");
        break;
    case MMS_OBJ_MP3:
        pType = "audio/mp3";
        MMS_Strcat((char*)obj_name, ".mp3");
        break;
    case MMS_OBJ_AMR:
        pType = MMCT_AUDIO_AMR;
        MMS_Strcat((char*)obj_name, ".amr");
        break;
    case MMS_OBJ_WAV:
        pType = MMCT_AUDIO_WAV;
        MMS_Strcat((char*)obj_name, ".wav");
        break;
    case MMS_OBJ_MMF:
        pType = MMCT_AUDIO_MMF;
        MMS_Strcat((char*)obj_name, ".mmf");
        break;
    case MMS_OBJ_IMY:

⌨️ 快捷键说明

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