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

📄 plxmms_box.c

📁 mtk wap和mms代码。。适应mtk 25。26平台
💻 C
📖 第 1 页 / 共 5 页
字号:
                            (S8*)GetString(MMS_BOX_STR_NOSUB));
                    }
                    else
                    {
                        if(pfnUnicodeStrlen((S8*)wSub) > MAX_SUB_LEN)
                            wSub[MAX_SUB_LEN] = 0x0000;
                        pfnUnicodeStrcpy((S8*)p->sub, (S8*)wSub);
                    }
                    if(wSub)
                    {
                        MMS_Free((void*)wSub);
                        wSub = NULL;
                    }

                    if(sub_charset && temp)
                    {
                        *sub_charset = temp;
                        temp = 0;
                    }
                }
                else //no subject
                {
                    pfnUnicodeStrcpy((S8*)p->sub, (S8*)GetString(MMS_BOX_STR_NOSUB));
                }
            }

            p->id = pInfo[i].MsgID;      //id
            p->status = pInfo[i].status; //status
        
#ifdef MMS_DEBUG
    PlxTrace("get list, p->status = %d\r\n", p->status);
#endif
            switch(p->status)
            {
            case MMT_UNRECEIVE: //fail
                p->icon = IMG_ID_PLX_MMS_RECVFAIL;
                break;
            case MMT_UNSEND:
                p->icon = IMG_ID_PLX_MMS_SENDFAIL;
                break;
        //    case MMT_RECEIVEDELAY:
        //        break;
            case MMT_RECEIVING: //doing
                p->icon = IMG_ID_PLX_MMS_SENDING;
                break;
            case MMT_SENDING:
                p->icon = IMG_ID_PLX_MMS_SENDING;
                break;
            case MMT_AUTORECEIVING:
                p->icon = IMG_ID_PLX_MMS_SENDING;
                break;
            case MMT_READED: //ok
                p->icon = IMG_ID_PLX_MMS_READ;
                break;
            case MMT_DRAFT:
                p->icon = IMG_ID_PLX_MMS_DRAFT;
                break;
            case MMT_SENT:
                p->icon = IMG_ID_PLX_MMS_SENDOK;
                break;
            case MMT_DELIVERYREPORT:
                p->icon = IMG_ID_PLX_MMS_SENDREPORT;
                break;
        //    case MMT_TEMPLATE:
        //        break;
            case MMT_UNREAD:
                p->icon = IMG_ID_PLX_MMS_UNREAD;
                break;
            case MMT_UNREADDELIVERYREPORT:
                p->icon = IMG_ID_PLX_MMS_UNREADSENDREPORT;
                break;
            default:
                p->icon = 0;
            }
            if(!AddListItem(p, FALSE)) //FALSE, insert new message at bottom of list
                goto get_list_end; //goto get_list_err; //add failed only when list is full
			index++;                                    //but we can show list
		}	
	}

get_list_end:
//    g_box_data.info_count = index-1;
//    if(g_box_data.info_head)
    if(g_box_data.info_count > 0)
    {
        g_box_data.cur_info_index = 0;
        g_box_data.cur_info_item = g_box_data.info_table[0];//g_box_data.info_head;
    }
    return TRUE;

get_list_err:
    ClearList(); //get list failed, clear list and return last screen
    return FALSE;
}

/***************************************************************************
* Function	MmsBoxListHiliteHandler
* Purpose	Get current selected item
* Params	
* Return	
* Remarks	
\**************************************************************************/
void MmsBoxListHiliteHandler(S32 index)
{
    g_box_data.cur_info_index = index;
    g_box_data.cur_info_item  = GetListItem(index);
}

/***************************************************************************
* Function	MmsBoxListGetItemHint
* Purpose	Called by ShowCategory184Screen, get hint text
* Params	
* Return	
* Remarks	Copy phone number,email or name to hint_array
\**************************************************************************/
S32 MmsBoxListGetItemHint(S32 item_index, UI_string_type *hint_array)
{
    S8 name[MAX_PB_NAME_LEN*2];

#ifdef MMS_DEBUG
//    PlxTrace("MmsBoxListGetItemHint, index = %d\r\n", item_index);
#endif
    //get current message node
    if(!g_box_data.cur_info_item)
        g_box_data.cur_info_item = GetListItem(item_index);

    if(!g_box_data.cur_info_item ||
       (g_box_data.cur_info_item->num[0] == 0 &&
        g_box_data.cur_info_item->num[1] == 0)) //no number
    {
#ifdef MMS_DEBUG
//    PlxTrace("no number\r\n");
#endif
        if(g_box_data.folder == MMSE_FOLDER_DRAFT) //in draft, set "No Number"
            pfnUnicodeStrcpy((S8*)*hint_array, (S8*)GetString(MMS_BOX_STR_NONUM));
        else //in other boxes, no hint shown
        {
            pfnUnicodeStrcpy((S8*)*hint_array, (S8*)L"");//GetString(STR_ID_PLX_MMS_BOX_INBOXNONUM));
            //hint_array = NULL;
            return 0;
        }
    }
    else //has number
    {
#ifdef MMS_DEBUG
//    PlxTrace("has number\r\n");
#endif
        if(g_box_data.cur_info_item->bEMail) //email, find name
        {
#ifdef MMS_RECVLIST_NOMAILNAME
            name[0] = name[1] = 0;
#else
            PLIB_GetPhbookName((WCHAR*)name, MAX_PB_NAME_LEN*2, 
                PFIELD_EMAIL, (WCHAR*)g_box_data.cur_info_item->num);
#endif
        }
        else //number, find name
        {
            PLIB_GetPhbookName((WCHAR*)name, MAX_PB_NAME_LEN*2, 
                PFIELD_NUMBER, (WCHAR*)g_box_data.cur_info_item->num);
        }

        if(name[0] == 0 &&
           name[1] == 0) //no name found, show number directly
        {
            pfnUnicodeStrcpy((S8*)*hint_array, (S8*)g_box_data.cur_info_item->num);
        }
        else //show name
        {
            pfnUnicodeStrcpy((S8*)*hint_array, (S8*)name);
        }
        
    }
    return 1;
}

/***************************************************************************
* Function	MmsBoxListGetItemText
* Purpose	Called by ShowCategory184Screen to get list item text 
* Params	
* Return	
* Remarks	Show subject for message or "Delivery Report" for delivery report
\**************************************************************************/
pBOOL MmsBoxListGetItemText(S32 item_index, UI_string_type str_buff, 
                         UI_image_type* img_buff_p, U8 str_img_mask)
{
    MmsBoxItem* p;

#ifdef MMS_DEBUG
//    char temp[40];
//    MMS_Memset((void*)temp, 0, 40);
#endif
#ifdef MMS_DEBUG
//    PlxTrace("MmsBoxListGetItemText, index =%d\r\n", item_index);
#endif
//    U8* string_show = NULL;
/*
    if(!g_box_data.cur_info_item)
    {
        g_box_data.cur_info_item = GetListItem(item_index);
    }
*/
    p = GetListItem(item_index);

    //text
    if(!p || (p->sub[0] == 0 && p->sub[1] == 0)) //no subject
    {
#ifdef MMS_DEBUG
//    PlxTrace("no sub\r\n");
#endif
        pfnUnicodeStrcpy((S8*)str_buff, (S8*)GetString(MMS_BOX_STR_NOSUB));
    }
    else //has subject
    {
        pfnUnicodeStrcpy((S8*)str_buff, (S8*)p->sub);
#ifdef MMS_DEBUG
//    UnicodeToAnsii((S8*)temp, (S8*)p->sub);
//    PlxTrace("index = %d, sub = %s\r\n", item_index, temp);
#endif
    }

    //icon
    if(p)
    {
        if(p->icon)
            *img_buff_p = (UI_image_type)GetImage(p->icon); //(IMG_ID_PLX_MMS_SENDOK);
        else
            *img_buff_p = NULL;
    }
    else
    {
        *img_buff_p = NULL;
    }

    return TRUE;
}

/////////////////////////////////////////////////////////////
//for box menu
/***************************************************************************
* Function	EnterMmsBoxListMenu
* Purpose	Show menu
* Params	
* Return	
* Remarks	
\**************************************************************************/
void EnterMmsBoxListMenu(void) //popup menu
{
    MmsBoxItem* item;
//    PMMSEMSGINFO info = NULL;

    if(!g_box_data.hMenu)
        return;

    //get current message node
    if(!g_box_data.cur_info_item)
    {
        g_box_data.cur_info_item = GetListItem(g_box_data.cur_info_index);
        if(!g_box_data.cur_info_item)
            return;
    }

    item =  g_box_data.cur_info_item;
    
    if(item->status == MMT_DELIVERYREPORT ||
       item->status == MMT_UNREADDELIVERYREPORT) //delviery report
    {
        if(g_box_data.hReportMenu)
        {
            PlxSetDMenuDispInfo(STR_GLOBAL_OPTIONS, IMG_ID_PLX_MMS, 
                STR_GLOBAL_OK, IMG_GLOBAL_OK, STR_GLOBAL_BACK, IMG_GLOBAL_BACK);
            PlxShowDMenu(g_box_data.hReportMenu, SCR_ID_PLX_MMS_BOX_MENU,
                STR_ID_PLX_MMS_MENU, MmsBoxMenuCallback, EmptyReportMenuEntry);
            //SetRightSoftkeyFunction(GoBackHistory, KEY_EVENT_UP);
        }
        return;
    }

    //set menu item
    //view MMS_BOX_MENU_VIEW
    if(g_box_data.folder != MMSE_FOLDER_DRAFT) //draft view is always enabled
    {
        switch((int)g_box_data.folder)
        {
        case 1: //inbox
            if(item->status == MMT_UNRECEIVE ||
               item->status == MMT_RECEIVING ||
               item->status ==  MMT_AUTORECEIVING) //receving or receive failed, can't view
            {
                PlxModifyDMenuItem(g_box_data.hMenu, 
                    MMS_BOX_MENU_VIEW, MF_BYCOMMAND | MF_DISABLED,
                    MMS_BOX_MENU_VIEW, (const char *)GetString(MMS_BOX_STR_VIEW), 
                    IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L1);//
            }
            else
            {
                PlxModifyDMenuItem(g_box_data.hMenu, 
                    MMS_BOX_MENU_VIEW, MF_BYCOMMAND | MF_ENABLED,
                    MMS_BOX_MENU_VIEW, (const char *)GetString(MMS_BOX_STR_VIEW), 
                    IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L1);//
            }
            break;
        case 2: //outbox
            if(item->status == MMT_SENDING) //sending, can't view
            {
                PlxModifyDMenuItem(g_box_data.hMenu, 
                    MMS_BOX_MENU_VIEW, MF_BYCOMMAND | MF_DISABLED,
                    MMS_BOX_MENU_VIEW, (const char *)GetString(MMS_BOX_STR_VIEW), 
                    IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L1);//
            }
            else
            {
                PlxModifyDMenuItem(g_box_data.hMenu, 
                    MMS_BOX_MENU_VIEW, MF_BYCOMMAND | MF_ENABLED,
                    MMS_BOX_MENU_VIEW, (const char *)GetString(MMS_BOX_STR_VIEW), 
                    IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L1);//
            }
            break;
        case 4: //sent, always enabled
            break;
        }
    }
/*
    //obj MMS_BOX_MENU_OBJ
    switch((int)g_box_data.folder)
    {
    case 1: //inbox
        if(item->status == MMT_UNRECEIVE ||
           item->status == MMT_RECEIVING ||
           item->status ==  MMT_AUTORECEIVING)
        {
            PlxModifyDMenuItem(g_box_data.hMenu, 
                MMS_BOX_MENU_OBJ, MF_BYCOMMAND | MF_DISABLED,
                MMS_BOX_MENU_OBJ, (const char *)MMS_BOX_STR_OBJ, 0);
        }
        else
        {
            PlxModifyDMenuItem(g_box_data.hMenu, 
                MMS_BOX_MENU_OBJ, MF_BYCOMMAND | MF_ENABLED,
                MMS_BOX_MENU_OBJ, (const char *)MMS_BOX_STR_OBJ, 0);
        }
        break;
    case 2: //outbox
        if(item->status == MMT_SENDING)
        {
            PlxModifyDMenuItem(g_box_data.hMenu, 
                MMS_BOX_MENU_OBJ, MF_BYCOMMAND | MF_DISABLED,
                MMS_BOX_MENU_OBJ, (const char *)MMS_BOX_STR_OBJ, 0);
        }
        else
        {
            PlxModifyDMenuItem(g_box_data.hMenu, 
                MMS_BOX_MENU_OBJ, MF_BYCOMMAND | MF_ENABLED,
                MMS_BOX_MENU_OBJ, (const char *)MMS_BOX_STR_OBJ, 0);
        }
        break;
    case 4: //sent
        break;
    }
*/

    //info MMS_BOX_MENU_INFO, is always enabled
    PlxModifyDMenuItem(g_box_data.hMenu, 
            MMS_BOX_MENU_INFO, MF_BYCOMMAND | MF_ENABLED,
            MMS_BOX_MENU_INFO, (const char *)GetString(MMS_BOX_STR_INFO), 
            IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L2);//

    //use num MMS_BOX_MENU_NUM
    if(g_box_data.folder == MMSE_FOLDER_INBOX)
    {
        PlxModifyDMenuItem(g_box_data.hMenu, 
                MMS_BOX_MENU_NUM, MF_BYCOMMAND | MF_ENABLED,
                MMS_BOX_MENU_NUM, (const char *)GetString(MMS_BOX_STR_NUM), 
                IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L3);//
    }

    //mms reply MMS_BOX_MENU_MMSREPLY
    if(g_box_data.folder == MMSE_FOLDER_INBOX)
    {
        if(item->status == MMT_UNRECEIVE ||
           item->status == MMT_RECEIVING ||
           item->status ==  MMT_AUTORECEIVING) //receiving or receive failed, can't reply
        {
            PlxModifyDMenuItem(g_box_data.hMmsMenu, 
                MMS_BOX_MENU_MMSREPSENDER, MF_BYCOMMAND | MF_DISABLED,
                MMS_BOX_MENU_MMSREPSENDER, (const char *)GetString(MMS_BOX_STR_SENDER), 
                IMG_ID_PLX_PUBLIC_GLOBAL_NUMBERICON);//IMG_GLOBAL_L1);//

⌨️ 快捷键说明

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