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

📄 plxmms_recvedit.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 4 页
字号:
        {
#ifdef MMS_RECVLIST_NOMAILNAME
            name[0] = name[1] = 0;
#else
            PLIB_GetPhbookName((WCHAR*)name, MAX_NAME_LEN*2, 
                PFIELD_EMAIL, (WCHAR*)p->num);
#endif
        }
        else //number
        {
            PLIB_GetPhbookName((WCHAR*)name, MAX_NAME_LEN*2, 
                PFIELD_NUMBER, (WCHAR*)p->num);
        }

        if(name[0] == 0 &&
           name[1] == 0) //no name
        {
            pfnUnicodeStrcpy((S8*)str_buff, (S8*)p->num);
        }
        else
        {
            pfnUnicodeStrcpy((S8*)str_buff, (S8*)name);
        }
    }

    *img_buff_p = (UI_image_type)GetImage((U16)(IMG_GLOBAL_L1 + item_index));
    return TRUE;
}

/***************************************************************************
* Function	RecvListGetItemHint
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
S32 RecvListGetItemHint(S32 item_index, UI_string_type *hint_array)
{
    MmsEditRecvListNode* p;

    p = GetNumItem(item_index);
    if(!p)
    {
        (*hint_array)[0] = 0;
        (*hint_array)[1] = 0;
    }
    else
        pfnUnicodeStrcpy((S8*)(*hint_array), (S8*)p->num);
    return 1;
}

/***************************************************************************
* Function	ExitRcevList
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void ExitRcevList(void)
{
//    MmsEditRecvListNode* p = NULL;

    if(g_recv_data.hMenu)
    {
        PlxDestroyDMenu(g_recv_data.hMenu);
        g_recv_data.hMenu = NULL;
    }
    if(g_recv_data.temp_node && g_recv_data.cur_item == -1) // new item
    {
        MMS_Free((void*)g_recv_data.temp_node);
    }

    if(g_recv_data.bBoxNumList)
    {
        ReleaseBoxNumList();
    }

    MMS_Memset((void*)&g_recv_data, 0, sizeof(MmsRecvData));
//    GoBackHistory();
}

//recv list menu
/***************************************************************************
* Function	EnterRecvListMenu
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterRecvListMenu(void)
{
    if(g_recv_data.list->count == MAX_NUM_COUNT ||
       g_recv_data.list->total_len == MAX_TO_LEN-1)
    {
        //add number
        PlxModifyDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_ADDNUM, MF_BYPOSITION | MF_DISABLED,
            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);
        //add email
        PlxModifyDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_ADDEMAIL, MF_BYPOSITION | MF_DISABLED,
            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);
    }
    else
    {
        //add number
        PlxModifyDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_ADDNUM, MF_BYPOSITION | MF_ENABLED,
            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);
        //add email
        PlxModifyDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_ADDEMAIL, MF_BYPOSITION | MF_ENABLED,
            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);
    }

    //delete
    PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_DEL, MF_BYCOMMAND);
    PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_EDIT, MF_BYCOMMAND);
    PlxDeleteDMenuItem(g_recv_data.hMenu, MMS_EDITRECV_DELALL, MF_BYCOMMAND);

    if(g_recv_data.list->head)
    {
        //add edit
        PlxInsertDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_EDIT, MF_BYPOSITION,
            g_recvedit_entry_table[MMS_EDITRECV_EDIT].id,
            (const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_EDIT].string), 
            g_recvedit_entry_table[MMS_EDITRECV_EDIT].icon);
        //add del
        PlxInsertDMenuItem(g_recv_data.hMenu, 
            MMS_EDITRECV_DEL, MF_BYPOSITION,
            g_recvedit_entry_table[MMS_EDITRECV_DEL].id,
            (const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_DEL].string), 
            g_recvedit_entry_table[MMS_EDITRECV_DEL].icon);
        //add delall
        if(g_recv_data.list->count > 1)
        {
            PlxInsertDMenuItem(g_recv_data.hMenu, 
                MMS_EDITRECV_DELALL, MF_BYPOSITION,
                g_recvedit_entry_table[MMS_EDITRECV_DELALL].id,
                (const char *)GetString(g_recvedit_entry_table[MMS_EDITRECV_DELALL].string), 
                g_recvedit_entry_table[MMS_EDITRECV_DELALL].icon);
        }
    }
    
    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,//SCR_ID_PLX_MMS_RECVEDIT_MENU4,
        STR_ID_PLX_MMS_MENU, RecvEditMenuCallback, EmptyMenuEntry);
//    SetRightSoftkeyFunction(RecvMenuGoBack, KEY_EVENT_UP);
}

/***************************************************************************
* Function	EnterEditItem
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterEditItem(void)
{
    int buf_len;
    int max_len;
    int max_buf_len;
    int len;
    MmsEditRecvListNode* node = NULL;

    if(!g_recv_data.temp_node)
    {
        if(g_recv_data.cur_item < 0) //edit a new one
        {
            node = MMS_Malloc(sizeof(MmsEditRecvListNode));
            if(!node)
                return;
            MMS_Memset((void*)node, 0, sizeof(MmsEditRecvListNode));

            g_recv_data.temp_node = node;
            pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf, (S8*)node->num);
        }
        else //edit cur item
        {
            g_recv_data.temp_node = GetNumItem(g_recv_data.cur_item);
        }
        
        if(!g_recv_data.temp_node)
            return;
        if(g_recv_data.temp_node->bEMail)
            g_recv_data.is_a_num = FALSE;
        else
            g_recv_data.is_a_num = TRUE;
    }

    len = pfnUnicodeStrlen((S8*)g_recv_data.temp_node->num);
    max_len = MAX_TO_LEN - g_recv_data.list->total_len + len;

    //max edit length
    if(g_recv_data.is_a_num)
        max_buf_len = MAX_NUM_LEN;
    else
        max_buf_len = MAX_MAIL_LEN;

    if(max_len > max_buf_len)//MAX_NUM_LEN*2)
        buf_len = max_buf_len;//MAX_NUM_LEN*2;
    else
        buf_len = max_len;

    g_recv_data.max_buf_len = buf_len;
    pfnUnicodeStrcpy((S8*)g_recv_data.temp_buf, (S8*)g_recv_data.temp_node->num);

    ShowRecvEditInputBox();
}

/***************************************************************************
* Function	EnterDelItem
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterDelItem(void)
{
//    int   i = 0;
    WCHAR ifdel[10];

    pfnUnicodeStrcpy((S8*)ifdel, (S8*)GetString(STR_ID_PLX_MMS_BOX_DEL));
    pfnUnicodeStrcat((S8*)ifdel, (S8*)L"?");

    PLIB_ConfirmBox(NULL, 
                (WCHAR*)ifdel,
                (WCHAR*)GetString(STR_GLOBAL_YES), 
                (WCHAR*)GetString(STR_GLOBAL_NO), 
                NULL, 0, NULL, 0, IfDelCallback);
    SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
}

/***************************************************************************
* Function	IfDelCallback
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void IfDelCallback(PLIBEVENT event)
{
    int len;
    MmsEditRecvListNode* p;

    switch(event)
    {
    case PEVENT_POSITIVE:
        p = GetNumItem(g_recv_data.cur_item);
        if(!p)
        {
            if(IsScreenPresent(SCR_ID_PLX_MMS_RECVLIST))
                GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
            else
            {
                enter_list();
                DeleteScreenIfPresent(SCR_ID_PLX_MMS_RECVEDIT_MENU2);
            }
            return;
        }

        len = pfnUnicodeStrlen((S8*)p->num);
        g_recv_data.list->total_len -= len;

        DelNumItem(p);

        g_recv_data.list->modified = TRUE;

    //    enter_list();
        if(IsScreenPresent(SCR_ID_PLX_MMS_RECVLIST))
            GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
        else
        {
            enter_list();
            DeleteScreenIfPresent(SCR_ID_PLX_MMS_RECVEDIT_MENU2);
        }
        break;
    case PEVENT_NEGTIVE:
        GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
        break;
    }
}

/***************************************************************************
* Function	EnterDelAllItem
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterDelAllItem(void)
{
//    int i = 0;
    PLIB_ConfirmBox(NULL, (WCHAR*)GetString(STR_ID_PLX_MMS_BOX_IFDELALL),
        (WCHAR*)GetString(STR_GLOBAL_YES), (WCHAR*)GetString(STR_GLOBAL_NO), 
        NULL, 0, NULL, 0, IfDelAllCallback);
    SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
}

/***************************************************************************
* Function	IfSaveCallback
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void IfDelAllCallback(PLIBEVENT event)
{
    MmsEditRecvListNode* p;

    switch(event)
    {
    case PEVENT_POSITIVE:
        //delete all
        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;
        }
        g_recv_data.list->count = 0;
        g_recv_data.list->total_len = MAX_NUM_COUNT;
        g_recv_data.list->modified = TRUE;
        //go back to list
        GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
        break;
    case PEVENT_NEGTIVE:
        GoBackToHistory(SCR_ID_PLX_MMS_RECVLIST);
        break;
    }
}

/***************************************************************************
* Function	EnterSaveNum
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterSaveNum(void)
{
    MmsEditRecvListNode* p;
	U8*                  pAt = NULL;
	WCHAR				 temp;

    //pop confirm
    p = GetNumItem(g_recv_data.cur_item);
    if(!p)
        return;

    if(p->bEMail) //mail
    {
        //PLIB_AddPhbookRecord(PFIELD_EMAIL, (WCHAR*)p->num);
		pAt = MMS_WFindCharFromEnd((U8*)p->num, pfnUnicodeStrlen((S8*)p->num), '@');
		if(!pAt)
			return;

		temp = *((WCHAR*)pAt);
		*((WCHAR*)pAt) = 0x0000;
		
		PLIB_AddPhbookRecord(PFIELD_NUMBER, (WCHAR*)p->num);

		*((WCHAR*)pAt) = temp;
    }
    else //number
    {
        PLIB_AddPhbookRecord(PFIELD_NUMBER, (WCHAR*)p->num);
    }
}

/***************************************************************************
* Function	EnterCall
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterCall(void)
{
    MmsEditRecvListNode* p;
	U8*                  pAt = NULL;
	WCHAR				 temp;

    //pop confirm
    p = GetNumItem(g_recv_data.cur_item);
    if(!p)
        return;

	if(p->bEMail)
	{
		pAt = MMS_WFindCharFromEnd((U8*)p->num, pfnUnicodeStrlen((S8*)p->num), '@');
		if(!pAt)
			return;

		temp = *((WCHAR*)pAt);
		*((WCHAR*)pAt) = 0x0000;
		
		PLIB_MakeCall((WCHAR*)p->num, NULL);

		*((WCHAR*)pAt) = temp;
	}
	else
	    PLIB_MakeCall((WCHAR*)p->num, NULL);
}

/*
void EnterRecvEdit(void)
{
    U8* guiBuffer=NULL;
//	S8* psTmp = NULL;
//	S32 nSize = 0;
    
    EntryNewScreen(SCR_ID_PLX_MMS_NEW_RECEIVER, NULL, 
		EnterRecvEdit, NULL);
	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_NEW_RECEIVER);
	SetParentHandler(MENU_ID_PLX_MMS_NEW);

    AnsiiToUnicodeString((S8*)g_recv_data.new_numbers, (char*)g_recv_data.numbers);
    
    ShowCategory5Screen(STR_ID_PLX_MMS_NEW_TEXT, 0, STR_GLOBAL_OK, 0, STR_GLOBAL_BACK,
        0, 3,
		(U8*)g_recv_data.new_numbers, MAX_TO_LEN*2 ,guiBuffer);

	SetLeftSoftkeyFunction(SaveRecv, KEY_EVENT_UP);
	SetCategory5RightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
}

void ExitRecvEdit(void)
{
}

void SaveRecv(void)
{
    UnicodeToAnsii((S8*)g_recv_data.numbers, (S8*)g_recv_data.new_numbers);
    GoBackToHistory(SCR_ID_PLX_MMS_EDIT);
}
*/
/***************************************************************************
* Function	EnterSubEdit
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterSubEdit(void)
{
    U8* guiBuffer=NULL;
    
    EntryNewScreen(SCR_ID_PLX_MMS_NEW_RECEIVER, NULL, 
		           EnterSubEdit, NULL);
	guiBuffer = GetCurrGuiBuffer(SCR_ID_PLX_MMS_NEW_RECEIVER);
	SetParentHandler(MENU_ID_PLX_MMS_NEW);

    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,
		(U8*)g_sub_data.new_sub, g_sub_data.max_len/2, guiBuffer);

	SetLeftSoftkeyFunction(MmsEditSubOnOk, KEY_EVENT_UP);
//    SetKeyHandler(MmsEditSubOnOk, KEY_ENTER, KEY_EVENT_DOWN);
    SetKeyHandler(PlxMmsGoBackToIdle, KEY_END, KEY_EVENT_DOWN);
	SetCategory5RightSoftkeyFunction(SubGoBack, KEY_EVENT_UP);
}

void MmsEditSubOnOk(void)
{
    PLIB_RegisterIMEDoneNotify (SaveSub);
	PLIB_IMEOptionEntry ();
}

/***************************************************************************
* Function	ExitSubEdit
* Purpose	
* Params	
* Return	
* Remarks	
\**************************************************************************/
static void ExitSubEdit(void)
{
}

/***************************************************************************
* Function	SaveSub
* Purpose	
* Params	
* Return	

⌨️ 快捷键说明

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