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