📄 plxmmsmessage.c
字号:
/***************************************************************************
* Function mmsmsg_GetMode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
enum EditMode mmsmsg_GetMode(MmsMessage* msg)
{
if(!msg)
return -1;
return msg->mode;
}
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*
* public functions for MmsList *
*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/***************************************************************************
* Function al_CreateMmsList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
MmsAddList* al_CreateMmsList(void)
{
MmsAddList* list = (MmsAddList*)MMS_MALLOC(sizeof(MmsAddList));
if(!list)
return NULL;
MMS_Memset((void*)list, 0, sizeof(MmsAddList));
return list;
}
/***************************************************************************
* Function al_ReleaseMmsList
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
MmsAddList* al_ReleaseMmsList(MmsAddList* list)
{
if(!list)
return NULL;
al_RemoveAll(list);
return NULL;
}
/***************************************************************************
* Function al_AddNodeByNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_AddNodeByNode(MmsAddList* list, MmsAddListNode* pNode)
{
if(!list || !pNode)
{
return FALSE;
}
if(!(list->head))
{
list->head = pNode;
list->head->next = list->head;
list->head->prev = list->head;
list->count++;
return TRUE;
}
pNode->prev = list->head;
pNode->next = list->head->next;
pNode->next->prev = pNode;
pNode->prev->next = pNode;
list->count++;
return TRUE;
}
/***************************************************************************
* Function al_AddNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_AddNode(MmsAddList* list, void* p)
{
MmsAddListNode* pNode = NULL;
if(!list || !p)
{
return FALSE;
}
pNode = aln_CreateListNode_Data(p);
if(!pNode)
{
return FALSE;
}
return al_AddNodeByNode(list, pNode);
}
/***************************************************************************
* Function al_DelNodeByNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_DelNodeByNode(MmsAddList* list, MmsAddListNode* pNode)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: al_DelNodeByNode\r\n");
#endif
if(!list || !pNode || list->count <= 0)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: NULLs\r\n");
#endif
return FALSE;
}
#ifdef MMS_DEBUG
PlxTrace("MMSUI: come on\r\n");
#endif
//only one node in list
if(pNode == list->head && list->count == 1)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: del the only head\r\n");
#endif
list->head = NULL;
list->count = 0;
if(pNode->content)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: free %p\r\n", pNode->content);
#endif
// MMS_FREE(pNode->content);
frr_ReleaseRecord((FRRecord*)pNode->content);
#ifdef MMS_DEBUG
PlxTrace("MMSUI: free end\r\n");
#endif
}
//delete pNode;
aln_ReleaseListNode(pNode);
return TRUE;
}
//delete head
if(pNode == list->head)
{
list->head = pNode->next;
}
pNode->prev->next = pNode->next;
pNode->next->prev = pNode->prev;
pNode->next = pNode->prev = NULL;
list->count--;
if(pNode->content)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: free %p\r\n", pNode->content);
#endif
// MMS_FREE(pNode->content);
frr_ReleaseRecord((FRRecord*)pNode->content);
#ifdef MMS_DEBUG
PlxTrace("MMSUI: free end\r\n");
#endif
}
//delete pNode;
aln_ReleaseListNode(pNode);
return TRUE;
}
/***************************************************************************
* Function al_DelNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_DelNode(MmsAddList* list, void* p)
{
MmsAddListNode* pNode = NULL;
if(!list || list->count == 0 || !p)
{
return TRUE;
}
//find node
pNode = list->head;
if(pNode && pNode->content == p)
{
return al_DelNodeByNode(list, pNode);
}
if(pNode)
{
pNode = pNode->next;
}
while(pNode && pNode != list->head)
{
if(pNode->content == p)
{
break;
}
pNode = pNode->next;
}
if(!pNode || pNode == list->head)
{
return FALSE;
}
return al_DelNodeByNode(list, pNode);
}
/***************************************************************************
* Function al_SetContent
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_SetContent(MmsAddList* list, void* p, void* pContent)
{
return TRUE;
}
/***************************************************************************
* Function al_GetNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
MmsAddListNode* al_GetNode(MmsAddList* list, void* p)
{
MmsAddListNode* pNode = NULL;
if(!list || list->count == 0 || !p)
{
return NULL;
}
pNode = list->head;
if(pNode && pNode->content == p)
{
return pNode;
}
if(pNode)
{
pNode = pNode->next;
}
while(pNode && pNode != list->head)
{
if(pNode->content == p)
{
return pNode;
}
pNode = pNode->next;
}
return NULL;
}
/***************************************************************************
* Function al_GetHeadNode
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
MmsAddListNode* al_GetHeadNode(MmsAddList* list)
{
if(!list)
return NULL;
return list->head;
}
/***************************************************************************
* Function al_GetNodeCount
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
int al_GetNodeCount(MmsAddList* list)
{
if(!list)
return 0;
return list->count;
}
/***************************************************************************
* Function al_RemoveAll
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL al_RemoveAll(MmsAddList* list)
{
MmsAddListNode* p = NULL;
#ifdef MMS_DEBUG
PlxTrace("MMSUI: al_RemoveAll\r\n");
#endif
if(!list)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: !list\r\n");
#endif
return FALSE;
}
if(list->count > 0)
{
p = list->head;
while(p)
{
#ifdef MMS_DEBUG
PlxTrace("MMSUI: in while\r\n");
#endif
al_DelNodeByNode(list, p);
p = list->head;
}
}
return TRUE;
}
//private functions
/***************************************************************************
* Function MmsParamRead
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
long MmsParamRead(void* param, char _HUGE* pBuf, long buflen)
{
FRRecord* frr = (FRRecord*)param;
long len;
if(!param)
{
return 0;
}
if(!frr_GetFileName(frr))
{
return 0;
}
if(frr_GetFileHandle(frr) < 0)
{
frr_OpenFile(frr);
}
if(pBuf)
len = frr_ReadFile(frr, (void*)pBuf, buflen);
else
{
len = frr_GetFileSize(frr);
frr_CloseFile(frr);
}
return len;
}
/***************************************************************************
* Function mmsmsg_SavePhoneNum
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_SavePhoneNum(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(msg->to[0] == 0)
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "To", NULL) < 0)
return FALSE;
// return TRUE;
}
else
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "To", msg->to) < 0)
return FALSE;
}
if(msg->cc[0] == 0)
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "Cc", NULL) < 0)
return FALSE;
}
else
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "Cc", msg->cc) < 0)
return FALSE;
}
if(msg->bcc[0] == 0)
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "Bcc", NULL) < 0)
return FALSE;
}
else
{
if(MMSE_SetHeaderField(msg->mmse, msg->msg, "Bcc", msg->bcc) < 0)
return FALSE;
}
// if(MMSE_SetHeaderField(msg->mmse, msg->msg, "To", msg->to) < 0)
// return FALSE;
return TRUE;
}
/***************************************************************************
* Function mmsmsg_ReadContentData
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
/*unsigned char MMS_HUGE* mmsmsg_ReadContentData(MmsMessage* msg, PMMSECONTENT content)
{
return NULL;
}
*/
/***************************************************************************
* Function mmsmsg_GetSubFromMsg
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
/*int mmsmsg_GetSubFromMsg(MmsMessage* msg)
{
char* content = NULL;
int length;
if(!msg || !msg->mmse || !msg->msg)
return 0;
content = (char*)MMSE_GetHeaderField(msg->mmse, msg->msg, "Subject");
if(!content)
{
msg->sub[0] = 0;
return 0;
}
length = MMS_Strlen(content);
if(length >= MAX_SUB_LEN)
{
MMS_Memcpy((void*)msg->sub, (void*)content, MAX_SUB_LEN-1);
msg->sub[MAX_SUB_LEN-1] = 0;
}
else
{
MMS_Memcpy((void*)msg->sub, (void*)content, length);
msg->sub[length] = 0;
}
return (length >= MAX_SUB_LEN) ? MAX_SUB_LEN : length;
}
*/
/***************************************************************************
* Function mmsmsg_SaveSub
* Purpose
* Params
* Return
* Remarks
\**************************************************************************/
BOOL mmsmsg_SaveSub(MmsMessage* msg)
{
if(!msg || !msg->mmse || !msg->msg)
return FALSE;
if(!msg->sub || msg->sub[0] == 0)
return (MMSE_SetHeaderField(msg->mmse, msg->msg, "Subject", NULL) == 0);
MMS_Strcat(msg->sub, SUB_CHARSET);
return (MMSE_SetHeaderField(msg->mmse, msg-
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -