微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > mt2503 在09A实现将电话薄中NAME分为两个FIELD:FIRST NAME 和 LAST NAME

mt2503 在09A实现将电话薄中NAME分为两个FIELD:FIRST NAME 和 LAST NAME

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]
09A中目前只有name一个field来添加姓名;为了支持更长的联系人姓名,增加一个namefield
[SOLUTION]
此修改对应的版本是09A;
从09B开始,使用PHB2.0架构,可以同时支持firstname和lastname,只需要开宏:__MMI_PHB_LNAME_FIELD__
在09A上具体实现如下:
1)先在UI添加一个edit(view)栏位,把原来的name域作为firstname来处理,编辑的buffer用pbName。
2)在所有对name的处理都相应的添加部分lastname的处理,编辑的buffer保存在pbLastName。
3)在添加view前,对name作特别的处理,把firstname和lastname合并成pbTotalName:
4)以添加号码合并firstname和lastname,并写到nvram为例来实现:
mmi_phb_op_add_entry_req()
{
……
myMsGPTr->list.index=0xFFFF;
myMsgPtr->list.record_index=0xFFFF;
//addby70811
mmi_ucs2ncat(pbTotalName,pbName,mmi_ucs2strlen(pbName));
if(g_phb_cntx.selected_storage==MMI_NVRAM)//changeby7081101.30
{
mmi_ucs2ncat(pbTotalName,"",mmi_ucs2strlen(""));
}
mmi_ucs2ncat(pbTotalName,pbLastName,mmi_ucs2strlen(pbLastName));
mmi_phb_op_set_entry_prepare_name_number(&myMsgPtr->list,pbTotalName,pbNumber);
//addby708110126
Message.oslSrcId=MOD_MMI;
Message.oslDestId=MOD_L4C;
……
}

5)在view的时候要对name进行拆分处理:
I.拆分算法实现的代码如下:
/*****************************************************************************
*FUNCTION
*mmi_phb_separate_firstname_lastname
*DESCRIPTION
*separatethefirstnameandthelastnamefROMthepbTotalName
*PARAMETERS
*void
*RETURNS
*void
*****************************************************************************/
voidmmi_phb_separate_firstname_lastname(U16store_index)
{
U32Lastname_lengh;
U16*pStr;
S32copy_len=0;
U16counter=0;
mEMSet(pbName,0,(MAX_PB_NAME_LENGTH/2+1)*ENCODING_LENGTH);
memset(pbLastName,0,(MAX_PB_NAME_LENGTH/2+1)*ENCODING_LENGTH);
memset(pbTotalName,0,(MAX_PB_NAME_LENGTH+1)*ENCODING_LENGTH);
mmi_ucs2cpy(pbTotalName,(PS8)PhoneBook[store_index].alpha_id.name);
if((pStr=mmi_ucs2chr(pbTotalName,''))==NULL)//nolastname
{
mmi_ucs2cpy(pbName,pbTotalName);
}
else
{
copy_len=PhoneBook[store_index].alpha_id.name_length*2-1;
while(copy_len>=0)
{
if(pbTotalName[copy_len]==0x00&&pbTotalName[copy_len-1]==0X20)
break;
else
copy_len-=2;
}
mmi_ucs2ncpy(pbName,pbTotalName,copy_len/2);
copy_len+=1;
while(copy_len<PhoneBook[store_index].alpha_id.name_length*2)
{
pbLastName[counter]=pbTotalName[copy_len];
pbLastName[counter+1]=pbTotalName[copy_len+1];
counter+=2;
copy_len+=2;
}
}
}
在viewentry的函数mmi_phb_entry_op_view_entry调用用拆分算法:
store_index=g_phb_name_index[g_phb_cntx.active_index];
if(store_index<MAX_PB_PHONE_ENTRIES)//innvram
{
mmi_phb_separate_firstname_lastname(store_index);
}
else
{
mmi_ucs2cpy(pbName,(PS8)PhoneBook[store_index].alpha_id.name);
}
mmi_phb_convert_get_ucs2_number(pbNumber,store_index);

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top