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

📄 dcw_pb_ctrl.c

📁 重写的展迅电话本, 重写的展迅电话本, 重写的展迅电话本,
💻 C
📖 第 1 页 / 共 3 页
字号:
/*****************************************************************************
** File Name:      dcw_pb_ctrl.c                                             *
** Author:         *************                                             *
** Date:           2006-04-17                                                *
** Copyright:      2006 ************* All Rights                             *
** Description:    此文件用于处理PB的操作信息                                *
/*****************************************************************************
**                         Important Edit History                            *
** --------------------------------------------------------------------------*
** DATE                 NAME             DESCRIPTION                         *
** 2006-04-17           *************    Create                              *
******************************************************************************/

#ifndef _DCW_PB_CTRL_C_
#define _DCW_PB_CTRL_C_

#include "dcw_pb.h"
#include "MmiSet.h"
#include "guidropdownlist.h"

/* ***************************************************************************
 *  Function name : DCW_PB_createBrowseList
 *  Description   : 创建浏览List
 *  Param         : ctrlId : 控件ID
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_createBrowseList(MMI_COMMON_CTRL_ID_T ctrlId,BOOLEAN isFastSearch,uint16 startPos,uint16 endPos)
{
    uint16              i;
    uint16              size;
    uint16              pos;
    uint16              amount;
    GUI_LISTBOX_ITEM_T  addItem;
    T_PB_ADDR_MANAGER   *addrPtr;

    if(isFastSearch == TRUE)
    {
        addrPtr = &g_pb.operate.fastSearchInfo.addrManager;
    }
    else
    {
        addrPtr = &g_pb.operate.listInfo.addrManager;
    }

    if(addrPtr == PNULL)
    {
        return;
    }

    amount = MIN(addrPtr->amount,endPos - startPos);

    if(GUILISTBOX_SetMaxItem(ctrlId, amount))
    {
        for(i = startPos; i < (startPos + amount); i++)
        {
            SCI_MEMSET(&addItem, 0x00, sizeof (GUI_LISTBOX_ITEM_T));            
            
            addItem.softkey_id[LEFT_BUTTON]   = STXT_DETAIL;
            addItem.softkey_id[MIDDLE_BUTTON] = COMMON_TXT_NULL;
            addItem.softkey_id[RIGHT_BUTTON]  = STXT_RETURN;

            if(addrPtr->ptr[i].type == PHONEBOOK_SIM_STORAGE)
            {
                pos = addrPtr->ptr[i].pos;

                addItem.is_ucs2 = g_pb.sim.recordPtr[pos].outerName.ucs2;
                addItem.str_len = MIN(g_pb.sim.recordPtr[pos].outerName.len,LISTBOX_STRING_MAX_NUM);
                SCI_MEMCPY(addItem.str, g_pb.sim.recordPtr[pos].outerName.array, addItem.str_len);
                
                if(g_pb.operate.listInfo.listType == PB_LIST_TYPE_MULTIPLE_E)
                {
                    addItem.right_icon_id = IMAGE_PHONEBOOK_SIM;
                }
                else
                {
                    addItem.left_icon_id = IMAGE_PHONEBOOK_SIM;
                }

                addItem.is_invalid = FALSE;
            }
            else
            {
                pos = addrPtr->ptr[i].pos;

                addItem.is_ucs2 = g_pb.nv.recordPtr[pos].outerName.ucs2;
                addItem.str_len = MIN(g_pb.nv.recordPtr[pos].outerName.len,LISTBOX_STRING_MAX_NUM);
                SCI_MEMCPY(addItem.str, g_pb.nv.recordPtr[pos].outerName.array, addItem.str_len);

                if(g_pb.operate.listInfo.listType == PB_LIST_TYPE_MULTIPLE_E)
                {
                    if(g_pb.operate.operateType == PB_OPERATE_COPY_MANY_TO_SIM_E)
                    {
                        if(addrPtr->ptr[i].offset == 0)
                        {
                            addItem.right_icon_id = IMAGE_PHONEBOOK_SELF_NUMBER;
                        }
                        else if(addrPtr->ptr[i].offset == 1)
                        {
                            addItem.right_icon_id = IMAGE_PHONEBOOK_COMPANY_NUMBER;
                        }
                        else
                        {
                            addItem.right_icon_id = IMAGE_PHONEBOOK_HOME_NUMBER;
                        }
                    }
                    else
                {
                    addItem.right_icon_id = IMAGE_PHONEBOOK_PHONE;
                }
                }
                else
                {
                    addItem.left_icon_id = IMAGE_PHONEBOOK_PHONE;
                }

                addItem.is_invalid = FALSE;
            }
            GUILISTBOX_AppendItem(ctrlId, &addItem);
        }
    }   

    if(g_pb.operate.listInfo.listType == PB_LIST_TYPE_MULTIPLE_E)
    {        
        GUILISTBOX_SetMaxSelectedItem(ctrlId,g_pb.operate.listInfo.selectMaxNumber);        
    }
    else
    {
        g_pb.operate.listInfo.selectMaxNumber = 1;
    }

    if(g_pb.operate.listInfo.selectItemPtr != PNULL)
    {
        SCI_FREE(g_pb.operate.listInfo.selectItemPtr);
        g_pb.operate.listInfo.selectItemPtr = PNULL;
    }

    SCI_ASSERT(g_pb.operate.listInfo.selectItemPtr == PNULL);

    size = sizeof(uint16) * g_pb.operate.listInfo.selectMaxNumber;
    g_pb.operate.listInfo.selectItemPtr = SCI_ALLOC(size);
    SCI_ASSERT(g_pb.operate.listInfo.selectItemPtr != PNULL);
    SCI_MEMSET(g_pb.operate.listInfo.selectItemPtr, 0, size);
    g_pb.operate.listInfo.selectNumber = 0;
}
/* ***************************************************************************
 *  Function name : DCW_PB_createNumTypeList
 *  Description   : 创建电话号码类型的List
 *  Param         : ctrlId : 控件ID
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_createNumTypeList(MMI_COMMON_CTRL_ID_T ctrlId)
{
    int16               i;
    int16               index               ;
    GUI_LISTBOX_ITEM_T  addItem;
    MMI_STRING_T        defaultStr;
    T_PB_RECORD_ITEM_ADDR *pAddr;
    
    SCI_MEMSET(&addItem, 0x00, sizeof (GUI_LISTBOX_ITEM_T));

    addItem.softkey_id[LEFT_BUTTON]      = STXT_OK;
    addItem.softkey_id[MIDDLE_BUTTON]    = COMMON_TXT_NULL;
    addItem.softkey_id[RIGHT_BUTTON]     = STXT_RETURN;     

    for (i=0; i < DCW_PB_MAX_NV_PHONE_NUM; i++)
    {
        MMI_GetLabelTextByLang((TXT_PB_NUM_TYPE_PRIVATE + i), &defaultStr);

        addItem.is_ucs2 = defaultStr.is_ucs2;
        addItem.str_len = MIN(LISTBOX_STRING_MAX_NUM, defaultStr.length);
        SCI_MEMCPY(addItem.str, defaultStr.str_ptr, addItem.str_len);

        if(g_pb.operate.operateType == PB_OPERATE_COPY_ALL_TO_NV_E)
        {
            addItem.is_invalid = FALSE;
        }
        else if(g_pb.operate.operateType == PB_OPERATE_COPY_MANY_TO_NV_E)
        {
            addItem.is_invalid = FALSE;
        }
        else if(g_pb.operate.operateType == PB_OPERATE_ADD_IN_NV_E)
        {
            addItem.is_invalid = FALSE;
        }
        else
        {
            pAddr = DCW_PB_getRecordAddr(g_pb.operate.listInfo.selectItemPtr[0]);
            SCI_ASSERT(pAddr != PNULL);
            if(pAddr->type == PHONEBOOK_SIM_STORAGE)
            {           
                addItem.is_invalid = FALSE;
            }
            else
            {                
                index = pAddr->pos;

                if(g_pb.nv.recordPtr[index].num[i].len == 0)
                {
                    if(g_pb.operate.operateType == PB_OPERATE_ADD_NUM_TO_RECORD_E)
                    {
                        addItem.is_invalid = FALSE;
                    }
                    else
                    {
                        addItem.is_invalid = TRUE;
                    }
                }
                else
                {
                    if(g_pb.operate.operateType == PB_OPERATE_ADD_NUM_TO_RECORD_E)
                    {
                        addItem.is_invalid = TRUE;
                    }
                    else
                    {
                        addItem.is_invalid = FALSE;
                    }
                }
            }
        }

        GUILISTBOX_AppendItem(ctrlId, &addItem);    
    }
}
/* ***************************************************************************
 *  Function name : DCW_PB_setRecordtoListBox
 *  Description   : 把一条记录的内容放入List
 *  Param         : ctrlId : 控件ID
                    offset : 记录在显示列表中的位置
 *  Return        : None
 *  Author:       : *************
 *  Note          : None 
 *****************************************************************************/
void DCW_PB_setRecordtoListBox(MMI_COMMON_CTRL_ID_T ctrlId,uint16 offset)
{
    uint16  pos;
    T_PB_RECORD_ITEM_ADDR   *pAddr;

    pAddr = DCW_PB_getRecordAddr(offset);
    SCI_ASSERT(pAddr != PNULL);

    pos = pAddr->pos;
    
    if(pAddr->type == PHONEBOOK_SIM_STORAGE)
    {        
        DCW_PB_setSimRecordtoListBox(ctrlId,&g_pb.sim.recordPtr[pos]);
    }
    else
    {
        DCW_PB_setNvRecordtoListBox(ctrlId,&g_pb.nv.recordPtr[pos]);
    }
}
void DCW_PB_setSimRecordToPage(MMI_COMMON_WINDOW_ID_E win_id,T_PB_SIM_RECORD *recordPtr)
{
    T_PB_L_STRING  numStr;

    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_SIM_NAME_EDITBOX_CTRL_ID, SINGLE_ALIGN_CENTER);
    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_SIM_NUMBER_EDITBOX_CTRL_ID, SINGLE_ALIGN_CENTER);

    GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_SIM_NAME_EDITBOX_CTRL_ID,recordPtr->outerName.array,
                                        recordPtr->outerName.len,recordPtr->outerName.ucs2);
    
    numStr.len = MMI_GenDispNumber(DCW_PB_GetBcdNumberType(recordPtr->num.npi_ton), recordPtr->num.len,
                                   recordPtr->num.number,numStr.array,DCW_PB_L_STR_MAX_LEN );

    if(numStr.len > 0)
    {
        GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_SIM_NUMBER_EDITBOX_CTRL_ID,numStr.array,numStr.len,FALSE);
    }    
}
void DCW_PB_setNvRecordToPage(MMI_COMMON_WINDOW_ID_E win_id,T_PB_NV_RECORD *recordPtr)
{
    uint16  i;
    uint16  size;
    uint16  index;
    T_PB_L_STRING  numStr;
    MMI_STRING_T groupName;
    GUI_DROPDOWNLIST_ITEM_T *itemPtr = PNULL;
    

    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_NV_NAME_EDITBOX_CTRL_ID,     SINGLE_ALIGN_CENTER);
    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_NV_HOME_NUM_EDITBOX_CTRL_ID, SINGLE_ALIGN_CENTER);
    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_NV_WORK_NUM_EDITBOX_CTRL_ID, SINGLE_ALIGN_CENTER);
    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_NV_PERSON_NUM_EDITBOX_CTRL_ID,SINGLE_ALIGN_CENTER);
    GUIEDITBOX_SetEditBoxToSingle(DCW_PB_NV_MAIL_EDITBOX_CTRL_ID,      SINGLE_ALIGN_CENTER);

    GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_NV_NAME_EDITBOX_CTRL_ID,recordPtr->outerName.array,
                                        recordPtr->outerName.len,recordPtr->outerName.ucs2);
   
    numStr.len = MMI_GenDispNumber(DCW_PB_GetBcdNumberType(recordPtr->num[0].npi_ton), recordPtr->num[0].len,
                                   recordPtr->num[0].number,numStr.array,DCW_PB_L_STR_MAX_LEN );
    if(numStr.len > 0)
    {
        GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_NV_PERSON_NUM_EDITBOX_CTRL_ID,numStr.array,numStr.len,FALSE);
    }

    numStr.len = MMI_GenDispNumber(DCW_PB_GetBcdNumberType(recordPtr->num[1].npi_ton), recordPtr->num[1].len,
                                   recordPtr->num[1].number,numStr.array,DCW_PB_L_STR_MAX_LEN );
    if(numStr.len > 0)
    {
        GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_NV_WORK_NUM_EDITBOX_CTRL_ID,numStr.array,numStr.len,FALSE);
    }

    numStr.len = MMI_GenDispNumber(DCW_PB_GetBcdNumberType(recordPtr->num[2].npi_ton), recordPtr->num[2].len,
                                   recordPtr->num[2].number,numStr.array,DCW_PB_L_STR_MAX_LEN );
    if(numStr.len > 0)
    {
        GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_NV_HOME_NUM_EDITBOX_CTRL_ID,numStr.array,numStr.len,FALSE);
    }

    if(recordPtr->mail.len > 0)
    {
        GUIEDITBOX_SetTextEditBoxStringInfo(DCW_PB_NV_MAIL_EDITBOX_CTRL_ID,recordPtr->mail.array,
                                        recordPtr->mail.len,recordPtr->mail.ucs2);
    }

    /*初始化下拉列表*/
    
    size = g_pb.group.amount * sizeof(GUI_DROPDOWNLIST_ITEM_T);
    itemPtr = SCI_ALLOC(size);
    SCI_ASSERT(itemPtr != PNULL);
    SCI_MEMSET(itemPtr, 0x00, size);

    for(i = 0; i < g_pb.group.amount;i++)
    {
        index = g_pb.group.index[i];

        if(index < DCW_PB_MIN_GROUP_NUM)
        {
            MMI_GetLabelTextByLang((uint16)(TXT_PB_DEFAULT_GROUP_0 + index), &groupName);
            itemPtr[i].is_ucs2 = groupName.is_ucs2;
            itemPtr[i].str_len = MIN(DROPDOWNLIST_STRING_MAX_NUM,groupName.length);
            SCI_MEMCPY(itemPtr[i].str,groupName.str_ptr,itemPtr[i].str_len);         
        }
        else if(g_pb.group.groupName[g_pb.group.index[index]].len > 0)
        {
            itemPtr[i].str_len = (uint8)MIN(DROPDOWNLIST_STRING_MAX_NUM, g_pb.group.groupName[g_pb.group.index[index]].len);
            itemPtr[i].is_ucs2 = g_pb.group.groupName[g_pb.group.index[index]].ucs2;
            SCI_MEMCPY(itemPtr[i].str,g_pb.group.groupName[g_pb.group.index[index]].array,itemPtr[i].str_len);
        }
        else
        {   
            MMI_GetLabelTextByLang((uint16)TXT_PB_DEFAULT_GROUP_0, &groupName);
            itemPtr[i].is_ucs2 = groupName.is_ucs2;
            itemPtr[i].str_len = MIN(DROPDOWNLIST_STRING_MAX_NUM,groupName.length);
            SCI_MEMCPY(itemPtr[i].str,groupName.str_ptr,itemPtr[i].str_len); 
        }
    }

    GUIDROPDOWNLIST_LoadItemArray(DCW_PB_NV_GROUP_DROP_CTRL_ID, itemPtr, g_pb.group.amount);
    GUIDROPDOWNLIST_SetSelectedDefaultPara(DCW_PB_NV_GROUP_DROP_CTRL_ID, recordPtr->groupId);
    GUIDROPDOWNLIST_SetDisplayDirection(DCW_PB_NV_GROUP_DROP_CTRL_ID, TRUE);    

    SCI_FREE(itemPtr);
}
void DCW_PB_getSimRecordFromPage(T_PB_SIM_RECORD *recordPtr)
{
	uint16		            i;
	TEXTEDIT_STRING_INFO_T  textStrInfo;
	STRING_INFO_T		    numStrInfo;
    STRING_INFO_T           strInfo;
    MMI_PARTY_NUMBER_T      partyNum;
	BOOLEAN                  ret;

	GUIEDITBOX_GetTextEditBoxInfo(DCW_PB_SIM_NAME_EDITBOX_CTRL_ID,&textStrInfo);
	SCI_MEMCPY(recordPtr->outerName.array,textStrInfo.str_ptr,textStrInfo.str_len);
	recordPtr->outerName.len = textStrInfo.str_len;
	recordPtr->outerName.ucs2 = textStrInfo.is_ucs2;

    GUIEDITBOX_GetPhoneNumEditBoxInfo(DCW_PB_SIM_NUMBER_EDITBOX_CTRL_ID, &strInfo);
    ret = MMI_GenPartyNumber((uint8 *)strInfo.str_ptr, strInfo.str_len, &partyNum);
    
    if(ret == TRUE)
    {
        recordPtr->num.npi_ton = DCW_PB_GetBcdNumberNpiTon(partyNum.number_type);
        recordPtr->num.len     = (uint8)MIN(DCW_PB_BCD_NUMBER_MAX_LEN, partyNum.num_len);

        SCI_MEMCPY(recordPtr->num.number,partyNum.bcd_num,recordPtr->num.len);
    }
    else
    {
        recordPtr->num.len = 0;
        SCI_TRACE_LOW("DCW_PB_getSimRecordFromPage: MMI_GenPartyNumber false");
    }
}

⌨️ 快捷键说明

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