📄 wgui_ems_categories.c
字号:
MMI_EMS_inputbox.flags&=~UI_EMS_INPUT_BOX_WORD_HIGHLIGHT;
#endif
EMS_inputbox_previous();
break;
case 38:
#if(ENABLE_EMS_TEST_WORD_HIGHLIGHT)
pixtel_UI_EMS_input_box_highlight_cursor_start(&MMI_EMS_inputbox);
show_EMS_inputbox();
#else
EMS_inputbox_previous_line();
#endif
break;
case 39:
#if(ENABLE_EMS_TEST_WORD_HIGHLIGHT)
MMI_EMS_inputbox.flags&=~UI_EMS_INPUT_BOX_WORD_HIGHLIGHT;
#endif
EMS_inputbox_next();
break;
case 40:
#if(ENABLE_EMS_TEST_WORD_HIGHLIGHT)
pixtel_UI_EMS_input_box_highlight_cursor_end(&MMI_EMS_inputbox);
show_EMS_inputbox();
#else
EMS_inputbox_next_line();
#endif
break;
case 36: //home
break;
case 35: //end
break;
case 33: //page up
break;
case 34: //page down
break;
case 45: EMS_inputbox_toggle_insert_mode();
break;
case 46: EMS_inputbox_delete();
break;
}
}
#else
UI_UNUSED_PARAMETER(vkey_code);
UI_UNUSED_PARAMETER(key_state);
#endif
}
void EMS_inputbox_viewer_key_handler(S32 vkey_code,S32 key_state)
{
#if(MMI_BUILD_TYPE==BUILD_TYPE_X86WIN32)
if(key_state)
{ switch(vkey_code)
{ case 37:
#ifdef __MMI_MESSAGES_EMS__
EMS_inputbox_previous_object();
#else
EMS_inputbox_previous();
#endif
break;
case 38: EMS_inputbox_previous_line();
break;
case 39:
#ifdef __MMI_MESSAGES_EMS__
EMS_inputbox_next_object();
#else
EMS_inputbox_next();
#endif
break;
case 40: EMS_inputbox_next_line();
break;
case 36: //home
break;
case 35: //end
break;
case 33: //page up
break;
case 34: //page down
break;
case 45: //insert
break;
case 46: //delete
break;
}
}
#else
UI_UNUSED_PARAMETER(vkey_code);
UI_UNUSED_PARAMETER(key_state);
#endif
}
void EMS_inputbox_multitap_input(UI_character_type c)
{ pixtel_UI_EMS_input_box_insert_multitap_character(&MMI_EMS_inputbox,c);
redraw_EMS_inputbox();
EMS_inputbox_input_callback();
}
void EMS_inputbox_multitap_input_complete(void)
{ pixtel_UI_EMS_input_box_confirm_multitap_character(&MMI_EMS_inputbox);
redraw_EMS_inputbox();
}
void EMS_inputbox_numeric_keyboard_input_handler(S32 keyc)
{ if(keyc>='0' && keyc<='9') EMS_inputbox_direct_input((byte)keyc);
else if(keyc==0x08) EMS_inputbox_backspace();
else if(keyc==0x1b) EMS_inputbox_delete_all();
}
void EMS_inputbox_handle_key_down(MMI_key_code_type k)
{ EMS_inputbox_direct_input((UI_character_type)('0'+k));
}
void register_EMS_inputbox_keys(void)
{ SetKeyHandler(EMS_inputbox_previous,KEY_LEFT_ARROW,KEY_EVENT_DOWN);
SetKeyHandler(EMS_inputbox_next,KEY_RIGHT_ARROW,KEY_EVENT_DOWN);
SetKeyHandler(EMS_inputbox_previous_line,KEY_UP_ARROW,KEY_EVENT_DOWN);
SetKeyHandler(EMS_inputbox_next_line,KEY_DOWN_ARROW,KEY_EVENT_DOWN);
//SetKeyHandler(EMS_inputbox_backspace,KEY_CLEAR,KEY_EVENT_DOWN);
register_keyboard_key_handler(EMS_inputbox_key_handler);
}
void wgui_EMS_inputbox_handle_symbol_picker_star_key(void)
{ disable_active_multitap();
EntrySymbolPickerScreen();
}
//PMT dara added for Multitap thai
#ifdef __MMI_MULTITAP_THAI__
void wgui_EMS_inputbox_handle_symbol_picker_star_key_bymultitapthai(void)
{
if(Get_inputbox_update_states() == 1)
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
wgui_EMS_text_format=MMI_EMS_inputbox.text_format;
}
wgui_EMS_inputbox_handle_symbol_picker_star_key();
}
#endif
//MTK Elvis modify for Thai
#if !defined(__MMI_MULTITAP_FOR_STAR_AND_POUND__)
#else
extern FuncPtr currKeyFuncPtrs[MAX_KEYS][MAX_KEY_TYPE];
#endif
//PMT dara added for Multitap thai
#ifdef __MMI_MULTITAP_THAI__
//return 0 not accept input
//return 1 accept input
//return 2 normal
//return 3 means reset the MMI_active_multitap. not use
byte EMS_inputbox_check_multitap_thai_input(UI_character_type inputchar,byte *updatef)
{
EMSPosition p=MMI_EMS_inputbox.data->CurrentPosition;
EMSObject* current_object;
UI_character_type c;
byte r;
UI_character_type cc;
r = pixtel_UI_EMS_input_box_get_previous_object(MMI_EMS_inputbox.data,&p,&c,¤t_object);
if(r == 1)//means that the previous is character
{
if((inputchar >= 0x0e34 && inputchar <= 0x0e39) || inputchar == 0x0e31) //Above Vowels and Below Vowels
{
if(c == 0x0e30 || c == 0x0e32 || c == 0x0e33 || c == 0x0e46 || c == 0x0e2f || c == 0x0e3f || (c >= 0x0e40 && c <= 0x0e44) || c == 0x0030)
{
if(c == 0x0030 && *updatef == 1)
{
MMI_EMS_inputbox.flags&=~UI_EMS_INPUT_BOX_STATE_MULTITAP;
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,0x0030);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 0; //not accept input
}
else if((c == 0x0e31 || (c >= 0x0e34 && c <= 0x0e39)))
{//Above Vowels and Below Vowels
if(*updatef == 0)
{
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,0x0030);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 0;
}
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
else if(c >= 0x0e47 && c <= 0x0e4c)
{//tone
if(*updatef == 0)
{
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,0x0030);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 0;
}
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
if(c == 0x0e47)
{
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
r = pixtel_UI_EMS_input_box_get_previous_object(MMI_EMS_inputbox.data,&p,&cc,¤t_object);
if (r == 1 && ((cc >= 0x0e34 && cc <= 0x0e39) || cc == 0x0e31))
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,c);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
}
else
{
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,c);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
}
return 1;
}
else if(c >= 0x0e01 && c <= 0x0e2e)
{
//msz00065_20051010 peng hua add for multitap thai begin
if(pixtel_UI_EMS_check_input_test_overflow(&MMI_EMS_inputbox,inputchar))
//msz00065_20051010 peng hua add for multitap thai end
*updatef = 1;
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
else
{
if (*updatef == 0)
{
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,0x0030);
*updatef = 0;
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
}
return 0;
}
}
else if(inputchar == 0x0030)
{
if (*updatef == 1)
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
// redraw_EMS_inputbox();
return 2;
}
}
else if(inputchar >= 0x0e47 && inputchar <= 0x0e4c)
{
if(c == 0x0e30 || c == 0x0e32 || c == 0x0e33 || c == 0x0e46 || c == 0x0e2f || c == 0x0e3f || (c >= 0x0e40 && c <= 0x0e44) || c == 0x0030)
{
if((c == 0x0e46 || c == 0x0e2f || c == 0x0e3f) && *updatef == 1)
{
MMI_EMS_inputbox.flags&=~UI_EMS_INPUT_BOX_STATE_MULTITAP;
redraw_EMS_inputbox();
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
}
return 1; //not accept input
}
else if((c >= 0x0e47 && c <= 0x0e4c))
{//tone
if(*updatef == 0)
return 1;
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
if(inputchar == 0x0e47) //
{
r = pixtel_UI_EMS_input_box_get_previous_object(MMI_EMS_inputbox.data,&p,&cc,¤t_object);
if (r == 1 && ((cc >= 0x0e34 && cc <= 0x0e39) || cc == 0x0e31))
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
}
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
else if(c >= 0x0e01 && c <= 0x0e2e)
{
//msz00065_20051010 peng hua add for multitap thai begin
if(pixtel_UI_EMS_check_input_test_overflow(&MMI_EMS_inputbox,inputchar))
//msz00065_20051010 peng hua add for multitap thai end
*updatef = 1;
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
else if((c >= 0x0e34 && c <= 0x0e39) || c == 0x0e31)
{
//msz00065_20051010 peng hua add for multitap thai begin
if(pixtel_UI_EMS_check_input_test_overflow(&MMI_EMS_inputbox,inputchar))
//msz00065_20051010 peng hua add for multitap thai end
*updatef = 1;
if(inputchar == 0x0e47) //
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
}
pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
redraw_EMS_inputbox();
wgui_EMS_redraw_remaining_characters_display();
return 1;
}
else
{
if(*updatef == 1)
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
return 1;
}
}
if((inputchar == 0x0e46 || inputchar == 0x0e2f || inputchar == 0x0e3f) && *updatef == 1)
{
pixtel_UI_EMS_input_box_backspace(&MMI_EMS_inputbox);
MMI_EMS_inputbox.flags&=~UI_EMS_INPUT_BOX_STATE_MULTITAP;
// pixtel_UI_EMS_input_box_insert_character(&MMI_EMS_inputbox,inputchar);
// redraw_EMS_inputbox();
return 2;
}
}
else //object
{
if((inputchar >= 0x0e34 && inputchar <= 0x0e39) || inputchar == 0x0e31)
return 0;
if(inputchar >= 0x0e47 && inputchar <= 0x0e4c)
return 0;
}
return 2;
}
#endif
void register_EMS_multitap_function(void)
{
/* W06.09 Touch Screen With Keypad V1*/
#if defined(__MMI_FULL_SCREEN_EDITOR__)||defined(__MMI_TOUCH_SCREEN__)
register_multitap_no_draw_key_handlers();
#else
register_multitap_key_handlers();
#endif
register_keyboard_input_handler(EMS_inputbox_alphanumeric_keyboard_input_handler);
set_multitap_functions(EMS_inputbox_multitap_input,EMS_inputbox_multitap_input_complete);
wgui_set_EMS_inputbox_RSK();
register_EMS_inputbox_keys();
SetKeyHandler(wgui_EMS_inputbox_handle_symbol_picker_star_key,KEY_STAR,KEY_EVENT_DOWN);
}
void change_EMS_inputbox_mode(byte mode)
{
//PMT dara added for Multitap thai
#if defined(__MMI_MULTITAP_THAI__)
SetKeyHandler(handle_category28_change_input_mode,KEY_POUND,KEY_EVENT_DOWN);
#endif
#if !defined(__MMI_MULTITAP_FOR_STAR_AND_POUND__)
#else
ClearKeyHandler(KEY_POUND,KEY_EVENT_DOWN);
#endif
#ifdef __MMI_GB__
//如果是英文或者中文输入法,则应该打开候选框
// GBCheckCandWnd();
#endif //__MMI_GB__
switch(mode)
{
case INPUT_MODE_MULTITAP_UPPERCASE_ABC:
change_multitap_mode(INPUT_MODE_MULTITAP_UPPERCASE_ABC);
register_EMS_multitap_function();
#ifdef __MMI_GB__
//*键切换输入法
SetKeyHandler(EMS_CHANGE_IM_FUNC, KEY_STAR, KEY_EVENT_DOWN);
#endif
break;
case INPUT_MODE_MULTITAP_LOWERCASE_ABC:
change_multitap_mode(INPUT_MODE_MULTITAP_LOWERCASE_ABC);
register_EMS_multitap_function();
#ifdef __MMI_GB__
SetKeyHandler(EMS_CHANGE_IM_FUNC, KEY_STAR, KEY_EVENT_DOWN);
#endif
break;
//PMT dara added for multitap thai
#if defined(__MMI_MULTITAP_THAI__)
case INPUT_MODE_MULTITAP_THAI:
change_multitap_mode(INPUT_MODE_MULTITAP_THAI);
#if defined(__MMI_FULL_SCREEN_EDITOR__)
register_multitap_no_draw_key_handlers();
#else
register_multitap_key_handlers();
#endif
register_MMI_key_input_extend_handler();
//change_inputbox_type_multitapthai(EMS_INPUTBOX); //msz065_20050420
register_keyboard_input_handler(EMS_inputbox_alphanumeric_keyboard_input_handler);
set_multitap_functions(EMS_inputbox_multitap_input,EMS_inputbox_multitap_input_complete);
wgui_set_EMS_inputbox_RSK();
register_EMS_inputbox_keys();
SetKeyHandler(handle_category28_change_input_mode_bymultitapthai,KEY_POUND,KEY_LONG_PRESS);
SetKeyHandler(wgui_EMS_inputbox_handle_symbol_picker_star_key_bymultitapthai,KEY_STAR,KEY_LONG_PRESS);
break;
#endif
#if defined(__MMI_MULTITAP_SPANISH__)
case INPUT_MODE_MULTITAP_UPPERCASE_SPANISH:
change_multitap_mode(INPUT_MODE_MULTITAP_UPPERCASE_SPANISH);
register_EMS_multitap_function();
break;
case INPUT_MODE_MULTITAP_LOWERCASE_SPANISH:
change_multitap_mode(INPUT_MODE_MULTITAP_LOWERCASE_SPANISH);
register_EMS_multitap_function();
break;
#endif
//PMT VIKASG START 20050729
#if defined(__MMI_MULTITAP_DANISH__)
case INPUT_MODE_MULTITAP_UPPERCASE_DANISH:
change_multitap_mode(INPUT_MODE_MULTITAP_UPPERCASE_DANISH);
register_EMS_multitap_function();
break;
case INPUT_MODE_MULTITAP_LOWERCASE_DANISH:
change_multitap_mode(INPUT_MODE_MULTITAP_LOWERCASE_DANISH);
register_EMS_multitap_function();
break;
#endif
//PMT VIKASG END 20050729
/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -