📄 plxmms_recvedit.c
字号:
{
#ifdef MMS_RECVLIST_NOMAILNAME
name[0] = name[1] = 0;
#else
PLIB_GetPhbookName((WCHAR*)name, MAX_NAME_LEN*2,
PFIELD_EMAIL, (WCHAR*)p->num);
#endif
}
else //number
{
PLIB_GetPhbookName((WCHAR*)name, MAX_NAME_LEN*2,
PFIELD_NUMBER, (WCHAR*)p->num);
}
if(name[0] == 0 &&
name[1] == 0) //no name
{
pfnUnicodeStrcpy((S8*)str_buff, (S8*)p->num);
}
else
{
pfnUnicodeStrcpy((S8*)str_buff, (S8*)name);
}
}
*img_buff_p = (UI_image_type)GetImage((U16)(IMG_GLOBAL_L1 + item_index));
return TRUE;
}
/***************************************************************************
* Function RecvListGetItemHint
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
S32 RecvListGetItemHint(S32 item_index, UI_string_type *hint_array)
{
MmsEditRecvListNode* p;
p = GetNumItem(item_index);
if(!p)
{
(*hint_array)[0] = 0;
(*hint_array)[1] = 0;
}
else
pfnUnicodeStrcpy((S8*)(*hint_array), (S8*)p->num);
return 1;
}
/***************************************************************************
* Function ExitRcevList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void ExitRcevList(void)
{
// MmsEditRecvListNode* p = NULL;
if(g_recv_data.hMenu)
{
PlxDestroyDMenu(g_recv_data.hMenu);
g_recv_data.hMenu = NULL;
}
if(g_recv_data.temp_node && g_recv_data.cur_item == -1) // new item
{
MMS_Free((void*)g_recv_data.temp_node);
}
if(g_recv_data.bBoxNumList)
{
ReleaseBoxNumList();
}
MMS_Memset((void*)&g_recv_data, 0, sizeof(MmsRecvData));
// GoBackHistory();
}
//recv list menu
/***************************************************************************
* Function EnterRecvListMenu
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterRecvListMenu(void)
{
if(g_recv_data.list->count == MAX_NUM_COUNT ||
g_recv_data.list->total_len == MAX_TO_LEN-1)
{
//add number
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDNUM, MF_BYPOSITION | MF_DISABLED,
g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].string),
g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].icon);
//add email
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDEMAIL, MF_BYPOSITION | MF_DISABLED,
g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].string),
g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].icon);
}
else
{
//add number
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDNUM, MF_BYPOSITION | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].string),
g_recvedit_entry_table[MMS_EDITRECV_ADDNUM].icon);
//add email
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDEMAIL, MF_BYPOSITION | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].string),
g_recvedit_entry_table[MMS_EDITRECV_ADDEMAIL].icon);
}
//delete
PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_DEL, MF_BYCOMMAND);
PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_EDIT, MF_BYCOMMAND);
PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_DELALL, MF_BYCOMMAND);
if(g_recv_data.list->head)
{
//add edit
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_EDIT, MF_BYPOSITION,
g_recvedit_entry_table[MMS_EDITRECV_EDIT].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_EDIT].string),
g_recvedit_entry_table[MMS_EDITRECV_EDIT].icon);
//add del
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_DEL, MF_BYPOSITION,
g_recvedit_entry_table[MMS_EDITRECV_DEL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_DEL].string),
g_recvedit_entry_table[MMS_EDITRECV_DEL].icon);
//add delall
if(g_recv_data.list->count > 1)
{
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_DELALL, MF_BYPOSITION,
g_recvedit_entry_table[MMS_EDITRECV_DELALL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_DELALL].string),
g_recvedit_entry_table[MMS_EDITRECV_DELALL].icon);
}
}
PlxSetDMenuDispInfo(STR_GLOBAL_OPTIONS, IMG_ID_PLX_MMS,
STR_GLOBAL_OK, IMG_GLOBAL_OK, STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
PlxShowDMenu(g_recv_data.hMenu, SCR_ID_PLX_MMS_RECVEDIT_MENU2,//SCR_ID_PLX_MMS_RECVEDIT_MENU4,
STR_ID_PLX_MMS_MENU, RecvEditMenuCallback, EmptyMenuEntry);
// SetRightSoftkeyFunction(RecvMenuGoBack, KEY_EVENT_UP);
}
/***************************************************************************
* Function EnterEditItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterEditItem(void)
{
int buf_len;
int max_len;
int max_buf_len;
int len;
MmsEditRecvListNode* node = NULL;
if(!g_recv_data.temp_node)
{
if(g_recv_data.cur_item < 0) //edit a new one
{
node = MMS_Malloc(sizeof(MmsEditRecvListNode));
if(!node)
return;
MMS_Memset((void*)node, 0, sizeof(MmsEditRecvListNode));
g_recv_data.temp_node = node;
pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf, (S8*)node->num);
}
else //edit cur item
{
g_recv_data.temp_node = GetNumItem(g_recv_data.cur_item);
}
if(!g_recv_data.temp_node)
return;
if(g_recv_data.temp_node->bEMail)
g_recv_data.is_a_num = FALSE;
else
g_recv_data.is_a_num = TRUE;
}
len = pfnUnicodeStrlen((S8*)g_recv_data.temp_node->num);
max_len = MAX_TO_LEN - g_recv_data.list->total_len + len;
//max edit length
if(g_recv_data.is_a_num)
max_buf_len = MAX_NUM_LEN;
else
max_buf_len = MAX_MAIL_LEN;
if(max_len > max_buf_len)//MAX_NUM_LEN*2)
buf_len = max_buf_len;//MAX_NUM_LEN*2;
else
buf_len = max_len;
g_recv_data.max_buf_len = buf_len;
pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf, (S8*)g_recv_data.temp_node->num);
ShowRecvEditInputBox();
}
/***************************************************************************
* Function EnterDelItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterDelItem(void)
{
// int i = 0;
WCHAR ifdel[10];
pfnUnicodeStrcpy((S8*)ifdel, (S8*)GetString(STR_ID_PLX_MMS_BOX_DEL));
pfnUnicodeStrcat((S8*)ifdel, (S8*)L"?");
PLIB_ConfirmBox(NULL,
(WCHAR*)ifdel,
(WCHAR*)GetString(STR_GLOBAL_YES),
(WCHAR*)GetString(STR_GLOBAL_NO),
NULL, 0, NULL, 0, IfDelCallback);
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
}
/***************************************************************************
* Function IfDelCallback
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void IfDelCallback(PLIBEVENT event)
{
int len;
MmsEditRecvListNode* p;
switch(event)
{
case PEVENT_POSITIVE:
p = GetNumItem(g_recv_data.cur_item);
if(!p)
{
if(IsScreenPresent(SCR_ID_PLX_MMS_RECVLIST))
GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
else
{
enter_list();
DeleteScreenIfPresent(SCR_ID_PLX_MMS_RECVEDIT_MENU2);
}
return;
}
len = pfnUnicodeStrlen((S8*)p->num);
g_recv_data.list->total_len -= len;
DelNumItem(p);
g_recv_data.list->modified = TRUE;
// enter_list();
if(IsScreenPresent(SCR_ID_PLX_MMS_RECVLIST))
GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
else
{
enter_list();
DeleteScreenIfPresent(SCR_ID_PLX_MMS_RECVEDIT_MENU2);
}
break;
case PEVENT_NEGTIVE:
GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
break;
}
}
/***************************************************************************
* Function EnterDelAllItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterDelAllItem(void)
{
// int i = 0;
PLIB_ConfirmBox(NULL, (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_IFDELALL),
(WCHAR*)GetString(STR_GLOBAL_YES), (WCHAR*)GetString(STR_GLOBAL_NO),
NULL, 0, NULL, 0, IfDelAllCallback);
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
}
/***************************************************************************
* Function IfSaveCallback
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void IfDelAllCallback(PLIBEVENT event)
{
MmsEditRecvListNode* p;
switch(event)
{
case PEVENT_POSITIVE:
//delete all
p = g_recv_data.list->head;
while(p)
{
g_recv_data.list->head = p->next;
MMS_Free((void*)p);
p = g_recv_data.list->head;
}
g_recv_data.list->count = 0;
g_recv_data.list->total_len = MAX_NUM_COUNT;
g_recv_data.list->modified = TRUE;
//go back to list
GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
break;
case PEVENT_NEGTIVE:
GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
break;
}
}
/***************************************************************************
* Function EnterSaveNum
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterSaveNum(void)
{
MmsEditRecvListNode* p;
U8* pAt = NULL;
WCHAR temp;
//pop confirm
p = GetNumItem(g_recv_data.cur_item);
if(!p)
return;
if(p->bEMail) //mail
{
//PLIB_AddPhbookRecord(PFIELD_EMAIL, (WCHAR*)p->num);
pAt = MMS_WFindCharFromEnd((U8*)p->num, pfnUnicodeStrlen((S8*)p->num), '@');
if(!pAt)
return;
temp = *((WCHAR*)pAt);
*((WCHAR*)pAt) = 0x0000;
PLIB_AddPhbookRecord(PFIELD_NUMBER, (WCHAR*)p->num);
*((WCHAR*)pAt) = temp;
}
else //number
{
PLIB_AddPhbookRecord(PFIELD_NUMBER, (WCHAR*)p->num);
}
}
/***************************************************************************
* Function EnterCall
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterCall(void)
{
MmsEditRecvListNode* p;
U8* pAt = NULL;
WCHAR temp;
//pop confirm
p = GetNumItem(g_recv_data.cur_item);
if(!p)
return;
if(p->bEMail)
{
pAt = MMS_WFindCharFromEnd((U8*)p->num, pfnUnicodeStrlen((S8*)p->num), '@');
if(!pAt)
return;
temp = *((WCHAR*)pAt);
*((WCHAR*)pAt) = 0x0000;
PLIB_MakeCall((WCHAR*)p->num, NULL);
*((WCHAR*)pAt) = temp;
}
else
PLIB_MakeCall((WCHAR*)p->num, NULL);
}
/*
void EnterRecvEdit(void)
{
U8* guiBuffer=NULL;
// S8* psTmp = NULL;
// S32 nSize = 0;
EntryNewScreen(SCR_ID_PLX_MMS_NEW_RECEIVER, NULL,
EnterRecvEdit, NULL);
guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_NEW_RECEIVER);
SetParentHandler(MENU_ID_PLX_MMS_NEW);
AnsiiToUnicodeString((S8*)g_recv_data.new_numbers, (char*)g_recv_data.numbers);
ShowCategory5Screen(STR_ID_PLX_MMS_NEW_TEXT, 0, STR_GLOBAL_OK, 0, STR_GLOBAL_BACK,
0, 3,
(U8*)g_recv_data.new_numbers, MAX_TO_LEN*2 ,guiBuffer);
SetLeftSoftkeyFunction(SaveRecv, KEY_EVENT_UP);
SetCategory5RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}
void ExitRecvEdit(void)
{
}
void SaveRecv(void)
{
UnicodeToAnsii((S8*)g_recv_data.numbers, (S8*)g_recv_data.new_numbers);
GoBackToHistory(SCR_ID_PLX_MMS_EDIT);
}
*/
/***************************************************************************
* Function EnterSubEdit
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterSubEdit(void)
{
U8* guiBuffer=NULL;
EntryNewScreen(SCR_ID_PLX_MMS_NEW_RECEIVER, NULL,
EnterSubEdit, NULL);
guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_NEW_RECEIVER);
SetParentHandler(MENU_ID_PLX_MMS_NEW);
ShowCategory5Screen(STR_ID_PLX_MMS_EDITRECV_EDIT, IMG_ID_PLX_MMS,
STR_GLOBAL_OPTIONS, IMG_GLOBAL_OPTIONS,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
INPUT_TYPE_ALPHANUMERIC_LOWERCASE,
(U8*)g_sub_data.new_sub, g_sub_data.max_len/2, guiBuffer);
SetLeftSoftkeyFunction(MmsEditSubOnOk, KEY_EVENT_UP);
// SetKeyHandler(MmsEditSubOnOk, KEY_ENTER, KEY_EVENT_DOWN);
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
SetCategory5RightSoftkeyFunction(SubGoBack, KEY_EVENT_UP);
}
void MmsEditSubOnOk(void)
{
PLIB_RegisterIMEDoneNotify (SaveSub);
PLIB_IMEOptionEntry ();
}
/***************************************************************************
* Function ExitSubEdit
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
static void ExitSubEdit(void)
{
}
/***************************************************************************
* Function SaveSub
* Purpose
* Params
* Return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -