目前的设计中,数字密码输入是直接显示*号,其他字符通过物理键盘输入是先显示字符,停留一段时间后显示*,虚拟键盘输入是直接显示*号。客户需求在所有情况下,都先显示字符,然后再显示*号。
[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);//这句是原来的
,请注销
#if defined(__MMI_IME_FTE_ENHANCE__)
ret_val = mmi_imc_pen_vk_back_to_lang();
#endif
return ret_val;
2.添加函数:
static void mmi_imc_pen_input_password_confirm(void)
{
*----------------------------------------------------------------*/
* Local Variables */
*----------------------------------------------------------------*/
*----------------------------------------------------------------*/
* Code Body */
*----------------------------------------------------------------*/
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);//这句是原来的
,请注销
#if defined(__MMI_IME_FTE_ENHANCE__)
ret_val = mmi_imc_pen_vk_back_to_lang();
#endif
return ret_val;
2.添加函数:
static void mmi_imc_pen_input_password_confirm(void)
{
*----------------------------------------------------------------*/
* Local Variables */
*----------------------------------------------------------------*/
*----------------------------------------------------------------*/
* Code Body */
*----------------------------------------------------------------*/
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();
}
效果:所有虚拟键盘下,密码输入都先显示字符,再显示*号。