📄 plxmms_edit.c
字号:
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 + -