mmi培训资料--自定义模板

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

mtk平台mmi培训资料(中文)2008-06-0621:48本文详细说明了如何建设一个自定义列表窗体模板。原理部分请参见《MTK平台(1)——如何添加一个窗体模板》。最终实现的是一个字典输入界面。布局为:该模板不包含业务逻辑,仅提供页面显示和InputBox框输入事件后的ListBox的Redraw事件的注册,以及基本的输入法设置、清空后的返回函数。一、添加用户自定义列表模板的过程(一)在g_categories_controls_map[]中加入:,{MMI_CATEGORY_CUSTOM_LIST,(U8*)custom_define_list,(s16*)coordinate_custom_list,NULL}constU8custom_define_list[]={5,DM_BASE_LAYER_START,DM_SCR_BG,DM_BASE_CONTROL_SET1,DM_SINGLELINE_INPUTBOX1,DM_LIST1};constS16coordinate_custom_list[]={DM_FULL_SCREEN_COORDINATE_FLAG,DM_CUSTOM_DEFINE_INPUTBOX,//需要定义DM_CUSTOM_DEFINE_LIST//需要定义};(二)在dm_get_coordinates()函数中加入://设定列表位置和大小(不要忘记全局变量MMI_custom_Listbox_x等的定义)elseif(*UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_LIST){dm_coordinate_info-s16X=MMI_custom_Listbox_x;dm_coordinate_info-s16Y=MMI_custom_Listbox_y;dm_coordinate_info-s16Width=MMI_custom_Listbox_width;dm_coordinate_info-s16Height=MMI_custom_Listbox_height;dm_coordinate_info-Flags=DM_NO_FLAGS;UICtrlAccessPtr_p++;}//设定输入框位置和大小elseif(*UICtrlAccessPtr_p==DM_CUSTOM_DEFINE_INPUTBOX){dm_coordinate_info-s16X=MMI_custom_inputbox_x;dm_coordinate_info-s16Y=MMI_custom_inputbox_y;dm_coordinate_info-s16Width=MMI_custom_inputbox_width;dm_coordinate_info-s16Height=MMI_custom_inputbox_height;dm_coordinate_info-Flags=DM_SINGLE_LINE_INPUTBOX_SPECIFIC_HEIGHT;UICtrlAccessPtr_p++;}(三)在Wgui_category.c中定义模板显示函数voidShowCategoryCustomListScreen(U8*title,U16title_icon,U16left_softkey,U16left_softkey_icon,U16right_softkey,U16right_softkey_icon,S32number_of_items,U8**list_of_items,U16*list_of_icons,S32flags,S32highlighted_item,U8*history_buffer){/*----------------------------------------------------------------*//*LocalVariables*//*----------------------------------------------------------------*/dm_data_structdm_data;S32i;U8h_flag;/*----------------------------------------------------------------*//*CodeBody*//*----------------------------------------------------------------*/gdi_layer_lock_frame_buffer();SetupCategoryKeyHandlers();MMI_title_string=(UI_string_type)title;MMI_title_icon=(PU8)get_image(title_icon);change_left_softkey(left_softkey,left_softkey_icon);change_right_softkey(right_softkey,right_softkey_icon);//CreateListcreate_fixed_icontext_menuitems();associate_fixed_icontext_list();ShowListCategoryScreen((UI_string_type)title,get_image(title_icon),get_string(left_softkey),get_image(left_softkey_icon),get_string(right_softkey),get_image(right_softkey_icon),number_of_items);for(i=0;inumber_of_items;i++){add_fixed_icontext_item((UI_string_type)list_of_items[i],wgui_get_list_menu_icon(i,list_of_icons[i]));}h_flag=set_list_menu_category_history(MMI_CATEGORY_CUSTOM_LIST,history_buffer);if(h_flag){fixed_list_goto_item_no_redraw(MMI_fixed_list_menu.highlighted_item);}else{fixed_list_goto_item_no_redraw(highlighted_item);}//CreateInputboxmemset(custom_single_input_buffer,0,100);pfnUnicodeStrcpy(custom_single_input_buffer,LCustomCategory);wgui_setup_singleline_inputbox(0,0,240,320,custom_single_input_buffer,pfnUnicodeStrlen(custom_single_input_buffer),MMI_CATEGORY_CUSTOM_LIST,get_string(right_softkey),get_image(right_softkey_icon),INPUT_TYPE_ALPHANUMERIC_LOWERCASE|INPUT_TYPE_USE_ONLY_ENGLISH_MODES,history_buffer,0);register_hide_multitap(wgui_hide_multitap);gdi_layer_unlock_frame_buffer();ExitCategoryFunction=ExitCategoryCustomListScreen;dm_setup_category_functions(dm_redraw_category_screen,dm_get_category_history,dm_get_category_history_size);dm_data.s32ScrId=(S32)GetActiveScreenId();dm_data.s32CatId=MMI_CATEGORY_CUSTOM_LIST;//不要忘记该常量MMI_CATEGORY_CUSTOM_LIST的定义dm_data.s32flags|=DM_CLEAR_SCREEN_BACKGROUND;//dm_data.s32flags|=DM_SHOW_VKPAD;dm_register_vkpad_callback(CustomList_virtual_keypad_callback);dm_setup_data(&dm_data);dm_redraw_category_screen();}/*endofShowCategory353Screen*/voidCustomList_virtual_keypad_callback(void){#ifdefined(__MMI_TOUCH_SCREEN__)mmi_pen_editor_clear_and_show_virtual_keyboard_area();#endifgui_show_transparent_image(0,200,GetImage(IMG_H_SELECT_LEFT),0);}voidExitCategoryCustomListScreen(){wgui_close_singleline_inputbox();}(四)在singleline_inputbox_multitap_input()函数中添加用户处理key_0~key_9的按键事件的函数:void(*singleline_inputbox_custom_input_callback)(void)=UI_dummy_function;voidsingleline_inputbox_multitap_input(UI_character_typec){/*----------------------------------------------------------------*//*LocalVariables*//*----------------------------------------------------------------*//*----------------------------------------------------------------*//*CodeBody*//*----------------------------------------------------------------*/if(MMI_singleline_inputbox.flags&UI_SINGLE_LINE_INPUT_BOX_PLUS_CHARACTER_HANDLING){if((MMI_singleline_inputbox.text[0]=='+')&&(MMI_singleline_inputbox.current_text_p==MMI_singleline_inputbox.text)&&(MMI_singleline_inputbox.text_length=(MMI_singleline_inputbox.available_length-ENCODING_LENGTH))){return;}}gui_single_line_input_box_insert_multitap_character(&MMI_singleline_inputbox,c);redraw_singleline_inputbox();singleline_inputbox_input_callback();singleline_inputbox_custom_in

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功