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

📄 plxmms_edit.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
/***************************************************************************
* 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 + -