#include <app_control.h>
#include <app_preference.h>
#include <ode/internal-encryption.h>
-#include "clipboard.h"
+#include <notification.h>
#include "autofill.h"
#include "ise.h"
#include "utils.h"
#include "ise-floating-mode.h"
#include "ise-dbus.h"
#include "ise-sticker-mode.h"
-
-#define EDJ_FILE RESDIR"/edje/" PROFILE_NAME"/customised_ctxpopup.edj"
+#include "ise-nmt-mode.h"
+#include "nmt.h"
+#include "guidepopup.h"
#define EXIT_ISE_ON_HIDE 0
#define DEFER_ISE_CREATION 0
#define MVK_space 0x020
#define MVK_Done 0xff0d
-#define CM_KEY_LIST_SIZE 6
+#define CM_KEY_LIST_SIZE 7
#define MULTITAP_TIMEOUT 3.0
#define USER_KEYSTRING_OPTION "OPTION"
#define USER_KEYSTRING_EMOTICON "EMOTICON_LAYOUT"
-#define USER_KEYSTRING_CLIPBOARD "CLIPBOARD"
#define USER_KEYSTRING_VOICE "STT_3X4"
#define USER_KEYSTRING_FLOATING "FLOATING"
#define USER_KEYSTRING_STICKER "STICKER_LAYOUT"
+#define USER_KEYSTRING_TRANSLATION "TRANSLATION_LAYOUT"
#define USER_VOICE_LANGUAGE "LANGUAGE"
static sclboolean _cm_popup_opened = FALSE;
-static const char *_cm_key_list[CM_KEY_LIST_SIZE] = {USER_KEYSTRING_OPTION, USER_KEYSTRING_EMOTICON, USER_KEYSTRING_CLIPBOARD, USER_KEYSTRING_VOICE, USER_KEYSTRING_FLOATING, USER_KEYSTRING_STICKER};
+static const char *_cm_key_list[CM_KEY_LIST_SIZE] = {USER_KEYSTRING_OPTION, USER_KEYSTRING_EMOTICON,
+ USER_KEYSTRING_VOICE, USER_KEYSTRING_FLOATING, USER_KEYSTRING_STICKER, USER_KEYSTRING_TRANSLATION};
static scluint _current_cm_key_id = 0;
-static Evas_Object* _guide_popup_setting = NULL;
-static Evas_Object* _guide_popup_space = NULL;
/*
* This callback class will receive all response events from SCL
SCLEventReturnType on_event_key_clicked(SclUIEventDesc event_desc);
SCLEventReturnType on_event_drag_state_changed(SclUIEventDesc event_desc);
SCLEventReturnType on_event_notification(SCLUINotiType noti_type, SclNotiDesc *etc_info);
+
+private:
+ void on_event_string_key(CSCLUI *ui, SclUIEventDesc event_desc);
+ void on_event_control_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state);
+ void on_event_character_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state);
+ void on_event_modechange_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state, SCLEventReturnType &ret);
+ void process_user_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state, SCLEventReturnType &ret);
};
static CUIEventCallback callback;
const_cast<sclchar*>("icon/54x54/icon_setting_press.png"),
const_cast<sclchar*>("icon/54x54/icon_setting_dim.png")};
ui->set_private_key("CM_KEY", const_cast<sclchar*>(" "), imagelabel, NULL, 0, const_cast<sclchar*>(USER_KEYSTRING_OPTION), TRUE);
- } else if (strcmp(_cm_key_list[cm_key_id], USER_KEYSTRING_CLIPBOARD) == 0) {
- sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
- const_cast<sclchar*>("icon/54x54/icon_clipboard_nor.png"),
- const_cast<sclchar*>("icon/54x54/icon_clipboard_press.png"),
- const_cast<sclchar*>("icon/54x54/icon_clipboard_dim.png")};
- ui->set_private_key("CM_KEY", const_cast<sclchar*>(" "), imagelabel, NULL, 0, const_cast<sclchar*>(USER_KEYSTRING_CLIPBOARD), TRUE);
} else if (strcmp(_cm_key_list[cm_key_id], USER_KEYSTRING_VOICE) == 0) {
sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
const_cast<sclchar*>("icon/54x54/icon_mic_nor.png"),
const_cast<sclchar*>("icon/54x54/icon_floating_keypad_press.png"),
const_cast<sclchar*>("icon/54x54/icon_floating_keypad_dim.png")};
ui->set_private_key("CM_KEY", const_cast<sclchar*>(" "), imagelabel, NULL, 0, const_cast<sclchar*>(USER_KEYSTRING_FLOATING), TRUE);
+ } else if (strcmp(_cm_key_list[cm_key_id], USER_KEYSTRING_TRANSLATION) == 0) {
+ sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
+ const_cast<sclchar*>("icon/54x54/icon_translation_nor.png"),
+ const_cast<sclchar*>("icon/54x54/icon_translation_press.png"),
+ const_cast<sclchar*>("icon/54x54/icon_translation_dim.png")};
+ ui->set_private_key("CM_KEY", const_cast<sclchar*>(" "), imagelabel, NULL, 0, const_cast<sclchar*>(USER_KEYSTRING_TRANSLATION), TRUE);
} else if (strcmp(_cm_key_list[cm_key_id], USER_KEYSTRING_STICKER) == 0) {
sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
const_cast<sclchar*>("icon/54x54/icon_sticker_nor.png"),
if (ise_emoticon_is_show()) {
ise_emoticon_destroy_layout();
}
+
+ if (ise_nmt_is_show()) {
+ ise_nmt_destroy_layout();
+ }
+
if (key_value) {
if (!strcmp(key_value, USER_KEYSTRING_EMOTICON)) {
ise_emoticon_init_list();
SCLRotation rotation = ui->get_rotation();
ise_emoticon_show_layout(ise_emoticon_get_current_group(), ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
}
+ else if (!strcmp(key_value, USER_KEYSTRING_TRANSLATION)) {
+ LOGD("");
+ SCLRotation rotation = ui->get_rotation();
+ ise_nmt_show_layout(ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
+ }
}
}
if (!ise_sticker_check_sticker_exists())
ui->enable_button("STICKER_KEY", EINA_FALSE);
+ if (nmt_is_disabled())
+ ui->enable_button("TRANSLATION_KEY", false);
+ else
+ ui->enable_button("TRANSLATION_KEY", true);
+
if (ise_is_emoticons_disabled())
ui->enable_button("EMOTICON_KEY", false);
else
return ret;
}
-void ise_destroy_popup_setting()
-{
- if (_guide_popup_setting != NULL) {
- LOGD("destroy setting popup iter\n");
- evas_object_del(_guide_popup_setting);
- _guide_popup_setting = NULL;
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guideset = TRUE;
- }
- write_ise_config_values();
- }
-}
-
-void ise_destroy_popup_space()
-{
- if (_guide_popup_space != NULL) {
- LOGD("destroy space popup iter\n");
- evas_object_del(_guide_popup_space);
- _guide_popup_setting = NULL;
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guidechange = TRUE;
- }
- write_ise_config_values();
- }
-}
-
-Evas_Object *open_message_popup(Evas_Object *parentWnd)
-{
- static Evas_Object *msg_window = NULL;
- if (msg_window) {
- evas_object_del(msg_window);
- msg_window = NULL;
- }
- msg_window = elm_win_add(parentWnd, "MCFMessagePopup", ELM_WIN_UTILITY);
- if (msg_window) {
- int w, h;
- elm_win_borderless_set(msg_window, EINA_TRUE);
- elm_win_alpha_set(msg_window, EINA_TRUE);
- elm_win_title_set(msg_window, "ISF Popup");
- elm_win_screen_size_get(msg_window, NULL, NULL, &w, &h);
- elm_win_prop_focus_skip_set(msg_window, TRUE);
- int rots[4] = {0, 90, 180, 270};
- elm_win_wm_rotation_available_rotations_set(msg_window, rots, 4);
- evas_object_resize(msg_window, w, h);
- }
-
- int rots[4] = { 0, 90, 180, 270 };
- elm_win_wm_rotation_available_rotations_set(msg_window, rots, 4);
- evas_object_show(msg_window);
- return msg_window;
-}
-
-void _guideline_popup_setting_cb(void *data, Evas_Object *obj, void *event_info)
-{
- evas_object_smart_callback_del(obj, "dismissed", _guideline_popup_setting_cb);
- evas_object_del(obj);
- obj = NULL;
- ise_destroy_popup_setting();
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guideset = TRUE;
- }
- write_ise_config_values();
-}
-
-void _guideline_popup_space_cb(void *data, Evas_Object *obj, void *event_info)
-{
- evas_object_smart_callback_del(obj, "dismissed", _guideline_popup_space_cb);
- evas_object_del(obj);
- obj = NULL;
- ise_destroy_popup_space();
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guidechange = TRUE;
- }
- write_ise_config_values();
-}
-
bool get_landscape_device(int degree)
{
sclint width = 0;
return landscape_device;
}
-void ise_show_help_popup(sclulong keyEvent)
-{
- char buf[2048] = {0, };
- int font_size = 40;
- sclint scr_w = 0;
- sclint scr_h = 0;
- SclRectangle rectangle = {0};
- Evas_Object *ctxpopup = NULL;
- Elm_Theme *theme = NULL;
-
- CSCLUI *ui = get_ui();
- if (ui) {
- ui->get_screen_resolution(&scr_w, &scr_h);
-
- if (keyEvent == MVK_space) {
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guidechange = TRUE;
- }
- write_ise_config_values();
- ui->get_button_geometry("SPACE_KEY", &rectangle);
- _guide_popup_space = open_message_popup(NATIVE_WINDOW_CAST(ime_get_main_window()));
-
- theme = elm_theme_new();
- elm_theme_ref_set(theme, NULL);
- elm_theme_extension_add(theme, EDJ_FILE);
-
- ctxpopup = elm_ctxpopup_add(_guide_popup_space);
- elm_object_theme_set(ctxpopup, theme);
- evas_object_smart_callback_add(ctxpopup, "dismissed", _guideline_popup_space_cb, (void *)keyEvent);
- } else {
- CONFIG_VALUES *config_values = get_config_values();
- if (config_values) {
- config_values->first_guideset = TRUE;
- }
- write_ise_config_values();
- ui->get_button_geometry("CM_KEY", &rectangle);
- _guide_popup_setting = open_message_popup(NATIVE_WINDOW_CAST(ime_get_main_window()));
- theme = elm_theme_new();
- elm_theme_ref_set(theme, NULL);
- elm_theme_extension_add(theme, EDJ_FILE);
- ctxpopup = elm_ctxpopup_add(_guide_popup_setting);
- elm_object_theme_set(ctxpopup, theme);
- evas_object_smart_callback_add(ctxpopup, "dismissed", _guideline_popup_setting_cb, (void *)keyEvent);
- }
- }
-
- int rotation = elm_win_rotation_get(NATIVE_WINDOW_CAST(ime_get_main_window()));
- bool landscape_device = get_landscape_device(rotation);
- if (rotation == 0 || rotation == 180) {
- elm_object_style_set(ctxpopup, landscape_device ? "customised_guideline_popup_landscape" : "customised_guideline_popup");
- } else {
- elm_object_style_set(ctxpopup, landscape_device ? "customised_guideline_popup" : "customised_guideline_popup_landscape");
- }
-
- elm_ctxpopup_direction_priority_set(ctxpopup, ELM_CTXPOPUP_DIRECTION_UP,
- ELM_CTXPOPUP_DIRECTION_UNKNOWN,
- ELM_CTXPOPUP_DIRECTION_UNKNOWN,
- ELM_CTXPOPUP_DIRECTION_UNKNOWN);
-
- Evas_Object* text = elm_label_add(ctxpopup);
-
- if (keyEvent == MVK_space) {
- snprintf(buf, sizeof(buf), "<font_style=Regular font_size=%d align=left wrap=mixed color=#000000>%s</>", font_size,
- dgettext(PACKAGE, "IDS_IME_BODY_SWIPE_THE_SPACE_BAR_LEFT_OR_RIGHT_TO_CHANGE_BETWEEN_LANGUAGES"));
- } else {
- snprintf(buf, sizeof(buf), "<font_style=Regular font_size=%d align=left wrap=mixed color=#000000>%s</>", font_size,
- dgettext(PACKAGE, "IDS_IME_BODY_TAP_AND_HOLD_THIS_KEY_TO_SEE_THE_SYMBOL_LIST_SELECT_ONE_TO_USE_IT_AS_A_SHORTCUT"));
- }
- elm_object_text_set(text, buf);
- elm_object_content_set(ctxpopup, text);
- Evas_Coord x, y, w, h;
- evas_object_geometry_get(NATIVE_WINDOW_CAST(ime_get_main_window()), &x, &y, &w, &h);
-
- if (rotation == 0 || rotation == 180) {
- elm_label_wrap_width_set(text, (scr_w * 4) / 5);
- evas_object_size_hint_min_set(ctxpopup, ELM_SCALE_SIZE(scr_w), ELM_SCALE_SIZE(50));
- evas_object_size_hint_max_set(ctxpopup, ELM_SCALE_SIZE(scr_w), ELM_SCALE_SIZE(600));
- evas_object_move(ctxpopup, rectangle.x + rectangle.width / 2,
- (scr_h - h) + rectangle.y - ELM_SCALE_SIZE(5));
- } else {
- elm_label_wrap_width_set(text, (scr_h * 4) / 5);
- evas_object_size_hint_min_set(ctxpopup, ELM_SCALE_SIZE(scr_h), ELM_SCALE_SIZE(50));
- evas_object_size_hint_max_set(ctxpopup, ELM_SCALE_SIZE(scr_h), ELM_SCALE_SIZE(600));
- evas_object_move(ctxpopup, rectangle.x + rectangle.width / 2,
- (scr_w - h)+ rectangle.y - ELM_SCALE_SIZE(5));
- }
- elm_label_line_wrap_set(text, ELM_WRAP_MIXED);
- evas_object_show(text);
-
- if (keyEvent == MVK_space) {
- evas_object_layer_set(_guide_popup_space, EVAS_LAYER_MAX);
- evas_object_show(_guide_popup_space);
- } else {
- evas_object_layer_set(_guide_popup_setting, EVAS_LAYER_MAX);
- evas_object_show(_guide_popup_setting);
- }
-
- evas_object_layer_set(ctxpopup, EVAS_LAYER_MAX);
- evas_object_show(ctxpopup);
-}
-
SCLEventReturnType CUIEventCallback::on_event_drag_state_changed(SclUIEventDesc event_desc)
{
SECURE_LOGD("button %s is clicked\n", event_desc.key_value);
CONFIG_VALUES *config_values = get_config_values();
if (config_values && (!config_values->first_guideset) && event_desc.key_value && (strncmp(event_desc.key_value, "OPTION", strlen(event_desc.key_value)) == 0)) {
- ise_show_help_popup(event_desc.key_event);//show help popup in on_event_drag_state_changed other than on_event_key_clicked for fixing help popup show delay issue
+ ise_show_help_popup(event_desc.key_event, NATIVE_WINDOW_CAST(ime_get_main_window()));//show help popup in on_event_drag_state_changed other than on_event_key_clicked for fixing help popup show delay issue
LOGD("setting popup show\n");
return SCL_EVENT_PASS_ON;
} else {
app_control_destroy(app_control);
}
-SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_desc)
+void CUIEventCallback::on_event_string_key(CSCLUI *ui, SclUIEventDesc event_desc)
{
- SCLEventReturnType ret = SCL_EVENT_PASS_ON;
- if (word_timer != NULL) {
- ecore_timer_del(word_timer);
- word_timer = NULL;
+ if (event_desc.key_modifier != KEY_MODIFIER_MULTITAP_START &&
+ event_desc.key_modifier != KEY_MODIFIER_MULTITAP_REPEAT) {
+ if (event_desc.key_event) {
+ ise_forward_key_event(event_desc.key_event);
+ } else {
+ ise_send_string(event_desc.key_value);
+ }
}
- KEYBOARD_STATE *keyboard_state = get_keyboard_state();
- if (!keyboard_state) return ret;
-
- if (event_desc.key_modifier == KEY_MODIFIER_MULTITAP_START) {
- if (!keyboard_state->multitap_value.empty()) {
- ise_send_string(keyboard_state->multitap_value.c_str());
+ if (!g_popup_opened) {
+ const sclchar *input_mode = ui->get_input_mode();
+ if (input_mode && ((0 == strcmp(input_mode, "SYM_QTY_1")) || (0 == strcmp(input_mode, "SYM_QTY_2")))) {
+ update_recent_used_punctuation(event_desc.key_value);
}
- ise_update_preedit_string(event_desc.key_value);
- keyboard_state->multitap_value = event_desc.key_value;
- } else if (event_desc.key_modifier == KEY_MODIFIER_MULTITAP_REPEAT) {
- ise_update_preedit_string(event_desc.key_value);
- keyboard_state->multitap_value = event_desc.key_value;
- } else {
- _reset_multitap_state();
+ } else if (g_punctuation_popup_opened) {
+ update_recent_used_punctuation(event_desc.key_value);
}
- keyboard_state->prev_modifier = event_desc.key_modifier;
+}
- CSCLUI *ui = get_ui();
- if (ui) {
- switch (event_desc.key_type) {
- case KEY_TYPE_STRING: {
- if (event_desc.key_modifier != KEY_MODIFIER_MULTITAP_START &&
- event_desc.key_modifier != KEY_MODIFIER_MULTITAP_REPEAT) {
- if (event_desc.key_event) {
- ise_forward_key_event(event_desc.key_event);
- } else {
- ise_send_string(event_desc.key_value);
- }
- }
- if (!g_popup_opened) {
- const sclchar *input_mode = ui->get_input_mode();
- if (input_mode && ((0 == strcmp(input_mode, "SYM_QTY_1")) || (0 == strcmp(input_mode, "SYM_QTY_2")))) {
- update_recent_used_punctuation(event_desc.key_value);
- }
- } else if (g_punctuation_popup_opened) {
- update_recent_used_punctuation(event_desc.key_value);
- }
- break;
+void CUIEventCallback::on_event_control_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state)
+{
+ commit_timeout(NULL);
+
+ const char *long_shift = "LongShift";
+ const char *caps_lock = "CapsLock";
+ const char *delete_all = "DeleteAll";
+ const char *hide_panel = "Hide";
+
+ if (strncmp(event_desc.key_value, long_shift, strlen(long_shift)) == 0) {
+ LOGD("shift key is longpress\n");
+ ui->set_shift_state(SCL_SHIFT_STATE_ON);
+ g_need_send_shift_event = TRUE;
+ //ise_send_event (MVK_Shift_Lock, KEY_MASK_NULL);
+ } else if (strncmp(event_desc.key_value, caps_lock, strlen(caps_lock)) == 0) {
+ bool load_in_ime = false;
+ const sclchar *cur_lang = _language_manager.get_current_language();
+ if (cur_lang) {
+ LANGUAGE_INFO *info = _language_manager.get_language_info(cur_lang);
+ if (info)
+ load_in_ime = info->load_in_ime;
+ }
+
+ if (ui->get_shift_state() != SCL_SHIFT_STATE_LOCK) {
+ ui->set_shift_state(SCL_SHIFT_STATE_LOCK);
+ if (load_in_ime)
+ ime_send_imengine_event(MVK_Shift_Lock, 0);
+ else
+ engine_loader_send_imengine_event(MVK_Shift_Lock, 0);
+ } else {
+ ui->set_shift_state(SCL_SHIFT_STATE_OFF);
+ if (load_in_ime)
+ ime_send_imengine_event(MVK_Shift_Off, 0);
+ else
+ engine_loader_send_imengine_event(MVK_Shift_Off, 0);
+ }
+ //g_need_send_shift_event = TRUE;
+ } else if (strncmp(event_desc.key_value, delete_all, strlen(delete_all)) == 0) {
+ ime_delete_surrounding_text((INT_MAX / 2) * -1, INT_MAX);
+ } else if (strncmp(event_desc.key_value, hide_panel, strlen(hide_panel)) == 0) {
+ ise_hide();
+ ime_request_hide();
+ } else if (event_desc.key_event) {
+ if (keyboard_state->layout == ISE_LAYOUT_STYLE_VOICE) {
+ ise_stt_stop();
}
- case KEY_TYPE_CHAR: {
- sclboolean need_forward = FALSE;
- // FIXME : Should decide when to forward key events
- const sclchar *input_mode = ui->get_input_mode();
- if (input_mode) {
- if (strcmp(input_mode, "SYM_QTY_1") == 0 ||
- strcmp(input_mode, "SYM_QTY_2") == 0 ||
- strcmp(input_mode, "PHONE_3X4") == 0 ||
- strcmp(input_mode, "IPv6_3X4_123") == 0 ||
- strcmp(input_mode, "IPv6_3X4_ABC") == 0 ||
- strcmp(input_mode, "NUMONLY_3X4") == 0 ||
- strcmp(input_mode, "NUMONLY_3X4_SIG") == 0 ||
- strcmp(input_mode, "NUMONLY_3X4_DEC") == 0 ||
- strcmp(input_mode, "NUMONLY_3X4_SIGDEC") == 0 ||
- strcmp(input_mode, "DATETIME_3X4") == 0) {
- need_forward = TRUE;
- }
- }
- if (input_mode && strcmp (input_mode, "NUMONLY_3X4_SIGDEC") == 0 &&
- strcmp(event_desc.key_value, ".") == 0) {
- ime_update_preedit_string(_sig_dec[_click_count%SIG_DEC_SIZE], NULL);
- ime_show_preedit_string();
- delete_commit_timer();
- _commit_timer = ecore_timer_add(1.0, commit_timeout, NULL);
- _click_count++;
- } else if (event_desc.key_event) {
- commit_timeout(NULL);
- if (need_forward) {
- ise_forward_key_event(event_desc.key_event);
- } else {
- if (_cm_popup_opened) {
- static sclchar current_cm_symbol[2] = {'\0'};
- sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
- const_cast<sclchar*>(" "),
- const_cast<sclchar*>(" "),
- const_cast<sclchar*>(" ")};
- if (event_desc.key_value) {
- current_cm_symbol[0] = event_desc.key_value[0];
- current_cm_symbol[1] = '\0';
- }
- ui->set_private_key("CM_KEY",
- const_cast<sclchar*>(current_cm_symbol),
- imagelabel, NULL, 0,
- const_cast<sclchar*>(current_cm_symbol), TRUE);
-
- _cm_popup_opened = FALSE;
- _current_cm_key_id = -1;
- }
#ifdef _WEARABLE
- /*
- *
- *change the keyboard mode of GLM from QWERTY to KEYPAD
- *ensure the Number keypad won't be affected
- *
- */
- if (keyboard_state->layout == ISE_LAYOUT_STYLE_NUMBER) {
- ime_send_key_event(IME_KEY_Print, IME_KEY_MASK_CONTROL, false);
- } else {
- Candidate *candidate = get_candidate();
- if (word_timer == NULL && (!candidate || !candidate->get_visible())) {
- word_timer = ecore_timer_add(MULTITAP_TIMEOUT, _multi_tap_timer_cb, NULL);
- }
- ime_send_key_event(IME_KEY_Select, IME_KEY_MASK_CONTROL, false);
- }
+ if (event_desc.key_event == MVK_Done) {
+ LOGD("ENTER");
+ //commit the preedit string first
+ ise_send_event(event_desc.key_event, KEY_MASK_NULL);
+ }
#endif
- ise_send_event(event_desc.key_event, KEY_MASK_NULL);
- }
- }
- if (input_mode) {
- if ((strcmp(input_mode, "SYM_QTY_1") == 0) || (0 == strcmp(input_mode, "SYM_QTY_2"))) {
- update_recent_used_punctuation(event_desc.key_value);
- }
+ ise_send_event(event_desc.key_event, KEY_MASK_NULL);
+ if (event_desc.key_event == MVK_Shift_L) {
+ g_need_send_shift_event = TRUE;
+ }
+ }
+}
+
+void CUIEventCallback::on_event_character_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state)
+{
+ sclboolean need_forward = FALSE;
+ // FIXME : Should decide when to forward key events
+ const sclchar *input_mode = ui->get_input_mode();
+ if (input_mode) {
+ if (strcmp(input_mode, "SYM_QTY_1") == 0 ||
+ strcmp(input_mode, "SYM_QTY_2") == 0 ||
+ strcmp(input_mode, "PHONE_3X4") == 0 ||
+ strcmp(input_mode, "IPv6_3X4_123") == 0 ||
+ strcmp(input_mode, "IPv6_3X4_ABC") == 0 ||
+ strcmp(input_mode, "NUMONLY_3X4") == 0 ||
+ strcmp(input_mode, "NUMONLY_3X4_SIG") == 0 ||
+ strcmp(input_mode, "NUMONLY_3X4_DEC") == 0 ||
+ strcmp(input_mode, "NUMONLY_3X4_SIGDEC") == 0 ||
+ strcmp(input_mode, "DATETIME_3X4") == 0) {
+ need_forward = TRUE;
+ }
+ }
+ if (input_mode && strcmp (input_mode, "NUMONLY_3X4_SIGDEC") == 0 &&
+ event_desc.key_value && strcmp(event_desc.key_value, ".") == 0) {
+ ime_update_preedit_string(_sig_dec[_click_count%SIG_DEC_SIZE], NULL);
+ ime_show_preedit_string();
+ delete_commit_timer();
+ _commit_timer = ecore_timer_add(1.0, commit_timeout, NULL);
+ _click_count++;
+ } else if (event_desc.key_event) {
+ commit_timeout(NULL);
+ if (need_forward) {
+ ise_forward_key_event(event_desc.key_event);
+ } else {
+ if (_cm_popup_opened) {
+ static sclchar current_cm_symbol[2] = {'\0'};
+ sclchar* imagelabel[SCL_BUTTON_STATE_MAX] = {
+ const_cast<sclchar*>(" "),
+ const_cast<sclchar*>(" "),
+ const_cast<sclchar*>(" ")};
+ if (event_desc.key_value) {
+ current_cm_symbol[0] = event_desc.key_value[0];
+ current_cm_symbol[1] = '\0';
}
- break;
- }
- case KEY_TYPE_CONTROL: {
- commit_timeout(NULL);
-
- const char *long_shift = "LongShift";
- const char *caps_lock = "CapsLock";
- const char *delete_all = "DeleteAll";
- const char *hide_panel = "Hide";
- if (strncmp(event_desc.key_value, long_shift, strlen(long_shift)) == 0) {
- LOGD("shift key is longpress\n");
- ui->set_shift_state(SCL_SHIFT_STATE_ON);
- g_need_send_shift_event = TRUE;
- //ise_send_event (MVK_Shift_Lock, KEY_MASK_NULL);
- } else if (strncmp(event_desc.key_value, caps_lock, strlen(caps_lock)) == 0) {
- bool load_in_ime = false;
- const sclchar *cur_lang = _language_manager.get_current_language();
- if (cur_lang) {
- LANGUAGE_INFO *info = _language_manager.get_language_info(cur_lang);
- if (info)
- load_in_ime = info->load_in_ime;
- }
+ ui->set_private_key("CM_KEY",
+ const_cast<sclchar*>(current_cm_symbol),
+ imagelabel, NULL, 0,
+ const_cast<sclchar*>(current_cm_symbol), TRUE);
- if (ui->get_shift_state() != SCL_SHIFT_STATE_LOCK) {
- ui->set_shift_state(SCL_SHIFT_STATE_LOCK);
- if (load_in_ime)
- ime_send_imengine_event(MVK_Shift_Lock, 0);
- else
- engine_loader_send_imengine_event(MVK_Shift_Lock, 0);
- } else {
- ui->set_shift_state(SCL_SHIFT_STATE_OFF);
- if (load_in_ime)
- ime_send_imengine_event(MVK_Shift_Off, 0);
- else
- engine_loader_send_imengine_event(MVK_Shift_Off, 0);
- }
- //g_need_send_shift_event = TRUE;
- } else if (strncmp(event_desc.key_value, delete_all, strlen(delete_all)) == 0) {
- ime_delete_surrounding_text((INT_MAX / 2) * -1, INT_MAX);
- } else if (strncmp(event_desc.key_value, hide_panel, strlen(hide_panel)) == 0) {
- ise_hide();
- ime_request_hide();
- } else if (event_desc.key_event) {
- if (keyboard_state->layout == ISE_LAYOUT_STYLE_VOICE) {
- ise_stt_stop();
- }
+ _cm_popup_opened = FALSE;
+ _current_cm_key_id = -1;
+ }
#ifdef _WEARABLE
- if (event_desc.key_event == MVK_Done) {
- LOGD("ENTER");
- //commit the preedit string first
- ise_send_event(event_desc.key_event, KEY_MASK_NULL);
- }
-#endif
- ise_send_event(event_desc.key_event, KEY_MASK_NULL);
- if (event_desc.key_event == MVK_Shift_L) {
- g_need_send_shift_event = TRUE;
- }
+ /*
+ * change the keyboard mode of GLM from QWERTY to KEYPAD
+ * ensure the Number keypad won't be affected
+ */
+ if (keyboard_state->layout == ISE_LAYOUT_STYLE_NUMBER) {
+ ime_send_key_event(IME_KEY_Print, IME_KEY_MASK_CONTROL, false);
+ } else {
+ Candidate *candidate = get_candidate();
+ if (word_timer == NULL && (!candidate || !candidate->get_visible())) {
+ word_timer = ecore_timer_add(MULTITAP_TIMEOUT, _multi_tap_timer_cb, NULL);
}
- break;
- }
- case KEY_TYPE_MODECHANGE:
-#if defined(_MOBILE) || defined(_COMMON)
- if (_guide_popup_setting != NULL) {//popup is showing
- break;
+ ime_send_key_event(IME_KEY_Select, IME_KEY_MASK_CONTROL, false);
}
#endif
- if (strcmp(event_desc.key_value, USER_VOICE_LANGUAGE) == 0) {
- if (!get_setting_window_open_status()) {
- ise_hide_stt_mode();
+ ise_send_event(event_desc.key_event, KEY_MASK_NULL);
+ }
+ }
+
+ if (input_mode) {
+ if ((strcmp(input_mode, "SYM_QTY_1") == 0) || (0 == strcmp(input_mode, "SYM_QTY_2"))) {
+ update_recent_used_punctuation(event_desc.key_value);
+ }
+ }
+}
+
+void CUIEventCallback::on_event_modechange_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state, SCLEventReturnType &ret)
+{
+#if defined(_MOBILE) || defined(_COMMON)
+ if (guide_popup_get_visible()) {//popup is showing
+ return;
+ }
+#endif
+
+ if (strcmp(event_desc.key_value, USER_VOICE_LANGUAGE) == 0) {
+ if (!get_setting_window_open_status()) {
+ ise_hide_stt_mode();
#ifdef _WEARABLE
- hide_indicator_window();
+ hide_indicator_window();
#endif
- create_setting_window();
- }
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_VOICE) == 0) {
- keyboard_state->layout = ISE_LAYOUT_STYLE_VOICE;
- ui->set_input_mode("STT_3X4");
+ create_setting_window();
+ }
+ } else if (strcmp(event_desc.key_value, USER_KEYSTRING_VOICE) == 0) {
+ keyboard_state->layout = ISE_LAYOUT_STYLE_VOICE;
+ ui->set_input_mode("STT_3X4");
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
- launch_option();
+ } else if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
+ launch_option();
- ret = SCL_EVENT_DONE;
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_CLIPBOARD) == 0) {
- clipboard_show();
+ ret = SCL_EVENT_DONE;
+ } else if (strcmp(event_desc.key_value, USER_KEYSTRING_FLOATING) == 0) {
+ CONFIG_VALUES *config_values = get_config_values();
- ret = SCL_EVENT_DONE;
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_FLOATING) == 0) {
- CONFIG_VALUES *config_values = get_config_values();
+ if (g_floating_mode) {
+ if (config_values) {
+ config_values->floating_mode = false;
+ }
+ } else {
+ if (config_values) {
+ config_values->floating_mode = true;
+ }
+ }
+ write_ise_config_values();
- if (g_floating_mode) {
- if (config_values) {
- config_values->floating_mode = false;
- }
- } else {
- if (config_values) {
- config_values->floating_mode = true;
- }
- }
- write_ise_config_values();
+ ret = SCL_EVENT_DONE;
+ } else if (strcmp(event_desc.key_value, USER_KEYSTRING_STICKER) == 0) {
+ SCLRotation rotation = ui->get_rotation();
+ ise_sticker_show_layout(STICKER_GROUP_RECENTLY_USED, ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
+ } else if (strcmp(event_desc.key_value, USER_KEYSTRING_TRANSLATION) == 0) {
+ if (ise_sticker_is_show())
+ ise_sticker_destroy_layout();
- ret = SCL_EVENT_DONE;
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_STICKER) == 0) {
- SCLRotation rotation = ui->get_rotation();
- ise_sticker_show_layout(STICKER_GROUP_RECENTLY_USED, ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
- } else if (on_input_mode_changed(event_desc.key_value, event_desc.key_event, event_desc.key_type)) {
- ret = SCL_EVENT_DONE;
+ SCLRotation rotation = ui->get_rotation();
+ ise_nmt_show_layout(ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
+ } else if (on_input_mode_changed(event_desc.key_value, event_desc.key_event, event_desc.key_type)) {
+ ret = SCL_EVENT_DONE;
+ }
+
+ if (_cm_popup_opened) {
+ if (strcmp(event_desc.key_value, USER_KEYSTRING_EMOTICON) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_VOICE) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_FLOATING) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_STICKER) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_TRANSLATION) == 0) {
+ scluint id = ise_get_cm_key_id(event_desc.key_value);
+ if (id != _current_cm_key_id) {
+ _current_cm_key_id = id;
+ ise_set_cm_private_key(_current_cm_key_id);
}
- if (_cm_popup_opened) {
- if (strcmp(event_desc.key_value, USER_KEYSTRING_EMOTICON) == 0 ||
- strcmp(event_desc.key_value, USER_KEYSTRING_VOICE) == 0 ||
- strcmp(event_desc.key_value, USER_KEYSTRING_FLOATING) == 0 ||
- strcmp(event_desc.key_value, USER_KEYSTRING_STICKER) == 0) {
- scluint id = ise_get_cm_key_id(event_desc.key_value);
- if (id != _current_cm_key_id) {
- _current_cm_key_id = id;
- ise_set_cm_private_key(_current_cm_key_id);
- }
- }
- _cm_popup_opened = FALSE;
- }
- if (strlen(event_desc.key_value) == 1) {
- const char allowed_chars_in_modechange[] = {
- ',', '?', '!', '`', '~', '"'
- };
- const int allowed_chars_in_modechange_num =
- sizeof(allowed_chars_in_modechange) / sizeof(char);
- for (unsigned int loop = 0;loop < sizeof(allowed_chars_in_modechange_num);loop++) {
- if (*(event_desc.key_value) == allowed_chars_in_modechange[loop]) {
- ise_send_string(event_desc.key_value);
- }
- }
+ }
+ _cm_popup_opened = FALSE;
+ }
+
+ if (strlen(event_desc.key_value) == 1) {
+ const char allowed_chars_in_modechange[] = {
+ ',', '?', '!', '`', '~', '@', '-'
+ };
+ const int allowed_chars_in_modechange_num =
+ sizeof(allowed_chars_in_modechange) / sizeof(char);
+ for (unsigned int loop = 0;loop < sizeof(allowed_chars_in_modechange_num);loop++) {
+ if (*(event_desc.key_value) == allowed_chars_in_modechange[loop]) {
+ ise_send_string(event_desc.key_value);
}
- break;
- case KEY_TYPE_USER:
- if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
- //open_option_window(NULL, ROTATION_TO_DEGREE(ui->get_rotation()));
- launch_option();
-
- ret = SCL_EVENT_DONE;
- } else if (strcmp(event_desc.key_value, USER_KEYSTRING_CLIPBOARD) == 0) {
- clipboard_show();
- ret = SCL_EVENT_DONE;
- } else if (strcmp(event_desc.key_value, "Cancel") == 0) {
- ret = SCL_EVENT_DONE;
- const sclchar *input_mode = ui->get_input_mode();
- if (input_mode && strcmp(input_mode, "STT_3X4") == 0 ) {
- keyboard_state->need_reset = TRUE;
- voice_result_string_flush();
- ise_set_layout(keyboard_state->layout, keyboard_state->layout_variation);
- if (keyboard_state->visible_state)
- ise_show(keyboard_state->ic);
- }
+ }
+ }
+}
+
+void CUIEventCallback::process_user_key(CSCLUI *ui, SclUIEventDesc event_desc, KEYBOARD_STATE *keyboard_state, SCLEventReturnType &ret)
+{
+ if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0) {
+ //open_option_window(NULL, ROTATION_TO_DEGREE(ui->get_rotation()));
+ launch_option();
+
+ ret = SCL_EVENT_DONE;
+ } else if (strcmp(event_desc.key_value, "Cancel") == 0) {
+ ret = SCL_EVENT_DONE;
+ const sclchar *input_mode = ui->get_input_mode();
+ if (input_mode && strcmp(input_mode, "STT_3X4") == 0 ) {
+ keyboard_state->need_reset = TRUE;
+ voice_result_string_flush();
+ ise_set_layout(keyboard_state->layout, keyboard_state->layout_variation);
+ if (keyboard_state->visible_state)
+ ise_show(keyboard_state->ic);
+ }
#ifdef _TV
- ise_send_event(IME_KEY_Cancel, KEY_MASK_NULL);
- ime_request_hide();
+ ise_send_event(IME_KEY_Cancel, KEY_MASK_NULL);
+ ime_request_hide();
#endif
- } else if (strcmp(event_desc.key_value, "Done") == 0) {
+ } else if (strcmp(event_desc.key_value, "Done") == 0) {
#ifdef _TV
- ret = SCL_EVENT_DONE;
- ise_send_event(IME_KEY_Return, KEY_MASK_NULL);
- ime_request_hide();
+ ret = SCL_EVENT_DONE;
+ ise_send_event(IME_KEY_Return, KEY_MASK_NULL);
+ ime_request_hide();
#endif
- } else {
- const sclchar *input_mode = ui->get_input_mode();
- if ((NULL != input_mode) && (!strcmp(input_mode, "EMOTICON_LAYOUT"))) {
- if (ise_emoticon_is_show()) {
- ise_emoticon_destroy_layout();
- }
+ } else if (strcmp(event_desc.key_value, "Translate") == 0) {
+ ise_nmt_translate();
+ } else {
+ const sclchar *input_mode = ui->get_input_mode();
+ if ((NULL != input_mode) && (!strcmp(input_mode, "EMOTICON_LAYOUT"))) {
+ if (ise_emoticon_is_show()) {
+ ise_emoticon_destroy_layout();
+ }
#ifdef _WEARABLE
- emoticon_group_t group_id = EMOTICON_GROUP_1;
- if (ise_emoticon_get_current_group() < EMOTICON_GROUP_3)
- group_id = (emoticon_group_t)(ise_emoticon_get_current_group() + 1);
+ emoticon_group_t group_id = EMOTICON_GROUP_1;
+ if (ise_emoticon_get_current_group() < EMOTICON_GROUP_3)
+ group_id = (emoticon_group_t)(ise_emoticon_get_current_group() + 1);
- ise_set_emoticon_label(group_id);
+ ise_set_emoticon_label(group_id);
#else
- emoticon_group_t group_id = ise_emoticon_get_group_id(event_desc.key_value);
+ emoticon_group_t group_id = ise_emoticon_get_group_id(event_desc.key_value);
#endif
- if ((group_id >= 0) && (group_id < MAX_EMOTICON_GROUP)) {
- SCLRotation rotation = ui->get_rotation();
- ise_emoticon_show_layout(group_id, ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
- }
- }
-
- if (input_mode && (!strcmp(input_mode, "STICKER_LAYOUT"))) {
- if (ise_sticker_is_show())
- ise_sticker_change_group(ise_sticker_get_group_id(event_desc.key_value));
- }
+ if ((group_id >= 0) && (group_id < MAX_EMOTICON_GROUP)) {
+ SCLRotation rotation = ui->get_rotation();
+ ise_emoticon_show_layout(group_id, ROTATION_TO_DEGREE(rotation), false, ime_get_main_window());
}
- if (_cm_popup_opened) {
- if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0 ||
- strcmp(event_desc.key_value, USER_KEYSTRING_CLIPBOARD) == 0) {
- scluint id = ise_get_cm_key_id(event_desc.key_value);
- if (id != _current_cm_key_id) {
- _current_cm_key_id = id;
- ise_set_cm_private_key(_current_cm_key_id);
- }
- }
- _cm_popup_opened = FALSE;
+ }
+
+ if (input_mode && (!strcmp(input_mode, "STICKER_LAYOUT"))) {
+ if (ise_sticker_is_show())
+ ise_sticker_change_group(ise_sticker_get_group_id(event_desc.key_value));
+ }
+ }
+
+ if (_cm_popup_opened) {
+ if (strcmp(event_desc.key_value, USER_KEYSTRING_OPTION) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_STICKER) == 0 ||
+ strcmp(event_desc.key_value, USER_KEYSTRING_TRANSLATION) == 0) {
+ scluint id = ise_get_cm_key_id(event_desc.key_value);
+ if (id != _current_cm_key_id) {
+ _current_cm_key_id = id;
+ ise_set_cm_private_key(_current_cm_key_id);
}
+ }
+ _cm_popup_opened = FALSE;
+ }
+}
+
+SCLEventReturnType CUIEventCallback::on_event_key_clicked(SclUIEventDesc event_desc)
+{
+ SCLEventReturnType ret = SCL_EVENT_PASS_ON;
+ if (word_timer != NULL) {
+ ecore_timer_del(word_timer);
+ word_timer = NULL;
+ }
+
+ KEYBOARD_STATE *keyboard_state = get_keyboard_state();
+ if (!keyboard_state) return ret;
+
+ if (event_desc.key_modifier == KEY_MODIFIER_MULTITAP_START) {
+ if (!keyboard_state->multitap_value.empty()) {
+ ise_send_string(keyboard_state->multitap_value.c_str());
+ }
+ ise_update_preedit_string(event_desc.key_value);
+ keyboard_state->multitap_value = event_desc.key_value;
+ } else if (event_desc.key_modifier == KEY_MODIFIER_MULTITAP_REPEAT) {
+ ise_update_preedit_string(event_desc.key_value);
+ keyboard_state->multitap_value = event_desc.key_value;
+ } else {
+ _reset_multitap_state();
+ }
+ keyboard_state->prev_modifier = event_desc.key_modifier;
+
+ CSCLUI *ui = get_ui();
+ if (ui) {
+ switch (event_desc.key_type) {
+ case KEY_TYPE_STRING:
+ on_event_string_key(ui, event_desc);
+ break;
+ case KEY_TYPE_CHAR:
+ on_event_character_key(ui, event_desc, keyboard_state);
+ break;
+ case KEY_TYPE_CONTROL:
+ on_event_control_key(ui, event_desc, keyboard_state);
+ break;
+ case KEY_TYPE_MODECHANGE:
+ on_event_modechange_key(ui, event_desc, keyboard_state, ret);
+ break;
+ case KEY_TYPE_USER:
+ process_user_key(ui, event_desc, keyboard_state, ret);
break;
default:
break;
if (ise_sticker_is_show())
ise_sticker_destroy_layout();
+
+ if (ise_nmt_is_show())
+ ise_nmt_destroy_layout();
}
}
#if defined(_MOBILE) || defined(_COMMON)
if (ise_is_guideline_popup_enable_layout()) {
if ((config_values && config_values->first_guidechange) && (_language_manager.get_enabled_languages_num() > 1)) {
- ise_show_help_popup(MVK_space);
+ ise_show_help_popup(MVK_space, NATIVE_WINDOW_CAST(ime_get_main_window()));
LOGD("space popup show\n");
} else {
ise_destroy_popup_space();
sclboolean succeeded = FALSE;
const sclchar *entry_path = MAIN_ENTRY_XML_PATH;
- int nwidth = 0;
- int nheight = 0;
- CSCLUtils *utils = CSCLUtils::get_instance();
- if (utils) {
- utils->get_screen_resolution(&nwidth, &nheight);
- }
_language_manager.set_resource_file_path(entry_path);
const sclchar *resource_file_path = _language_manager.get_resource_file_path();
LOGD("deleting ui\n");
delete ui;
ui = NULL;
+ g_ui = NULL;
}
if (g_candidate) {
if (elm_scale)
elm_app_base_scale_set(atof(elm_scale));
- clipboard_init();
+ if (nmt_check_agent_install())
+ nmt_init();
}
static void ime_app_exit_cb(void *user_data)
if (!engine_loader_dbus_shutdown())
LOGE("Failed to finalize dbus");
- clipboard_shutdown();
+ nmt_shutdown();
}
static void show_autofill_data()
LOGD("Enter\n");
ise_hide();
- clipboard_set_mime_type(false);
-
g_ic_smartreply = -1;
}
LOGD("Enter\n");
ise_focus_out(context_id);
g_imdata_state = 0;
- clipboard_set_mime_type(false);
input_smartreply_deinit();
g_ic_smartreply = -1;
key.dev_subclass = dev_subclass;
}
- if (keyboard_state->visible_state)
+ if (keyboard_state->visible_state) {
ise_process_key_event(key, ret);
- else
- ret = FALSE;
+ } else {
+ if (key.code == IME_KEY_space && (key.mask & IME_KEY_MASK_SHIFT)) {
+ if (key.mask & IME_KEY_MASK_RELEASED) {
+ if (_language_manager.select_next_language()) {
+ LANGUAGE_INFO *info = _language_manager.get_language_info(_language_manager.get_current_language());
+ if (info) {
+ notification_status_message_post(info->display_name.c_str());
+ }
+ } else {
+ LOGE("Failed to change language");
+ }
+ }
+
+ ret = TRUE;
+ } else {
+ ret = FALSE;
+ }
+ }
if (dev_name)
free(dev_name);
}
#ifdef _WEARABLE
+static sclu32 get_rotate_layout(ime_input_device_rotary_direction_e direction)
+{
+ KEYBOARD_STATE *keyboard_state = get_keyboard_state();
+ if (!keyboard_state) return ISE_LAYOUT_STYLE_NORMAL;
+
+ sclu32 new_layout = keyboard_state->layout;
+
+ if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE) {
+ LOGD("CLOCKWISE\n");
+ switch (keyboard_state->layout) {
+ case ISE_LAYOUT_STYLE_NORMAL:
+ case ISE_LAYOUT_STYLE_EMAIL:
+ case ISE_LAYOUT_STYLE_URL:
+ case ISE_LAYOUT_STYLE_PASSWORD:
+ if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD &&
+ _context_layout_variation == ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY)
+ ; // PASSWORD NUMBER ONLY, do nothing
+ else
+ new_layout = ISE_LAYOUT_STYLE_NUMBER;
+ break;
+ case ISE_LAYOUT_STYLE_NUMBER:
+ new_layout = ISE_LAYOUT_STYLE_HEX;
+ break;
+ case ISE_LAYOUT_STYLE_HEX:
+ if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
+ _context_layout == ISE_LAYOUT_STYLE_URL)
+ new_layout = ISE_LAYOUT_STYLE_VOICE;
+ else if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD)
+ new_layout = _context_layout;
+ else
+ new_layout = ISE_LAYOUT_STYLE_EMOTICON;
+ break;
+ case ISE_LAYOUT_STYLE_EMOTICON:
+ if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
+ _context_layout == ISE_LAYOUT_STYLE_URL ||
+ _context_layout == ISE_LAYOUT_STYLE_PASSWORD)
+ new_layout = _context_layout;
+ else
+ new_layout = ISE_LAYOUT_STYLE_VOICE;
+ break;
+ case ISE_LAYOUT_STYLE_VOICE:
+ new_layout = ISE_LAYOUT_STYLE_NORMAL;
+ break;
+ default:
+ ;
+ }
+ } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE) {
+ LOGD("COUNTER_CLOCKWISE\n");
+ switch (keyboard_state->layout) {
+ case ISE_LAYOUT_STYLE_NORMAL:
+ case ISE_LAYOUT_STYLE_EMAIL:
+ case ISE_LAYOUT_STYLE_URL:
+ case ISE_LAYOUT_STYLE_PASSWORD:
+ if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD &&
+ _context_layout_variation == ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY)
+ ; // PASSWORD NUMBER ONLY, do nothing
+ else if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD)
+ new_layout = ISE_LAYOUT_STYLE_HEX;
+ else
+ new_layout = ISE_LAYOUT_STYLE_VOICE;
+ break;
+ case ISE_LAYOUT_STYLE_NUMBER:
+ if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
+ _context_layout == ISE_LAYOUT_STYLE_URL ||
+ _context_layout == ISE_LAYOUT_STYLE_PASSWORD)
+ new_layout = _context_layout;
+ else
+ new_layout = ISE_LAYOUT_STYLE_NORMAL;
+ break;
+ case ISE_LAYOUT_STYLE_HEX:
+ new_layout = ISE_LAYOUT_STYLE_NUMBER;
+ break;
+ case ISE_LAYOUT_STYLE_EMOTICON:
+ new_layout = ISE_LAYOUT_STYLE_HEX;
+ break;
+ case ISE_LAYOUT_STYLE_VOICE:
+ if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
+ _context_layout == ISE_LAYOUT_STYLE_URL)
+ new_layout = ISE_LAYOUT_STYLE_HEX;
+ else
+ new_layout = ISE_LAYOUT_STYLE_EMOTICON;
+ break;
+ default:
+ ;
+ }
+ }
+
+ return new_layout;
+}
+
static void ime_app_process_input_device_event_cb(ime_input_device_type_e device_type, ime_input_device_event_h device_event, void *user_data)
{
KEYBOARD_STATE *keyboard_state = get_keyboard_state();
if (!keyboard_state) return;
+ if (device_type != IME_INPUT_DEVICE_TYPE_ROTARY) return;
- if (device_type == IME_INPUT_DEVICE_TYPE_ROTARY) {
- ime_input_device_rotary_direction_e direction;
- if (IME_ERROR_NONE == ime_input_device_rotary_get_direction(device_event, &direction)) {
- sclu32 new_layout = keyboard_state->layout;
- if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE) {
- LOGD("CLOCKWISE\n");
- switch (keyboard_state->layout) {
- case ISE_LAYOUT_STYLE_NORMAL:
- case ISE_LAYOUT_STYLE_EMAIL:
- case ISE_LAYOUT_STYLE_URL:
- case ISE_LAYOUT_STYLE_PASSWORD:
- if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD &&
- _context_layout_variation == ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY)
- ; // PASSWORD NUMBER ONLY, do nothing
- else
- new_layout = ISE_LAYOUT_STYLE_NUMBER;
- break;
- case ISE_LAYOUT_STYLE_NUMBER:
- new_layout = ISE_LAYOUT_STYLE_HEX;
- break;
- case ISE_LAYOUT_STYLE_HEX:
- if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
- _context_layout == ISE_LAYOUT_STYLE_URL)
- new_layout = ISE_LAYOUT_STYLE_VOICE;
- else if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD)
- new_layout = _context_layout;
- else
- new_layout = ISE_LAYOUT_STYLE_EMOTICON;
- break;
- case ISE_LAYOUT_STYLE_EMOTICON:
- if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
- _context_layout == ISE_LAYOUT_STYLE_URL ||
- _context_layout == ISE_LAYOUT_STYLE_PASSWORD)
- new_layout = _context_layout;
- else
- new_layout = ISE_LAYOUT_STYLE_VOICE;
- break;
- case ISE_LAYOUT_STYLE_VOICE:
- new_layout = ISE_LAYOUT_STYLE_NORMAL;
- break;
- default:
- ;
- }
- } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE) {
- LOGD("COUNTER_CLOCKWISE\n");
- switch (keyboard_state->layout) {
- case ISE_LAYOUT_STYLE_NORMAL:
- case ISE_LAYOUT_STYLE_EMAIL:
- case ISE_LAYOUT_STYLE_URL:
- case ISE_LAYOUT_STYLE_PASSWORD:
- if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD &&
- _context_layout_variation == ECORE_IMF_INPUT_PANEL_LAYOUT_PASSWORD_VARIATION_NUMBERONLY)
- ; // PASSWORD NUMBER ONLY, do nothing
- else if (_context_layout == ISE_LAYOUT_STYLE_PASSWORD)
- new_layout = ISE_LAYOUT_STYLE_HEX;
- else
- new_layout = ISE_LAYOUT_STYLE_VOICE;
- break;
- case ISE_LAYOUT_STYLE_NUMBER:
- if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
- _context_layout == ISE_LAYOUT_STYLE_URL ||
- _context_layout == ISE_LAYOUT_STYLE_PASSWORD)
- new_layout = _context_layout;
- else
- new_layout = ISE_LAYOUT_STYLE_NORMAL;
- break;
- case ISE_LAYOUT_STYLE_HEX:
- new_layout = ISE_LAYOUT_STYLE_NUMBER;
- break;
- case ISE_LAYOUT_STYLE_EMOTICON:
- new_layout = ISE_LAYOUT_STYLE_HEX;
- break;
- case ISE_LAYOUT_STYLE_VOICE:
- if (_context_layout == ISE_LAYOUT_STYLE_EMAIL ||
- _context_layout == ISE_LAYOUT_STYLE_URL)
- new_layout = ISE_LAYOUT_STYLE_HEX;
- else
- new_layout = ISE_LAYOUT_STYLE_EMOTICON;
- break;
- default:
- ;
- }
- }
+ ime_input_device_rotary_direction_e direction;
+ if (IME_ERROR_NONE != ime_input_device_rotary_get_direction(device_event, &direction)) return;
- CONFIG_VALUES *config_values = get_config_values();
- if (check_is_tutorial_show() && config_values) {
- read_ise_config_values();
- if ((direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE && !config_values->number_tutorial_enable && !config_values->symbol_tutorial_enable) ||
- (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE && config_values->symbol_tutorial_enable)) {
- new_layout = keyboard_state->layout;
- } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE && config_values->symbol_tutorial_enable) {
- ise_destroy_tutorial_mode_popup();
- config_values->symbol_tutorial_enable = false;
- write_ise_config_values();
- } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE && !config_values->number_tutorial_enable) {
- ise_destroy_tutorial_mode_popup();
- new_layout = ISE_LAYOUT_STYLE_NUMBER;
- if (!config_values->symbol_tutorial_enable) {
- ise_show_tutorial_mode_popup(new_layout);
- config_values->symbol_tutorial_enable = true;
- write_ise_config_values();
- }
- }
+ sclu32 new_layout = get_rotate_layout(direction);
+
+ CONFIG_VALUES *config_values = get_config_values();
+ if (check_is_tutorial_show() && config_values) {
+ read_ise_config_values();
+ if ((direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE && !config_values->number_tutorial_enable && !config_values->symbol_tutorial_enable) ||
+ (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE && config_values->symbol_tutorial_enable)) {
+ new_layout = keyboard_state->layout;
+ } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_COUNTER_CLOCKWISE && config_values->symbol_tutorial_enable) {
+ ise_destroy_tutorial_mode_popup();
+ config_values->symbol_tutorial_enable = false;
+ write_ise_config_values();
+ } else if (direction == IME_INPUT_DEVICE_ROTARY_DIRECTION_CLOCKWISE && !config_values->number_tutorial_enable) {
+ ise_destroy_tutorial_mode_popup();
+ new_layout = ISE_LAYOUT_STYLE_NUMBER;
+ if (!config_values->symbol_tutorial_enable) {
+ ise_show_tutorial_mode_popup(new_layout);
+ config_values->symbol_tutorial_enable = true;
+ write_ise_config_values();
}
+ }
+ }
- if (new_layout != keyboard_state->layout && new_layout < ISE_LAYOUT_STYLE_MAX) {
- keyboard_state->need_reset = TRUE;
- keyboard_state->layout = new_layout;
+ if (new_layout != keyboard_state->layout && new_layout < ISE_LAYOUT_STYLE_MAX) {
+ keyboard_state->need_reset = TRUE;
+ keyboard_state->layout = new_layout;
- if (keyboard_state->visible_state) {
- _reset_multitap_state();
- if (config_values) {
- _language_manager.reset_language(config_values->selected_language.c_str());
- }
- ise_show(keyboard_state->ic);
- }
+ if (keyboard_state->visible_state) {
+ _reset_multitap_state();
+ if (config_values) {
+ _language_manager.reset_language(config_values->selected_language.c_str());
}
+ ise_show(keyboard_state->ic);
}
}
}
static void ime_app_mime_type_set_request_cb(const char *mime_types, void *user_data)
{
LOGD("mime type : %s\n", mime_types);
-
- clipboard_set_mime_type(true);
- clipboard_init_sel_type();
-
- string str(mime_types), text_key = "text/", image_key = "image/";
-
- if (str.find(text_key) != string::npos)
- clipboard_add_sel_type(CLIPBOARD_SEL_TEXT);
-
- if (str.find(image_key) != string::npos)
- clipboard_add_sel_type(CLIPBOARD_SEL_IMAGE);
}
static void ime_app_prediction_hint_data_set_cb(const char *key, const char *value, void *user_data)