mt2503 隐藏single line的问题
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
隐藏singleline的问题
[SOLUTION]
隐藏和显示快速搜索框的详细步骤如下:
1、ShowCategory199Screen中
在调用wgui_inputs_sl_setup之前添加如下语句:
if(*buffer==0)
is_show_input_box=MMI_FALSE;
else
is_show_input_box=MMI_TRUE;
有两处调用了wgui_inputs_sl_setup(),都做如下修改:
if(is_show_input_box)
wgui_inputs_sl_setup(
input_box_x,
input_box_y,
input_box_width,
CAT199_INPUTBOX_H,
buffer,
buffer_max_length,
MMI_CATEGORY199_ID,
right_softkey,
right_softkey_icon,
IMM_INPUT_TYPE_QUICK_SEARCH,
(U8*)(history_buffer+size),
0);
else
wgui_inputs_sl_setup(
input_box_x,
input_box_y,
0,
0,
buffer,
buffer_max_length,
MMI_CATEGORY199_ID,
right_softkey,
right_softkey_icon,
IMM_INPUT_TYPE_QUICK_SEARCH,
(U8*)(history_buffer+size),
0);
另外,在之前list_height的计算修改为:
list_height=UI_device_height-MMI_HORIZONTAL_TAB_BAR_Y-tab_h-scrolLTExt_h-MMI_BUTTON_BAR_HEIGHT;
2、在文件wgui_inputs_singleline.c中添加如下语句,位置不定,但必须在mmi_input_box_msg_call_back_singleline()和之前#include"PhonebookCore.h"
externmmi_phb_list_cntx_struct*g_mmi_phb_list_p;
staticMMI_BOOLis_show_input_box=MMI_FALSE;
3、当有输入字符时显示快速搜索框
mmi_input_box_msg_call_back_singleline函数中
a、在switch之前添加语句:
if(!is_show_input_box)
resize_fixed_list(MMI_content_width,UI_device_height-MMI_HORIZONTAL_TAB_BAR_Y-MMI_HORIZONTAL_TAB_BAR_TAB_AREA_HEIGHT-
CAT202_SCROLL_HEIGHT-0-MMI_BUTTON_BAR_HEIGHT);
b、switch(msg_ptr->message_id)中的caseMMI_IMC_MESSAGE_INSERT_CHAR、MMI_IMC_MESSAGE_INSERT_STRING_NO_DRAW、
MMI_IMC_MESSAGE_REPLACE_HIGHLIGHT_STRING、MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR、MMI_IMC_MESSAGE_INSERT_MULTITAP_STRING下添加如下语
句
//以下是要添加的语句
if(!is_show_input_box)
{
wgui_inputs_sl_resize(MAIN_LCD_DEVICE_WIDTH-CAT199_MARGIN_WIDTH-CAT199_MARGIN_WIDTH,CAT199_INPUTBOX_H);
show_singleline_inputbox();
is_show_input_box=MMI_TRUE;
}//添加语句完毕
4、当搜索框中没有字符时隐藏搜索框
wgui_inputs_sl_handle_right_softkey_down函数中
在语句wgui_inputs_sl_delete_character();之前添加如下语句:
if(gui_single_line_input_box_get_text_length(&MMI_singleline_inputbox)-1==0)
{
wgui_inputs_sl_resize(0,0);
show_singleline_inputbox();
is_show_input_box=MMI_FALSE;
}
在mmi_input_box_msg_call_back_singleline函数中
caseMMI_IMC_MESSAGE_DELETE_CHAR
添加:
if(gui_single_line_input_box_get_text_length(&MMI_singleline_inputbox)-1==0)
{
wgui_inputs_sl_resize(0,0);
show_singleline_inputbox();
is_show_input_box=MMI_FALSE;
}
5、在函数wgui_cat199_redraw_controlled_area中,添加以下代码:(放在gdi_layer_lock_frame_buffer语句之后)
a.if(!is_show_input_box)
{
resize_fixed_list(MMI_content_width,UI_device_height-MMI_button_bar_height-MMI_SUBMENU_CONTENT_Y);
move_fixed_list(0,MMI_SUBMENU_CONTENT_Y);
}
b、添加is_show_input_box的判断
if(is_show_input_box)
{
/*drawblackframeofinputarea*/
#if!defined(__MMI_MAINLCD_128X128__)
gui_draw_rectangle(
CAT199_MARGIN_WIDTH-1,
input_box_y-1,
UI_device_width-CAT199_MARGIN_WIDTH,
input_box_y+CAT199_INPUTBOX_H,
ccblack);
#endif/*!defined(__MMI_MAINLCD_128X128__)*/
redraw_singleline_inputbox();
}
6、在函数mmi_imc_key_direct_input_handler中,在下面代码中添加一个语句,添加的语句已经在后面标注
caseIMM_INPUT_MODE_QUICK_SEARCH_SM_STROKE:
caseIMM_INPUT_MODE_QUICK_SEARCH_TR_STROKE:
caseIMM_INPUT_MODE_QUICK_SEARCH_HK_STROKE:
char_code=(UI_character_type)mmi_imc_key_stroke_get_code_by_key((U8)key_code);
if((!mmi_ime_word_is_wildcard(char_code))&&(char_code!=0))
{
ret=mmi_imc_key_send_message(insert_msg,(U32)char_code,0);
}
elseif(key_code==MMI_IMC_KEY_SYM_0)
{
ret=mmi_imc_key_send_message(insert_msg,0X20,0);
}
break;
default:
char_code=(UI_character_type)('0'+(key_code-MMI_IMC_KEY_SYM_0));
#ifdefined(__MMI_MULTITAP_KEY_0__)
if(key_code==MMI_IMC_KEY_SYM_0)
{
g_is_zero_inserted=mmi_imc_key_send_message(insert_msg,char_code,0);
ret=g_is_zero_inserted;
}
else
#endif
{
if(mmi_imm_test_input(&char_code,1))
{
ret=mmi_imc_key_send_message(insert_msg,char_code,0);
mmi_imc_redraw_screen_by_state();//添加语句完毕
}
}
break;
7、函数wgui_inputs_sl_handle_right_softkey_up中添加以下语句:
if(gui_single_line_input_box_get_text_length(&MMI_singleline_inputbox)>0)
is_show_input_box=MMI_TRUE;
else
is_show_input_box=MMI_FALSE;
8、wgui_cat199_redraw_controlled_area函数中
将语句show_dynaMIC_list();放置在下面两个语句之前即可消除屏幕上的小黑点
gdi_layer_unlock_frame_buffer();
gdi_layer_blt_previous(0,0,UI_device_width-1,UI_device_height-1);