mt2503 在Caller group增加Add new members菜单
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
目前的设计:在查看Groupmembers界面只列出members,需要在此界面增加Addnewmember项,即将option中的addmembers提取到Groupmembers界面
[SOLUTION]
此方法适用于:09A版本
在显示Groupmemberslist的时候,添加addnewmember菜单,添加方法如下:
1)在MMI_phb_entry_caller_group_members_list()如下修改:
g_mmi_phb_list_cntx.highlight_store_index=g_phb_name_index[g_phb_cntx.new_highlight_entry];
g_phb_cntx.new_highlight_entry=0xffff;
//addcodehere。
//foraddnewmember
g_mmi_phb_caller_group_cntx.member_count++;
//addcodehere。end
}
if(g_mmi_phb_caller_group_cntx.member_count)
{
mmi_phb_entry_caller_group_with_members();
}
2)在mmi_phb_entry_caller_group_no_member()中:
定义一个变量:
U8*str_item_list[2];不清
EntryNewScreen(
SCR_ID_PHB_CALLERGROUP_MEMBER_LIST,
mmi_phb_exit_caller_group_member_list,
mmi_phb_entry_caller_group_members_list,
MMI_FULL_SCREEN);
//addcodehere。
str_item_list[0]=(U8*)GetString(STR_ID_PHB_ADD_NEW_CONTACT);
str_item_list[1]=(U8*)GetString(STR_GLOBAL_EMPTY_LIST);
//addcodehere。end
ShowCategory6Screen(
STR_ID_PHB_CALLERGROUP_MEMBER_LIST,
IMG_SCR_PBOOK_CAPTION,
STR_GLOBAL_ADD,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
//1,//changecodehere。
2,//changecodehere。
str_item_list,
NULL,
0,
gui_buffer);
3)在mmi_phb_entry_list_ext()中,定义一个变量:
U16caller_group_entrycount;
然后:
#ifdef__MMI_WGUI_CSK_ENABLE__
if(csk_ptr)
{
EnableCenterSoftkey(0,img_csk);
}
#endif
//addcodehere。foraddnewmember02.01
caller_group_entrycount=g_mmi_phb_list_cntx.entry_count+1;
//addcodehere。foraddnewmember02.01
ShowCategory184Screen(
str_title,
img_title,
str_lsk,
img_lsk,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
//g_mmi_phb_list_cntx.entry_count,//addcodehere。
caller_group_entrycount,
//addcodehere。
item_ptr,
hint_ptr,
g_phb_cntx.highlight_entry,
gui_buffer);
4)在mmi_phb_list_get_item_ext()修改如下的函数:
//addcodehere。01.30
//beginforaddnewmember
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
mmi_ucs2ncpy((S8*)str_buff,GetString(STR_ID_PHB_ADD_NEW_CONTACT),MAX_SUBMENU_CHARACTERS);
*img_buff_p=*img_buff_p=get_image(IMG_CALLER_GROUP);
returnTRUE;
}
//addcodehere。end
5)把mmi_phb_entry_caller_group_members_list_op()修改如下:
if(g_phb_cntx.highlight_entry==g_mmi_phb_caller_group_cntx.member_count-1)
{
//这里响应高亮addnewmember的函数,麻烦你实现
}
else
{
EntryNewScreen(SCR_ID_PHB_CALLER_GROUP_MEMBERS_LIST_OP,mmi_phb_exit_caller_group_members_list_op,mmi_phb
_entry_caller_group_members_list_op,NULL);
gui_buffer=GetCurrGuiBuffer(SCR_ID_PHB_CALLER_GROUP_MEMBERS_LIST_OP);
num_of_item=GetNumOfChild_Ext(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP);
GetSequenceStringIds_Ext(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP,str_item_list);
SetParentHandler(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP);
RegisterHighlightHandler(ExecuteCurrHiliteHandler);
6)在mmi_phb_list_get_hint_ext()中添加下面的代码;
//addcodehere。beginforaddnewmember
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
return0;
}
//endforaddnewmember。
……
在mmi_phb_entry_caller_group_members_list()中加上下面的代码:
if((g_phb_cntx.refresh_list==MMI_PHB_ENTRY_REFRESH)&&(g_phb_cntx.refresh_list_second==MMI_PHB_ENTRY_REFR
ESH))
{
mEMSet(g_mmi_phb_caller_group_cntx.bitmask,0,(MAX_PHB_CG_ENTRIES+7)/8);
g_mmi_phb_caller_group_cntx.member_count=
mmi_phb_caller_group_member_make_bit_mask(
g_mmi_phb_caller_group_cntx.bitmask,
g_mmi_phb_caller_group_cntx.group_id,
0xffff,
0xffff);
g_mmi_phb_list_cntx.highlight_store_index=g_phb_name_index[g_phb_cntx.new_highlight_entry];
g_phb_cntx.new_highlight_entry=0xffff;
//foraddnewmember
if(g_mmi_phb_caller_group_cntx.member_count>0)//02.02
{
g_mmi_phb_caller_group_cntx.member_count++;
}
//end
}
//addcodehere。
elseif(g_phb_cntx.refresh_list_second==MMI_PHB_ENTRY_REFRESH)
g_mmi_phb_caller_group_cntx.member_count++;
//addcodehere。end
……
7)addnewmember的highlight响应函数:
if(g_phb_cntx.highlight_entry==g_mmi_phb_caller_group_cntx.member_count-1)
{
//响应函数。mmi_phb_pre_entry_caller_group_members_list_op_add();
}
8)同时修改以下的函数:mmi_phb_entry_quick_search_mark_several_list()
中的:
ShowCategory202Screen(
str_title,
img_title,
str_lsk,
img_lsk,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
NULL,
entry_count,
//mmi_phb_list_get_item_ext,//addby70811
mmi_phb_list_get_item_ext_new,//addby708110203
//mmi_phb_list_get_hint_ext,
mmi_phb_list_get_hint_ext_new,
mmi_phb_mark_several_get_state,
mmi_phb_mark_several_set_state,
g_phb_cntx.highlight_entry,
IMG_ID_PHB_QUICK_SEARCH_FIND,
(U8*)g_mmi_phb_quick_search_cntx->qsearch_input,
MMI_PHB_QUICK_SEARCH_INPUT_LENGTH,
gui_buffer);
9)重写这两个函数:
mmi_phb_list_get_item_ext_new()和mmi_phb_list_get_hint_ext_new()
:
pBOOLmmi_phb_list_get_item_ext_new(S32item_index,UI_string_typestr_buff,PU8*img_buff_p,U8str_img_mask)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
U16store_index;
S32name_index;
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
name_index=mmi_phb_list_get_inner_index(item_index);
if(name_index>=PhoneBookEntryCount)
{
returnFALSE;
}
store_index=g_phb_name_index[mmi_phb_list_get_inner_index(item_index)];
if(mmi_ucs2strlen((S8*)PhoneBook[store_index].alpha_id.name))
{
mmi_ucs2ncpy((S8*)str_buff,(S8*)PhoneBook[store_index].alpha_id.name,MAX_SUBMENU_CHARACTERS);
}
else
{
mmi_ucs2ncpy((S8*)str_buff,GetString(STR_ID_PHB_UNNAMED),MAX_SUBMENU_CHARACTERS);
}
if(store_index>=MAX_PB_PHONE_ENTRIES)
{
*img_buff_p=get_image(IMG_STORAGE_SIM);
}
else
{
*img_buff_p=get_image(IMG_STORAGE_HANDSET);
}
#endif/*__MMI_DUAL_SIM_MASTER__*/
returnTRUE;
}
S32mmi_phb_list_get_hint_ext_new(S32item_index,UI_string_type*hint_array)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
U16store_index;
S8temp_number[(MAX_PB_NUMBER_LENGTH+1+1)*ENCODING_LENGTH];
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
//beginforaddnewmember7081102.01
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
return0;
}
//endforaddnewmember70811
store_index=g_phb_name_index[mmi_phb_list_get_inner_index(item_index)];
mmi_phb_convert_get_ucs2_number((S8*)temp_number,store_index);
if(mmi_ucs2strlen((S8*)temp_number))
{
mmi_ucs2ncpy((S8*)hint_array[0],(S8*)temp_number,MAX_SUBMENU_CHARACTERS);
}
else
{
return0;/*NoHintData*/
}
return1;/*Onehintdataonly,canbemorehints.*/
}
10)在mmi_phb_set_highlight_entry_for_alpha_list()修改
voidmmi_phb_set_highlight_entry_for_alpha_list(S32i)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
wgui_stop_multitap();
//addby7081102.03begin
if(i==g_mmi_phb_caller_group_cntx.member_count-1)
{
ChangeLeftSoftkey(STR_GLOBAL_OK,0);
ChangeRightSoftkey(STR_GLOBAL_BACK,0);
show_left_softkey();
show_right_softkey();
}
else
{
ChangeLeftSoftkey(STR_GLOBAL_OPTIONS,0);
ChangeRightSoftkey(STR_GLOBAL_BACK,0);
show_left_softkey();
show_right_softkey();
}
//addby7081102.03end
g_phb_cntx.highlight_entry=(U16)i;
}
然后,如果想添加member后回到memberlist,可这样修改如下的代码:
在mmi_phb_entry_quick_search_mark_several_list()中
if(entry_count)
{
//EntryNewScreen(scr_id,exit_ptr,entry_ptr,MMI_FULL_SCREEN);//changeby70811
EntryNewScreen(scr_id,exit_ptr,NULL,MMI_FULL_SCREEN);//changeby70811
//也就是把entrynewscreen的第三个参数写成NULL。
gui_buffer=GetCurrGuiBuffer(scr_id);
RegisterHighlightHandler(mmi_phb_mark_sevral_set_highlight_entry);
RegisterCat200SearchFunction(mmi_phb_quick_search_find_entry_ext);
目前的设计:在查看Groupmembers界面只列出members,需要在此界面增加Addnewmember项,即将option中的addmembers提取到Groupmembers界面
[SOLUTION]
此方法适用于:09A版本
在显示Groupmemberslist的时候,添加addnewmember菜单,添加方法如下:
1)在MMI_phb_entry_caller_group_members_list()如下修改:
g_mmi_phb_list_cntx.highlight_store_index=g_phb_name_index[g_phb_cntx.new_highlight_entry];
g_phb_cntx.new_highlight_entry=0xffff;
//addcodehere。
//foraddnewmember
g_mmi_phb_caller_group_cntx.member_count++;
//addcodehere。end
}
if(g_mmi_phb_caller_group_cntx.member_count)
{
mmi_phb_entry_caller_group_with_members();
}
2)在mmi_phb_entry_caller_group_no_member()中:
定义一个变量:
U8*str_item_list[2];不清
EntryNewScreen(
SCR_ID_PHB_CALLERGROUP_MEMBER_LIST,
mmi_phb_exit_caller_group_member_list,
mmi_phb_entry_caller_group_members_list,
MMI_FULL_SCREEN);
//addcodehere。
str_item_list[0]=(U8*)GetString(STR_ID_PHB_ADD_NEW_CONTACT);
str_item_list[1]=(U8*)GetString(STR_GLOBAL_EMPTY_LIST);
//addcodehere。end
ShowCategory6Screen(
STR_ID_PHB_CALLERGROUP_MEMBER_LIST,
IMG_SCR_PBOOK_CAPTION,
STR_GLOBAL_ADD,
IMG_GLOBAL_OK,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
//1,//changecodehere。
2,//changecodehere。
str_item_list,
NULL,
0,
gui_buffer);
3)在mmi_phb_entry_list_ext()中,定义一个变量:
U16caller_group_entrycount;
然后:
#ifdef__MMI_WGUI_CSK_ENABLE__
if(csk_ptr)
{
EnableCenterSoftkey(0,img_csk);
}
#endif
//addcodehere。foraddnewmember02.01
caller_group_entrycount=g_mmi_phb_list_cntx.entry_count+1;
//addcodehere。foraddnewmember02.01
ShowCategory184Screen(
str_title,
img_title,
str_lsk,
img_lsk,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
//g_mmi_phb_list_cntx.entry_count,//addcodehere。
caller_group_entrycount,
//addcodehere。
item_ptr,
hint_ptr,
g_phb_cntx.highlight_entry,
gui_buffer);
4)在mmi_phb_list_get_item_ext()修改如下的函数:
//addcodehere。01.30
//beginforaddnewmember
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
mmi_ucs2ncpy((S8*)str_buff,GetString(STR_ID_PHB_ADD_NEW_CONTACT),MAX_SUBMENU_CHARACTERS);
*img_buff_p=*img_buff_p=get_image(IMG_CALLER_GROUP);
returnTRUE;
}
//addcodehere。end
5)把mmi_phb_entry_caller_group_members_list_op()修改如下:
if(g_phb_cntx.highlight_entry==g_mmi_phb_caller_group_cntx.member_count-1)
{
//这里响应高亮addnewmember的函数,麻烦你实现
}
else
{
EntryNewScreen(SCR_ID_PHB_CALLER_GROUP_MEMBERS_LIST_OP,mmi_phb_exit_caller_group_members_list_op,mmi_phb
_entry_caller_group_members_list_op,NULL);
gui_buffer=GetCurrGuiBuffer(SCR_ID_PHB_CALLER_GROUP_MEMBERS_LIST_OP);
num_of_item=GetNumOfChild_Ext(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP);
GetSequenceStringIds_Ext(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP,str_item_list);
SetParentHandler(MENU_ID_PHB_CALLER_GROUPS_MEMBERS_LIST_OP);
RegisterHighlightHandler(ExecuteCurrHiliteHandler);
6)在mmi_phb_list_get_hint_ext()中添加下面的代码;
//addcodehere。beginforaddnewmember
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
return0;
}
//endforaddnewmember。
……
在mmi_phb_entry_caller_group_members_list()中加上下面的代码:
if((g_phb_cntx.refresh_list==MMI_PHB_ENTRY_REFRESH)&&(g_phb_cntx.refresh_list_second==MMI_PHB_ENTRY_REFR
ESH))
{
mEMSet(g_mmi_phb_caller_group_cntx.bitmask,0,(MAX_PHB_CG_ENTRIES+7)/8);
g_mmi_phb_caller_group_cntx.member_count=
mmi_phb_caller_group_member_make_bit_mask(
g_mmi_phb_caller_group_cntx.bitmask,
g_mmi_phb_caller_group_cntx.group_id,
0xffff,
0xffff);
g_mmi_phb_list_cntx.highlight_store_index=g_phb_name_index[g_phb_cntx.new_highlight_entry];
g_phb_cntx.new_highlight_entry=0xffff;
//foraddnewmember
if(g_mmi_phb_caller_group_cntx.member_count>0)//02.02
{
g_mmi_phb_caller_group_cntx.member_count++;
}
//end
}
//addcodehere。
elseif(g_phb_cntx.refresh_list_second==MMI_PHB_ENTRY_REFRESH)
g_mmi_phb_caller_group_cntx.member_count++;
//addcodehere。end
……
7)addnewmember的highlight响应函数:
if(g_phb_cntx.highlight_entry==g_mmi_phb_caller_group_cntx.member_count-1)
{
//响应函数。mmi_phb_pre_entry_caller_group_members_list_op_add();
}
8)同时修改以下的函数:mmi_phb_entry_quick_search_mark_several_list()
中的:
ShowCategory202Screen(
str_title,
img_title,
str_lsk,
img_lsk,
STR_GLOBAL_BACK,
IMG_GLOBAL_BACK,
NULL,
entry_count,
//mmi_phb_list_get_item_ext,//addby70811
mmi_phb_list_get_item_ext_new,//addby708110203
//mmi_phb_list_get_hint_ext,
mmi_phb_list_get_hint_ext_new,
mmi_phb_mark_several_get_state,
mmi_phb_mark_several_set_state,
g_phb_cntx.highlight_entry,
IMG_ID_PHB_QUICK_SEARCH_FIND,
(U8*)g_mmi_phb_quick_search_cntx->qsearch_input,
MMI_PHB_QUICK_SEARCH_INPUT_LENGTH,
gui_buffer);
9)重写这两个函数:
mmi_phb_list_get_item_ext_new()和mmi_phb_list_get_hint_ext_new()
:
pBOOLmmi_phb_list_get_item_ext_new(S32item_index,UI_string_typestr_buff,PU8*img_buff_p,U8str_img_mask)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
U16store_index;
S32name_index;
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
name_index=mmi_phb_list_get_inner_index(item_index);
if(name_index>=PhoneBookEntryCount)
{
returnFALSE;
}
store_index=g_phb_name_index[mmi_phb_list_get_inner_index(item_index)];
if(mmi_ucs2strlen((S8*)PhoneBook[store_index].alpha_id.name))
{
mmi_ucs2ncpy((S8*)str_buff,(S8*)PhoneBook[store_index].alpha_id.name,MAX_SUBMENU_CHARACTERS);
}
else
{
mmi_ucs2ncpy((S8*)str_buff,GetString(STR_ID_PHB_UNNAMED),MAX_SUBMENU_CHARACTERS);
}
if(store_index>=MAX_PB_PHONE_ENTRIES)
{
*img_buff_p=get_image(IMG_STORAGE_SIM);
}
else
{
*img_buff_p=get_image(IMG_STORAGE_HANDSET);
}
#endif/*__MMI_DUAL_SIM_MASTER__*/
returnTRUE;
}
S32mmi_phb_list_get_hint_ext_new(S32item_index,UI_string_type*hint_array)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
U16store_index;
S8temp_number[(MAX_PB_NUMBER_LENGTH+1+1)*ENCODING_LENGTH];
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
//beginforaddnewmember7081102.01
if(item_index==g_mmi_phb_caller_group_cntx.member_count-1)
{
return0;
}
//endforaddnewmember70811
store_index=g_phb_name_index[mmi_phb_list_get_inner_index(item_index)];
mmi_phb_convert_get_ucs2_number((S8*)temp_number,store_index);
if(mmi_ucs2strlen((S8*)temp_number))
{
mmi_ucs2ncpy((S8*)hint_array[0],(S8*)temp_number,MAX_SUBMENU_CHARACTERS);
}
else
{
return0;/*NoHintData*/
}
return1;/*Onehintdataonly,canbemorehints.*/
}
10)在mmi_phb_set_highlight_entry_for_alpha_list()修改
voidmmi_phb_set_highlight_entry_for_alpha_list(S32i)
{
/*----------------------------------------------------------------*/
/*LocalVariables*/
/*----------------------------------------------------------------*/
/*----------------------------------------------------------------*/
/*CodeBody*/
/*----------------------------------------------------------------*/
wgui_stop_multitap();
//addby7081102.03begin
if(i==g_mmi_phb_caller_group_cntx.member_count-1)
{
ChangeLeftSoftkey(STR_GLOBAL_OK,0);
ChangeRightSoftkey(STR_GLOBAL_BACK,0);
show_left_softkey();
show_right_softkey();
}
else
{
ChangeLeftSoftkey(STR_GLOBAL_OPTIONS,0);
ChangeRightSoftkey(STR_GLOBAL_BACK,0);
show_left_softkey();
show_right_softkey();
}
//addby7081102.03end
g_phb_cntx.highlight_entry=(U16)i;
}
然后,如果想添加member后回到memberlist,可这样修改如下的代码:
在mmi_phb_entry_quick_search_mark_several_list()中
if(entry_count)
{
//EntryNewScreen(scr_id,exit_ptr,entry_ptr,MMI_FULL_SCREEN);//changeby70811
EntryNewScreen(scr_id,exit_ptr,NULL,MMI_FULL_SCREEN);//changeby70811
//也就是把entrynewscreen的第三个参数写成NULL。
gui_buffer=GetCurrGuiBuffer(scr_id);
RegisterHighlightHandler(mmi_phb_mark_sevral_set_highlight_entry);
RegisterCat200SearchFunction(mmi_phb_quick_search_find_entry_ext);
