📄 plxmms_edit.c
字号:
/***************************************************************************
* Function EnterBCC
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterBCC(void)
{
if(!CreateRecvEdit(&g_edit_data.bcc_list, 2, SCR_ID_PLX_MMS_EDIT))
{
//err
EditMainMenuMenuGoBack();
}
}
/***************************************************************************
* Function EnterSub
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterSub(void)
{
if(!CreateSubEdit((U8*)g_edit_data.sub, /*MAX_OBJ_NAME_LEN*/MMS_MAX_SUB_LEN, &g_edit_data.bSubModified))
{
//err
EditMainMenuMenuGoBack();
}
}
//MmsEditRecvListNode* GetNumItem(int index);
//void DelNumItem(MmsEditRecvListNode* node);
/***************************************************************************
* Function MmsEditInitRecvLists
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void MmsEditInitRecvLists(void)
{
char* start;
char* p;
int len;
char temp = 0;
MmsEditRecvListNode* node;
//to
MMS_Memset((void*)&g_edit_data.recv_list, 0, sizeof(MmsEditRecvList));
g_edit_data.recv_list.total_len = MAX_NUM_COUNT;
if(g_edit_data.to[0] == 0)
goto init_cc;
p = g_edit_data.to;
start = p;
while(p)
{
if(*p == ';' || *p == 0)
{
if(*p)
{
temp = *p;
*p = 0;
}
len = MMS_Strlen(start);
if(len == 0) //empty number
{
if(temp)
{
*p = temp;
temp = 0;
p++;
start = p;
continue;
}
}
else //new number
{
//new 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));
//get number
if(len >= MAX_MAIL_LEN)//MAX_TO_LEN)
{
AnsiiNToUnicodeString((S8*)node->num,
(S8*)start, MAX_MAIL_LEN-1);//MAX_TO_LEN-1);
}
else
{
AnsiiToUnicodeString((S8*)node->num, (S8*)start);
}
//if a email
if(MMS_Strstr(start, "@") || len >= MAX_NUM_LEN)
node->bEMail = TRUE;
/* done in recv list
//get name
if(node->bEMail)
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN*2, PFIELD_EMAIL, (WCHAR*)node->num);
else
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN*2, PFIELD_NUMBER, (WCHAR*)node->num);
*/
//insert number into list
AddNumNode(&g_edit_data.recv_list, node);
g_edit_data.recv_list.total_len += len;
}
if(p && temp)
{
*p = temp;
temp = 0;
}
p++;
start = p;
if(*p == 0)
break;
continue;
} //if(*p == ';' || *p == 0)
p++;
} //while
//cc
init_cc:
MMS_Memset((void*)&g_edit_data.cc_list, 0, sizeof(MmsEditRecvList));
g_edit_data.cc_list.total_len = MAX_NUM_COUNT;
if(g_edit_data.cc[0] == 0)
goto init_bcc;
p = g_edit_data.cc;
start = p;
while(p)
{
if(*p == ';' || *p == 0)
{
if(*p)
{
temp = *p;
*p = 0;
}
len = MMS_Strlen(start);
if(len == 0) //empty number
{
if(temp)
{
*p = temp;
temp = 0;
p++;
start = p;
continue;
}
}
else //new number
{
//new 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));
//get number
if(len >= MAX_MAIL_LEN)//MAX_TO_LEN)
{
AnsiiNToUnicodeString((S8*)node->num, (S8*)start, MAX_MAIL_LEN-1);//MAX_TO_LEN-1);
}
else
{
AnsiiToUnicodeString((S8*)node->num, (S8*)start);
}
//if a email
if(MMS_Strstr(start, "@") || len >= MAX_NUM_LEN)
node->bEMail = TRUE;
/*
//get name
if(node->bEMail)
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN, PFIELD_EMAIL, (WCHAR*)node->num);
else
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN, PFIELD_NUMBER, (WCHAR*)node->num);
*/
//insert node into list
AddNumNode(&g_edit_data.cc_list, node);
g_edit_data.cc_list.total_len += len;
}
if(p && temp)
{
*p = temp;
temp = 0;
}
p++;
start = p;
if(*p == 0)
break;
continue;
} //if(*p == ';' || *p == 0)
p++;
} //while
//bcc
init_bcc:
MMS_Memset((void*)&g_edit_data.bcc_list, 0, sizeof(MmsEditRecvList));
g_edit_data.bcc_list.total_len = MAX_NUM_COUNT;
if(g_edit_data.bcc[0] == 0)
return;
p = g_edit_data.bcc;
start = p;
while(p)
{
if(*p == ';' || *p == 0)
{
if(*p)
{
temp = *p;
*p = 0;
}
len = MMS_Strlen(start);
if(len == 0) //empty number
{
if(temp)
{
*p = temp;
temp = 0;
p++;
start = p;
continue;
}
}
else //new number
{
//new 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));
//get number
if(len >= MAX_MAIL_LEN)//MAX_TO_LEN)
{
AnsiiNToUnicodeString((S8*)node->num, (S8*)start, MAX_MAIL_LEN-1);//MAX_TO_LEN-1);
}
else
{
AnsiiToUnicodeString((S8*)node->num, (S8*)start);
}
//if a email
if(MMS_Strstr(start, "@") || len >= MAX_NUM_LEN)
node->bEMail = TRUE;
/*
//get name
if(node->bEMail)
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN, PFIELD_EMAIL, (WCHAR*)node->num);
else
PLIB_GetPhbookName((WCHAR*)node->name, MAX_NAME_LEN, PFIELD_NUMBER, (WCHAR*)node->num);
*/
//insert node into list
AddNumNode(&g_edit_data.bcc_list, node);
g_edit_data.bcc_list.total_len += len;
}
if(p && temp)
{
*p = temp;
temp = 0;
}
p++;
start = p;
if(*p == 0)
break;
continue;
} //if(*p == ';' || *p == 0)
p++;
} //while
return;
}
/***************************************************************************
* Function MmsEditInitSub
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void MmsEditInitSub(void)
{
char* utfSub;
char* charset = NULL;
int utfLen;
char temp = 0;
// int uniLen;
WCHAR* wSub = NULL;
int wSubLen = 0;
//get utf subject
utfSub = mmsmsg_GetSub(g_edit_data.message);
if(!utfSub || utfSub[0] == 0)
{
g_edit_data.sub[0] = 0;
g_edit_data.sub[1] = 0;
return;
}
//remove charset
charset = MMS_Strstr(utfSub, ";Charset");
if(charset)
{
temp = *charset;
*charset = 0;
}
utfLen = MMS_Strlen(utfSub);
/* if(utfLen >= MAX_SUB_LEN)
{
uniLen = PlxMmsUTF8ToWideChar((const char*)utfSub, (int)MAX_SUB_LEN-1,
(char*)g_edit_data.sub, (int)MAX_SUB_LEN*2);
g_edit_data.sub[uniLen] = 0;
g_edit_data.sub[uniLen+1] = 0;
}
else
{
uniLen = PlxMmsUTF8ToWideChar((const char*)utfSub, (int)utfLen,
(char*)g_edit_data.sub, (int)MAX_SUB_LEN*2);
g_edit_data.sub[uniLen] = 0;
g_edit_data.sub[uniLen+1] = 0;
}
*/
wSub = MMS_UTF8ToUnicode((unsigned char*)utfSub, utfLen, &wSubLen);
if(!wSub)
{
g_edit_data.sub[0] = 0;
g_edit_data.sub[1] = 0;
return;
}
if(wSubLen > MAX_SUB_LEN)
wSub[MAX_SUB_LEN] = 0x0000;
pfnUnicodeStrcpy((S8*)g_edit_data.sub, (S8*)wSub);
if(charset && temp)
*charset = temp;
MMS_Free((void*)wSub);
}
////////////////////////////////////////////////////////////////////////
/***************************************************************************
* Function EnterContent
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
void EnterContent(void)
{
BOOL bHasText;
BOOL bHasImage;
//update content
bHasText = UpdateText();
bHasImage = UpdateImage();
// UpdateSound();
// UpdateTitle();
if(!bHasText && !bHasImage)
g_edit_data.bTextFirst = FALSE;
else if(bHasText && !bHasImage)
g_edit_data.bTextFirst = TRUE;
else if(!bHasText && bHasImage)
g_edit_data.bTextFirst = FALSE;
else
g_edit_data.bTextFirst = mmsmsg_IsTextFirst(g_edit_data.message);
// UpdateContentEdit();
if(mmsmsg_IsContentEmpty(g_edit_data.message))
PopMmsEditMenu();
else
ShowEditContent();
}
//draw screen
/***************************************************************************
* Function ShowEditContent
* Purpose
* Params
* Return
* Remarks
\*****************
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -