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

📄 plxmms_recvedit.c

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