📄 plxmms_recvedit.c
字号:
/***************************************************************************
* Function CallPhoneBook
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void CallPhoneBook(void)
{
g_recv_data.bAddFromPB = TRUE;
if(g_recv_data.is_a_num)
{
PLIB_SelectPhbookRecord(PFIELD_NUMBER, 0, PBCallback);
}
else //find email
{
PLIB_SelectPhbookRecord(PFIELD_EMAIL, 0, PBCallback);
}
#ifdef MMI_ON_WIN32
PBCallback(NULL, 0);
#endif
}
/***************************************************************************
* Function PBCallback
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void PBCallback(void * info, int count)
{
PPLIBPBRECORD pInfo;
int max_buf_len;
if(!info || count == 0)
{
#ifdef MMI_ON_WIN32
MMS_Memset((void*)g_recv_data.temp_buf, 0, sizeof(g_recv_data.temp_buf));
pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf,
(S8*)L"123456789012345");
#endif
return;
}
pInfo = (PPLIBPBRECORD)info;
MMS_Memset((void*)g_recv_data.temp_buf, 0, sizeof(g_recv_data.temp_buf));
if(g_recv_data.is_a_num)
{
max_buf_len =
(g_recv_data.max_buf_len == MAX_NUM_LEN) ? MAX_NUM_LEN : g_recv_data.max_buf_len;
}
else
{
max_buf_len =
(g_recv_data.max_buf_len == MAX_MAIL_LEN) ? MAX_MAIL_LEN : g_recv_data.max_buf_len;
}
if(pfnUnicodeStrlen((S8*)pInfo->field) >= max_buf_len) //MAX_NUM_LEN)
{
pfnUnicodeStrncpy((S8*)g_recv_data.temp_buf,
(S8*)pInfo->field, max_buf_len-1);//MAX_NUM_LEN-1);
((unsigned short*)g_recv_data.temp_buf)[max_buf_len-1] = 0x0000;
}
else
{
pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf, (S8*)pInfo->field);
}
}
/***************************************************************************
* Function SaveRecv
* Purpose
* Params
* Return
* Remarks g_recv_data.temp_buf has new number string
\**************************************************************************/
void SaveRecv(void)
{
int len;
if(!g_recv_data.temp_node) //no editing node
{
if(g_recv_data.list->head)
{
//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);
}
}
// g_recv_data.temp_node = NULL;
}
else //save num in editing node
{
RemoveRN((WCHAR*)g_recv_data.temp_buf);
// if((len = pfnUnicodeStrlen((S8*)g_recv_data.temp_node->num)) == 0)
if((len = pfnUnicodeStrlen((S8*)g_recv_data.temp_buf)) == 0) //call pb
{
CallPhoneBook();
return;
}
if(g_recv_data.cur_item < 0) //new one
{
if(ExistInList(g_recv_data.temp_buf, 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);
}
g_recv_data.temp_node = NULL;
PLIB_MessageBox(PMBTYPE_WARNING, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_EDITRECV_NUMEXIST), 0);
return;
}
AddNumItem(g_recv_data.temp_node);
g_recv_data.list->total_len += len;
}
else //edit a old num
{
if(ExistInList(g_recv_data.temp_buf, FALSE))
{
//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);
}
g_recv_data.temp_node = NULL;
PLIB_MessageBox(PMBTYPE_WARNING, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_EDITRECV_NUMEXIST), 0);
return;
}
g_recv_data.list->total_len = g_recv_data.list->total_len + len -
pfnUnicodeStrlen((S8*)g_recv_data.temp_node->num);
}
pfnUnicodeStrcpy((S8*)g_recv_data.temp_node->num,
(S8*)g_recv_data.temp_buf);
/*
if(MMS_WFindCharFromEnd(g_recv_data.temp_node->num,
pfnUnicodeStrlen((S8*)g_recv_data.temp_node->num), '@'))//(const unsigned short)pAt[0]))
g_recv_data.temp_node->bEMail = TRUE;
*/
g_recv_data.temp_node->bEMail = !g_recv_data.is_a_num;
g_recv_data.list->modified = TRUE;
g_recv_data.temp_node = NULL;
//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);
}
}
}
/***************************************************************************
* Function AddNumItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void AddNumItem(MmsEditRecvListNode* node)
{
MmsEditRecvListNode* tail = NULL;
if(!node)
return;
tail = g_recv_data.list->head;
if(!tail)
{
g_recv_data.list->head = node;
g_recv_data.list->count ++;
}
else
{
while(tail->next)
{
tail = tail->next;
}
tail->next = node;
g_recv_data.list->count++;
}
g_recv_data.cur_item = g_recv_data.list->count-1;
}
/***************************************************************************
* Function DelNumItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void DelNumItem(MmsEditRecvListNode* node)
{
MmsEditRecvListNode* prev = NULL;
prev = g_recv_data.list->head;
if(!prev)
return;
if(prev == node)
{
g_recv_data.list->head = node->next;
g_recv_data.list->count--;
}
else
{
while(prev && prev->next!= node)
{
prev = prev->next;
}
if(prev)
{
prev->next = node->next;
g_recv_data.list->count--;
}
}
MMS_Free((void*)node);
if(g_recv_data.cur_item == g_recv_data.list->count)
g_recv_data.cur_item --;
}
/***************************************************************************
* Function GetNumItem
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
MmsEditRecvListNode* GetNumItem(int index)
{
MmsEditRecvListNode* p;
int i = 0;
if(!g_recv_data.list->head)
return NULL;
if(index == 0)
return g_recv_data.list->head;
p = g_recv_data.list->head;
while(p)
{
p = p->next;
i++;
if(i == index)
return p;
}
return NULL;
}
/***************************************************************************
* Function enter_list
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void enter_list(void)
{
U8* guiBuffer = NULL;
// U8* pTip = NULL;
if(GetActiveScreenId() != SCR_ID_PLX_MMS_RECVLIST)
{
if(!g_recv_data.list || !g_recv_data.list->head) //empty list, go back
{
switch(g_recv_data.type)
{
case 0: //recv
RecvGoBack();
PLIB_MessageBox(PMBTYPE_ERROR, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_EDITRECV_EMPTYRECV), 0);
break;
case 1: //CC
RecvGoBack();
PLIB_MessageBox(PMBTYPE_ERROR, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_EDITRECV_EMPTYCC), 0);
break;
case 2: //BCC
RecvGoBack();
PLIB_MessageBox(PMBTYPE_ERROR, NULL,
(WCHAR*)GetString(STR_ID_PLX_MMS_EDITRECV_EMPTYBCC), 0);
break;
default:;
}
return;
}
EntryNewScreen(SCR_ID_PLX_MMS_RECVLIST, NULL, enter_list, NULL);
// SetParentHandler(SCR_ID_PLX_MMS_EDIT);
// guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_RECVLIST);
g_recv_data.menu_back_screen = SCR_ID_PLX_MMS_RECVLIST;
}
RegisterHighlightHandler(RecvListHiliteHandler);
if(g_recv_data.cur_item < 0)
g_recv_data.cur_item = 0;
if(g_recv_data.bBoxNumList)
{
ShowCategory184Screen(g_recv_data.list->title, IMG_ID_PLX_MMS,
STR_GLOBAL_OPTIONS, IMG_GLOBAL_OK,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
g_recv_data.list->count, RecvListGetItemText,
RecvListGetItemHint, g_recv_data.cur_item, guiBuffer);
SetLeftSoftkeyFunction(EnterBoxNumMenu, KEY_EVENT_UP);
SetKeyHandler(EnterBoxNumMenu, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
// SetKeyHandler(EnterBoxNumMenu, KEY_ENTER, KEY_EVENT_DOWN);
}
else
{
ShowCategory184Screen(g_recv_data.list->title, IMG_ID_PLX_MMS,
STR_GLOBAL_OPTIONS, IMG_GLOBAL_OK,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
g_recv_data.list->count, RecvListGetItemText,
RecvListGetItemHint, g_recv_data.cur_item, guiBuffer);
SetLeftSoftkeyFunction(EnterRecvListMenu, KEY_EVENT_UP);
SetKeyHandler(EnterRecvListMenu, KEY_RIGHT_ARROW, KEY_EVENT_DOWN);
// SetKeyHandler(EnterRecvListMenu, KEY_ENTER, KEY_EVENT_DOWN);
}
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
SetRightSoftkeyFunction(RecvGoBack, KEY_EVENT_UP);
SetKeyHandler(RecvGoBack, KEY_LEFT_ARROW, KEY_EVENT_DOWN);
}
/***************************************************************************
* Function EnterBoxNumMenu
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterBoxNumMenu(void)
{
MmsEditRecvListNode* node;
char ascNum[MAX_MAIL_LEN];
if(!g_recv_data.hMenu)
return;
node = GetNumItem(g_recv_data.cur_item);
if(!node)
return;
UnicodeToAnsii((S8*)ascNum, (S8*)node->num);
//save
if(node->bEMail) //mail
{
if(MMS_Stristr(ascNum, "@monternet.com"))
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_SAVENUM, MF_BYCOMMAND | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].string),
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].icon);
}
else
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_SAVENUM, MF_BYCOMMAND | MF_DISABLED,
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].string),
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].icon);
}
}
else //number
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_SAVENUM, MF_BYCOMMAND | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].string),
g_recvedit_entry_table[MMS_EDITRECV_SAVENUM].icon);
}
//call
if(node->bEMail) //mail
{
if(MMS_Stristr(ascNum, "@monternet.com"))
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_CALL, MF_BYCOMMAND | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_CALL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_CALL].string),
g_recvedit_entry_table[MMS_EDITRECV_CALL].icon);
}
else
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_CALL, MF_BYCOMMAND | MF_DISABLED,
g_recvedit_entry_table[MMS_EDITRECV_CALL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_CALL].string),
g_recvedit_entry_table[MMS_EDITRECV_CALL].icon);
}
}
else //number
{
PlxModifyDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_CALL, MF_BYCOMMAND | MF_ENABLED,
g_recvedit_entry_table[MMS_EDITRECV_CALL].id,
(const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_CALL].string),
g_recvedit_entry_table[MMS_EDITRECV_CALL].icon);
}
//show
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 RecvListHiliteHandler
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void RecvListHiliteHandler(S32 index)
{
g_recv_data.cur_item = index;
}
/***************************************************************************
* Function RecvListGetItemText
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
pBOOL RecvListGetItemText(S32 item_index, UI_string_type str_buff,
UI_image_type* img_buff_p, U8 str_img_mask)
{
MmsEditRecvListNode* p;
// U8* string_show = NULL;
U8 name[MAX_NAME_LEN*2];
p = GetNumItem(item_index);
if(!p) //no number
{
pfnUnicodeStrcpy((S8*)str_buff, (S8*)GetString(MMS_EDITRECV_STR_NONUM));
*img_buff_p = NULL;
return TRUE;
}
/* string_show = p->name;
if(pfnUnicodeStrlen((S8*)string_show) == 0) //no name
{
string_show = p->num;
if(pfnUnicodeStrlen((S8*)string_show) == 0)
{
pfnUnicodeStrcpy((S8*)str_buff, (S8*)GetString(MMS_EDITRECV_STR_NONUM));
*img_buff_p = NULL;
return TRUE;
}
}
pfnUnicodeStrcpy((S8*)str_buff, (S8*)string_show);
*img_buff_p = (UI_image_type)GetImage((U16)(IMG_GLOBAL_L1+item_index));
*/
if(p->num[0] == 0 &&
p->num[1] == 0) //no number
{
pfnUnicodeStrcpy((S8*)str_buff, (S8*)GetString(MMS_EDITRECV_STR_NONUM));
}
else
{
//find name
if(p->bEMail) //mail
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -