⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plxmmsmessage.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
    	void*  msg = NULL;

#ifdef MMS_DEBUG
    PlxTrace("EditReplyAll\r\n");
#endif

        MMSE_SelectFolder(mmse, mmsmsg->folder);
        msg = MMSE_CreateMessage(mmse, id);

        if(msg)
        {
            //get from and to fields
            from = (char*)MMSE_GetHeaderField(mmse, 
			              msg, "From");
            to   = (char*)MMSE_GetHeaderField(mmse, 
			              msg, "To");
            cc   = (char*)MMSE_GetHeaderField(mmse, 
			              msg, "Cc");

            if(from)
                from_len = MMS_Strlen(from);
            if(to)
                to_len = MMS_Strlen(to);
            if(cc)
                cc_len = MMS_Strlen(cc);
            //len += 2;

            //mmsmsg->to[0] = 0;
            MMS_Memset((void*)mmsmsg->to, 0, MAX_TO_LEN);
            MMS_Memset((void*)mmsmsg->cc, 0, MAX_TO_LEN);
            
            //to
            if(to)
            {
                if(to_len >= MAX_TO_LEN-1)
                {
                    MMS_Strncat(mmsmsg->to, to, MAX_TO_LEN-2);
                    len -= MAX_TO_LEN-2;
                }
                else
                {
                    MMS_Strcat(mmsmsg->to, to);
                    len -= to_len;
                }
            }
            if(from && !MMS_Strstr(mmsmsg->to, from))
            {
                if(from_len < len-1)
                {
                    MMS_Strcat(mmsmsg->to, ";");
                    len -= 1;
                    if(from_len < len)
                    {
                        MMS_Strcat(mmsmsg->to, from);
                    }
                }
            }
            //cc
            if(cc)
            {
                if(cc_len >= MAX_TO_LEN-1)
                {
                    MMS_Strncat(mmsmsg->cc, cc, MAX_TO_LEN-2);
                }
                else
                {
                    MMS_Strcat(mmsmsg->cc, cc);
                }
            }
        
            //sub
            //mmsmsg->sub[0] = 0;
            mmsmsg->sub = NULL;
            mmsmsg->sub_len = 0;

            to = (char*)MMSE_GetHeaderField(mmse, msg, "Subject");
            if(to)
            {
#ifdef MMS_DEBUG
    PlxTrace("sub=%s\r\n", to);
#endif
                mmsmsg->sub_len = MMS_Strlen(to) + 5;
                mmsmsg->sub  = (char*)MMS_Malloc(mmsmsg->sub_len);
                if(!mmsmsg->sub)
                {
                    mmsmsg->sub_len = 0;
                    MMSE_CloseMessage(mmse, msg);
                    return 0;
                }

                MMS_Strcpy(mmsmsg->sub, "RE:");
#ifdef MMS_DEBUG
    PlxTrace("sub=%s\r\n", mmsmsg->sub);
#endif
                MMS_Strcat(mmsmsg->sub, to);
/*
                MMS_Memcpy((void*)(mmsmsg->sub+3),
                    (void*)to, MAX_SUB_LEN-3);
                mmsmsg->sub[MAX_SUB_LEN-1] = 0;
*/
#ifdef MMS_DEBUG
    PlxTrace("sub=%s\r\n", mmsmsg->sub);
#endif
            }
            else
            {
                mmsmsg->sub_len = MMS_Strlen("RE:") + 1;
                mmsmsg->sub = (char*)MMS_Malloc(mmsmsg->sub_len);
                if(mmsmsg->sub)
                    MMS_Strcpy(mmsmsg->sub, "RE:");
            }

            //close the original message
		    MMSE_CloseMessage(mmse, msg);
        }
	}

    return 0;
}

/***************************************************************************
* Function	mmsmsg_AddContent
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL mmsmsg_AddContent(MmsMessage* msg, char* name, int nType, const char* type, 
                       long length, void MMS_HUGE* data, void* param, 
                       int left, int top, int width, int height, BOOL bAtt)
{
    int             mmse_err;
    MMSECONTENTINFO content_info;

    if(!msg || !msg->mmse  || !msg->msg)// || !name)
    {
        mmsmsg_SetLastError(msg, MMS_MSG_ERR_FAILURE);
        return FALSE;
    }

    MMS_Memset((void*)&content_info, 0, sizeof(MMSECONTENTINFO));

    content_info.left = left;
    content_info.top  = top;
    content_info.width = width;
    content_info.height = height;
    content_info.type = nType;
    //content_info.flag = 0;
    //content_info.bengin = content_info.end = 0;
    content_info.alt = name;

    content_info.content.name = name;
    content_info.content.type = (char*)type;
    content_info.content.length = length;
    content_info.content.pData = data;
    content_info.content.bAttachment = bAtt;

    if(!data)
    {
        content_info.content.read = MmsParamRead;
        content_info.content.param = param;
        if(!al_AddNode(&(msg->add_list), param))
        {
            mmsmsg_SetLastError(msg, MMS_MSG_ERR_FAILURE);
            return FALSE;
        }
    }

    if(bAtt)
    {
        if((mmse_err = MMSE_AddContent(msg->mmse, msg->msg, &(content_info.content))) < 0)
        {
            switch(mmse_err)
            {
            case MMSE_FAILURE:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_FAILURE);
                break;
            case MMSE_MM_SIZE_ERROR:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_INS_OBJTOOBIG);
                break;
            case MMSE_SUCCESS:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_SUCCESS);
                break;
            }

            if(!data)
            {
                al_DelNode(&(msg->add_list), param);
            }
            return FALSE;
        }
    }
    else
    {
        if((mmse_err = MMSE_AddSlideContent(msg->mmse, msg->msg, &content_info)) < 0)
        {
            switch(mmse_err)
            {
            case MMSE_FAILURE:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_FAILURE);
                break;
            case MMSE_MM_SIZE_ERROR:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_INS_OBJTOOBIG);
                break;
            case MMSE_SUCCESS:
                mmsmsg_SetLastError(msg, MMS_MSG_ERR_SUCCESS);
                break;
            }

            if(!data)
            {
                al_DelNode(&(msg->add_list), param);
            }
            return FALSE;
        }
    }

    if(!bAtt)
    {
        switch(nType)
        {
        case MMS_TEXT:
            msg->text_modified = TRUE;
            break;
        case MMS_IMAGE:
            msg->image_modified = TRUE;
            break;
        case MMS_AUDIO:
            msg->sound_modified = TRUE;
            break;
        default:;
        }    
    }
#ifdef MMS_FLUSHOBJ
    MMSE_Flush(msg->mmse, msg->msg);
#endif
    msg->message_modified = TRUE;
    mmsmsg_SetLastError(msg, MMS_MSG_ERR_SUCCESS);

    return TRUE;
}

/***************************************************************************
* Function	mmsmsg_GetAttCount
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
int mmsmsg_GetAttCount(MmsMessage* msg)
{
    int i;
    int count;
    PMMSECONTENT content;

    if(!msg || !msg->mmse || !msg->msg)
        return 0;

    count = 0;
    i = 1;
    content = MMSE_GetContent(msg->mmse, msg->msg, i);
    while(content)
    {
        if(content->bAttachment)
            count++;
        i++;
        content = MMSE_GetContent(msg->mmse, msg->msg, i);
    }

    return count;
}

/***************************************************************************
* Function	mmsmsg_ReleaseContent
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
PMMSECONTENT mmsmsg_ReleaseContent(MmsMessage* msg, PMMSECONTENT content)
{
    return NULL;
}

/***************************************************************************
* Function	mmsmsg_DelText
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL mmsmsg_DelText(MmsMessage* msg)
{
    MMSESLIDEINFO info;

    if(!msg || !msg->mmse || !msg->msg)
        return FALSE;
    //no slide
    if(MMSE_GetSlideCount(msg->mmse, msg->msg) == 0)
        return FALSE;

    //get slide info
    if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
        return FALSE;

    if(!info.pTextContent)
        return TRUE;

    //delete add list node
    if(info.pTextContent->param)
    {
        al_DelNode(&(msg->add_list), info.pTextContent->param);
    }

    //delete content
	MMSE_DeleteSlideContent(msg->mmse, msg->msg, MMS_TEXT);

    msg->text_modified   = TRUE;
    msg->message_modified = TRUE;

    return TRUE;
}

/***************************************************************************
* Function	mmsmsg_DelImage
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL mmsmsg_DelImage(MmsMessage* msg)
{
    MMSESLIDEINFO info;

    if(!msg || !msg->mmse || !msg->msg)
        return FALSE;
    if(MMSE_GetSlideCount(msg->mmse, msg->msg) == 0)
        return FALSE;

    //get slide info
    if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
        return FALSE;

    if(!info.pImageContent)
        return TRUE;

    //delete add list node
    if(info.pImageContent->param)
    {
        al_DelNode(&(msg->add_list), info.pImageContent->param);
    }

	MMSE_DeleteSlideContent(msg->mmse, msg->msg, MMS_IMAGE);

    msg->image_modified   = TRUE;
    msg->message_modified = TRUE;

    return TRUE;
}

/***************************************************************************
* Function	mmsmsg_DelSound
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
BOOL mmsmsg_DelSound(MmsMessage* msg)
{
    MMSESLIDEINFO info;

    if(!msg || !msg->mmse || !msg->msg)
        return FALSE;
    if(MMSE_GetSlideCount(msg->mmse, msg->msg) == 0)
        return FALSE;

    //get slide info
    if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
        return FALSE;

    if(!info.pAudioContent)
        return TRUE;

    //delete add list node
    if(info.pAudioContent->param)
    {
        al_DelNode(&(msg->add_list), info.pAudioContent->param);
    }

	MMSE_DeleteSlideContent(msg->mmse, msg->msg, MMS_AUDIO);

    msg->sound_modified   = TRUE;
    msg->message_modified = TRUE;

    return TRUE;
}

/***************************************************************************
* Function	mmsmsg_GetContentData
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
unsigned char MMS_HUGE* mmsmsg_GetContentData(MmsMessage* msg, 
                                              int type, long* data_len)
{
    long              i       = 0;
    long              len     = 0;
    unsigned char*    data    = NULL;
    READPROC          func_read;
    MMSESLIDEINFO     info;
    PMMSECONTENT      content = NULL;

    if(!msg || !msg->mmse || !msg->msg || !data_len)
        return NULL;

    if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
        return NULL;

    switch(type)
    {
    case MMS_TEXT:
        content = info.pTextContent;
        break;
    case MMS_IMAGE:
        content = info.pImageContent;
        break;
    case MMS_AUDIO:
        content = info.pAudioContent;
        break;
    default:
        return NULL;
    }
    
    if(!content)
        return NULL;

    len = content->length;
    *data_len = len;

    if(len <= 0)
        return NULL;

    if(type != MMS_IMAGE)
        data = (unsigned char*)MMS_MALLOC(sizeof(unsigned char) * len+1);
    else
        data = (unsigned char*)MMS_MALLOC(sizeof(unsigned char) * (len+8+1));

    if(!data)
        return NULL;

    if(content->pData) //get data from content
    {
        MMS_Memcpy((void*)data, (void*)content->pData, len);
    }
    else //from callback
    {
        func_read = content->read;
        len = content->length;
        i = 0;

        //get content data
        while((i = func_read(content->param, 
		      (void MMS_HUGE*)(data+i), len)) > 0)
        {
            len -= i;
        }
    }

    return data;
}

/***************************************************************************
* Function	mmsmsg_GetContentLength
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
long mmsmsg_GetContentLength(MmsMessage* msg, int type)
{
    MMSESLIDEINFO info;
    PMMSECONTENT   content;

    if(!msg || !msg->mmse || !msg->msg)
        return 0;

    if(MMSE_GetSlideInfo(msg->mmse, msg->msg, &info) < 0)
        return 0;

    switch(type)
    {
    case MMS_TEXT:
        content = info.pTextContent;
        break;
    case MMS_IMAGE:
        content = info.pImageContent;
        break;
    case MMS_AUDIO:
        content = info.pAudioContent;
        break;
    default:
        return 0;
    }

    if(content)
        return content->length;

    return 0;
}

/***************************************************************************
* Function	mmsmsg_GetGivenContentData
* Purpose	
* Params	
* Return	
* Remarks	

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -