mt2503如何让密码输入的字符停留一段时间后再转换为*号
时间:10-02
整理:3721RD
点击:
[DESCRIPTION]
目前的设计中,数字密码输入是直接显示*号,其他字符通过物理键盘输入是先显示字符,停留一段时间后显示*,虚拟键盘输入是直接显示*号。客
户需求在所有情况下,都先显示字符,然后再显示*号。
[SOLUTION]
对于数字密码输入先显示字符,后显示*号。请修改以下代码:
在函数MMI_imc_key_direct_input_handler中
语句if((mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ALPHANUMERIC_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ASCII_PASSWORD)后面添加条件:
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_NUMERIC_PASSWORD))
让数字输入密码的方式也采用计时到了才隐藏的方法。同理其它的密码输入方式如果有类似需求也可以做相同修改。
对于虚拟键盘也要输入密码后先显示字符,后显示*号。请作以下修改:
1.在函数mmi_imc_pen_vk_insert_char中,代码
if(mmi_imm_is_chinese_input_method(mmi_imm_get_curr_input_mode())&&
mmi_ime_word_code_to_symbol(char_code)!=0xFF)
~
~
else
{
//改动开始
if((mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ALPHANUMERIC_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ASCII_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_NUMERIC_PASSWORD))
{
password_mode=MMI_TRUE;
}
if(password_mode)
{
insert_msg=MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR;
}
if(insert_msg==MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR)
{
mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_START_SMART_ALPHABETIC,0,0);
}
if(mmi_imm_test_input(&char_code,1))
{
ret=mmi_imc_pen_send_imc_message(insert_msg,char_code,0);
}
if(ret&&insert_msg==MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR)
{
mmi_imc_set_state(MMI_IMC_STATE_NUMERIC_PASSWORD_MULTITAP);
mmi_imc_print_string_inserted_to_Editor((UI_string_type)&char_code,1);
}
else
{
mmi_imc_pen_send_imc_message((MMI_IMC_MESSAGE_STOP_SMART_ALPHABETIC,0,0);
}
if(password_mode)
{
mmi_imc_start_timer(500,mmi_imc_pen_input_password_confirm,mmi_imc_pen_input_password_confirm);
}
//添加结束
//mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_INSERT_CHAR,(U32)char_code,0);//这句是原来的,请注销
#ifdefined(__MMI_IME_FTE_ENHANCE__)
ret_val=mmi_imc_pen_vk_back_to_lang();
#endif
returnret_val;
2.添加函数:
staticvoidmmi_imc_pen_input_password_confirm(void)
{
*----------------------------------------------------------------*/
*LocalVariables*/
*----------------------------------------------------------------*/
*----------------------------------------------------------------*/
*CodeBody*/
*----------------------------------------------------------------*/
mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_RESET_MULTITAP_STATE,0,0);
mmi_imc_set_state(MMI_IMC_STATE_INITIAL);
mmi_imc_redraw_screen_by_state();
}
效果:所有虚拟键盘下,密码输入都先显示字符,再显示*号。
目前的设计中,数字密码输入是直接显示*号,其他字符通过物理键盘输入是先显示字符,停留一段时间后显示*,虚拟键盘输入是直接显示*号。客
户需求在所有情况下,都先显示字符,然后再显示*号。
[SOLUTION]
对于数字密码输入先显示字符,后显示*号。请修改以下代码:
在函数MMI_imc_key_direct_input_handler中
语句if((mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ALPHANUMERIC_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ASCII_PASSWORD)后面添加条件:
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_NUMERIC_PASSWORD))
让数字输入密码的方式也采用计时到了才隐藏的方法。同理其它的密码输入方式如果有类似需求也可以做相同修改。
对于虚拟键盘也要输入密码后先显示字符,后显示*号。请作以下修改:
1.在函数mmi_imc_pen_vk_insert_char中,代码
if(mmi_imm_is_chinese_input_method(mmi_imm_get_curr_input_mode())&&
mmi_ime_word_code_to_symbol(char_code)!=0xFF)
~
~
else
{
//改动开始
if((mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ALPHANUMERIC_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_ASCII_PASSWORD)
||(mmi_imm_get_curr_input_type()==IMM_INPUT_TYPE_NUMERIC_PASSWORD))
{
password_mode=MMI_TRUE;
}
if(password_mode)
{
insert_msg=MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR;
}
if(insert_msg==MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR)
{
mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_START_SMART_ALPHABETIC,0,0);
}
if(mmi_imm_test_input(&char_code,1))
{
ret=mmi_imc_pen_send_imc_message(insert_msg,char_code,0);
}
if(ret&&insert_msg==MMI_IMC_MESSAGE_INSERT_MULTITAP_CHAR)
{
mmi_imc_set_state(MMI_IMC_STATE_NUMERIC_PASSWORD_MULTITAP);
mmi_imc_print_string_inserted_to_Editor((UI_string_type)&char_code,1);
}
else
{
mmi_imc_pen_send_imc_message((MMI_IMC_MESSAGE_STOP_SMART_ALPHABETIC,0,0);
}
if(password_mode)
{
mmi_imc_start_timer(500,mmi_imc_pen_input_password_confirm,mmi_imc_pen_input_password_confirm);
}
//添加结束
//mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_INSERT_CHAR,(U32)char_code,0);//这句是原来的,请注销
#ifdefined(__MMI_IME_FTE_ENHANCE__)
ret_val=mmi_imc_pen_vk_back_to_lang();
#endif
returnret_val;
2.添加函数:
staticvoidmmi_imc_pen_input_password_confirm(void)
{
*----------------------------------------------------------------*/
*LocalVariables*/
*----------------------------------------------------------------*/
*----------------------------------------------------------------*/
*CodeBody*/
*----------------------------------------------------------------*/
mmi_imc_pen_send_imc_message(MMI_IMC_MESSAGE_RESET_MULTITAP_STATE,0,0);
mmi_imc_set_state(MMI_IMC_STATE_INITIAL);
mmi_imc_redraw_screen_by_state();
}
效果:所有虚拟键盘下,密码输入都先显示字符,再显示*号。
顶顶顶