📄 plxmms_recvedit.c
字号:
* Remarks
\**************************************************************************/
static void SaveSub(void)
{
if(pfnUnicodeStrcmp((S8*)g_sub_data.sub, (S8*)g_sub_data.new_sub) == 0)
{
GoBackToHistory(SCR_ID_PLX_MMS_EDIT);
return;
}
MMS_Memcpy((void*)g_sub_data.sub,
(void*)g_sub_data.new_sub, /*MAX_SUB_LEN*2*/g_sub_data.max_len);
*g_sub_data.pModified = TRUE;
GoBackToHistory(SCR_ID_PLX_MMS_EDIT);
}
/***************************************************************************
* Function CreateRecvEditMenu
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL CreateRecvEditMenu(BOOL bEmptyList)
{
if(g_recv_data.hMenu)
return TRUE;
g_recv_data.hMenu = PlxCreateDMenu(0);
if(!g_recv_data.hMenu)
return FALSE;
//add items
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDNUM, MF_BYPOSITION,
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);
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_ADDEMAIL, MF_BYPOSITION,
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);
/* if(!bEmptyList)
{
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_DEL, MF_BYPOSITION,
g_recvedit_entry_table[MMS_EDITRECV_DEL].id,
g_recvedit_entry_table[MMS_EDITRECV_DEL].string, 0);
PlxInsertDMenuItem(g_recv_data.hMenu,
MMS_EDITRECV_EDIT, MF_BYPOSITION,
g_recvedit_entry_table[MMS_EDITRECV_EDIT].id,
g_recvedit_entry_table[MMS_EDITRECV_EDIT].string, 0);
}
*/
return TRUE;
}
/***************************************************************************
* Function RecvEditMenuCallback
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int RecvEditMenuCallback(HDMENU hDmenu, unsigned long id, unsigned long event)
{
if(!hDmenu)
return -1;
if(id >= MMS_EDITRECV_COUNT)
return -1;
if(ENT_BACK == event ||
ENT_LEFT == event)
RecvMenuGoBack();
else if( (id == MMS_EDITRECV_DEL || id == MMS_EDITRECV_DELALL) &&
ENT_RIGHT == event)
return 0;
else if(g_recvedit_entry_table[id].entry)
{
if(id == MMS_EDITRECV_ADDNUM)
g_recv_data.is_a_num = TRUE;
else
g_recv_data.is_a_num = FALSE;
g_recvedit_entry_table[id].entry();
}
return 0;
}
/***************************************************************************
* Function ExistInList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL ExistInList(U8* number, BOOL bNewNum)
{
MmsEditRecvListNode* node = NULL;
if(!number)
return FALSE;
node = g_recv_data.list->head;
if(!node)
return FALSE;
while(node)
{
if(pfnUnicodeStrcmp((S8*)number, (S8*)node->num) == 0) //find
{
if(bNewNum)
{
return TRUE;
}
else
{
if(node == g_recv_data.temp_node)
return FALSE;
else
return TRUE;
}
}
node = node->next;
}
return FALSE;
}
/***************************************************************************
* Function RecvMenuGoBack
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void RecvMenuGoBack(void)
{
GoBackToHistory(g_recv_data.menu_back_screen);
}
/***************************************************************************
* Function RecvGoBack
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void RecvGoBack(void)
{
GoBackToHistory(g_recv_data.back_screen);
ExitRcevList();
}
/***************************************************************************
* Function SubGoBack
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void SubGoBack(void)
{
ExitSubEdit();
GoBackToHistory(SCR_ID_PLX_MMS_EDIT);
}
/***************************************************************************
* Function CreateBoxNumList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL CreateBoxNumList(char* numbers)
{
char* p;
char* start;
char temp = 0;
int len;
MmsEditRecvList* list = NULL;
MmsEditRecvListNode* node = NULL;
#ifdef MMS_DEBUG
PlxTrace("CreateBoxNumList, numbers=%s\r\n", numbers);
#endif
if(!numbers)
return FALSE;
if(numbers[0] == 0)
return FALSE;
list = (MmsEditRecvList*)MMS_Malloc(sizeof(MmsEditRecvList));
if(!list)
return FALSE;
MMS_Memset((void*)list, 0, sizeof(MmsEditRecvList));
list->total_len = MAX_NUM_COUNT;
g_recv_data.list = list;
p = numbers;
start = p;
while(p)
{
if(*p == ';' || *p == 0) //a new number
{
#ifdef MMS_DEBUG
PlxTrace("a new number\r\n");
#endif
//add '\0'
if(*p)
{
#ifdef MMS_DEBUG
PlxTrace("*p=%c\r\n", (char)*p);
#endif
temp = *p;
*p = 0;
}
#ifdef MMS_DEBUG
PlxTrace("start=%s\r\n", start);
#endif
//number len
len = MMS_Strlen(start);
if(len == 0)
{
//empty number, continue
if(temp)
{
*p = temp;
temp = 0;
p++;
start = p;
continue;
}
}
else
{
#ifdef MMS_DEBUG
PlxTrace("new node\r\n");
#endif
//new number node
node = (MmsEditRecvListNode*)
MMS_Malloc(sizeof(MmsEditRecvListNode));
if(!node)
{
if(temp)
{
*p = temp;
temp = 0;
}
p++;
start = p;
continue;
}
MMS_Memset((void*)node, 0, sizeof(MmsEditRecvListNode));
if(len >= MAX_MAIL_LEN)
{
#ifdef MMS_DEBUG
PlxTrace("111\r\n");
#endif
AnsiiNToUnicodeString((S8*)node->num, (S8*)start, MAX_MAIL_LEN-1);
}
else
{
#ifdef MMS_DEBUG
PlxTrace("2222\r\n");
#endif
AnsiiToUnicodeString((S8*)node->num, (S8*)start);
}
if(MMS_Strstr(start, "@") || len >= MAX_NUM_LEN)
node->bEMail = TRUE;
//find name from phonebook
//add node into list
AddNumNode(list, node);
//increase total len
list->total_len += len;
}
//next char
if(temp)
{
*p = temp;
temp = 0;
}
//end
if(*p == 0)
break;
p++;
start = p;
continue;
} //if(*p == ';' || *p == 0)
p++;
} //while
#ifdef MMS_DEBUG
PlxTrace("end\r\n");
#endif
return TRUE;
}
/***************************************************************************
* Function ReleaseBoxNumList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void ReleaseBoxNumList(void)
{
MmsEditRecvListNode* p = NULL;
if(!g_recv_data.bBoxNumList)
return;
if(g_recv_data.list) //clear list
{
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;
}
MMS_Free((void*)g_recv_data.list);
g_recv_data.list = NULL;
}
}
/***************************************************************************
* Function SaveNumber
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
/*void SaveNumber(void)
{
MmsEditRecvListNode* p;
p = GetNumItem(g_recv_data.cur_item);
if(!p)
return;
//save number to phonebook
}
*/
/***************************************************************************
* Function AddNumNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void AddNumNode(MmsEditRecvList* list, MmsEditRecvListNode* node)
{
MmsEditRecvListNode* p;
if(!list || !node)
return;
if(!list->head)
{
list->head = node;
list->count = 1;
return;
}
p = list->head;
while(p->next)
{
p = p->next;
}
p->next = node;
list->count++;
}
/***************************************************************************
* Function EmptyMenuEntry
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EmptyMenuEntry(void)
{
if(g_recv_data.hMenu)
{
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,
STR_ID_PLX_MMS_MENU, RecvEditMenuCallback, EmptyMenuEntry);
EnableLeftSoftkey(STR_GLOBAL_OK, IMG_GLOBAL_OK);
// SetRightSoftkeyFunction(RecvMenuGoBack, KEY_EVENT_UP);
}
}
/***************************************************************************
* Function ShowRecvEditInputBox
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void ShowRecvEditInputBox()
{
U8* guiBuffer = NULL;
// int input_buf_len;
if(GetActiveScreenId() != SCR_ID_PLX_MMS_NEW_RECEIVER)
{
EntryNewScreen(SCR_ID_PLX_MMS_NEW_RECEIVER, NULL, ShowRecvEditInputBox, NULL);
if(!g_recv_data.bAddFromPB)
guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_NEW_RECEIVER);
}
// input_buf_len = g_recv_data.max_buf_len;
RegisterInputBoxEmptyFunction(SetRecvLeftEmptyText);
RegisterInputBoxNotEmptyFunction(SetRecvLeftNotEmptyText);
if(g_recv_data.is_a_num)
{
#ifdef MMS_DEBUG
PlxTrace("a number\r\n");
#endif
// if(input_buf_len == MAX_NUM_LEN*2)
// input_buf_len = input_buf_len / 2;
ShowCategory5Screen(STR_ID_PLX_MMS_EDITRECV_EDIT, IMG_ID_PLX_MMS,
STR_GLOBAL_OK, IMG_GLOBAL_OK,
STR_GLOBAL_BACK, IMG_GLOBAL_BACK,
INPUT_TYPE_PHONE_NUMBER,//INPUT_TYPE_NUMERIC,
(U8*)g_recv_data.temp_buf, g_recv_data.max_buf_len, guiBuffer);
}
else
{
#ifdef MMS_DEBUG
PlxTrace("a mail\r\n");
#endif
// if(input_buf_len == MAX_MAIL_LEN*2)
// input_buf_len = input_buf_len / 2;
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 | INPUT_TYPE_USE_ONLY_ENGLISH_MODES,
(U8*)g_recv_data.temp_buf, g_recv_data.max_buf_len, guiBuffer);
}
SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
// SetLeftSoftkeyFunction(MmsEditRecvOnOk/*SaveRecv*/, KEY_EVENT_UP);
/*
if(bNewRecv)
SetCategory5RightSoftkeyFunction(ExitAddNum, KEY_EVENT_UP);
else
SetCategory5RightSoftkeyFunction(RecvGoBack, KEY_EVENT_UP);
*/
SetCategory5RightSoftkeyFunction(ExitAddNum, KEY_EVENT_UP);
g_recv_data.bAddFromPB = FALSE;
}
void MmsEditRecvOnOk(void)
{
PLIB_RegisterIMEDoneNotify (SaveRecv);
PLIB_IMEOptionEntry ();
}
void RemoveRN(WCHAR* wstring)
{
int i = 0;
int len;
WCHAR* temp = L"\r\n";
if(!wstring)
return;
len = pfnUnicodeStrlen((S8*)wstring);
while(wstring[i] != 0x0000)
{
if(wstring[i] == temp[0] &&
wstring[i+1] == temp[1])
{
MMS_Memmove((void*)(wstring+i), (void*)(wstring+i+2),
(len -i - 2) * 2);
len -= 2;
wstring[len] = 0x0000;
continue;
}
i++;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -