From 0e67df573019b07acbec58fd6fd7dab4ba0a8895 Mon Sep 17 00:00:00 2001 From: Christopher Michael Date: Fri, 19 Feb 2010 15:40:11 +0000 Subject: [PATCH] Add layout sending/updating. SVN revision: 46312 --- src/modules/illume2/e_mod_kbd.c | 59 ++++++++++++++++++++++++++++++--- 1 file changed, 54 insertions(+), 5 deletions(-) diff --git a/src/modules/illume2/e_mod_kbd.c b/src/modules/illume2/e_mod_kbd.c index 1865897f3..2f0ae0b58 100644 --- a/src/modules/illume2/e_mod_kbd.c +++ b/src/modules/illume2/e_mod_kbd.c @@ -16,6 +16,7 @@ static void _e_mod_kbd_slide(int visible, double len); static int _e_mod_kbd_cb_animate(void *data __UNUSED__); static E_Illume_Keyboard *_e_mod_kbd_by_border_get(E_Border *bd); static void _e_mod_kbd_border_adopt(E_Border *bd); +static void _e_mod_kbd_layout_send(void); /* local variables */ static Eina_List *_kbd_hdls = NULL; @@ -146,7 +147,7 @@ e_mod_kbd_show(void) /* if it's disabled, get out */ if (_e_illume_kbd->disabled) return; - /* TODO: Layout send */ + _e_mod_kbd_layout_send(); /* if we are not animating, just show it */ if (_e_illume_cfg->animation.vkbd.duration <= 0) @@ -209,9 +210,11 @@ e_mod_kbd_fullscreen_set(E_Zone *zone, int fullscreen) } void -e_mod_kbd_layout_set(E_Illume_Keyboard *kbd, E_Illume_Keyboard_Layout layout) +e_mod_kbd_layout_set(E_Illume_Keyboard_Layout layout) { - + if (!_e_illume_kbd->border) return; + _e_illume_kbd->layout = layout; + _e_mod_kbd_layout_send(); } /* local functions */ @@ -444,6 +447,8 @@ _e_mod_kbd_hide(void) /* can't hide keyboard if it's not visible, or disabled */ if ((!_e_illume_kbd->visible) || (_e_illume_kbd->disabled)) return; + _e_mod_kbd_layout_send(); + /* if we are not animating, just hide it */ if (_e_illume_cfg->animation.vkbd.duration <= 0) { @@ -513,7 +518,7 @@ _e_mod_kbd_cb_animate(void *data __UNUSED__) else _e_illume_kbd->visible = 1; - /* layout send */ + _e_mod_kbd_layout_send(); /* tell the focused border it changed so layout gets udpated */ if (_focused_border) @@ -559,6 +564,50 @@ _e_mod_kbd_border_adopt(E_Border *bd) if (!_e_illume_kbd->visible) { e_border_fx_offset(bd, 0, bd->h); - /* layout send */ + _e_mod_kbd_layout_send(); } } + +static void +_e_mod_kbd_layout_send(void) +{ + Ecore_X_Virtual_Keyboard_State type; + + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF; + if ((!_e_illume_kbd->visible) && (!_e_illume_kbd->disabled)) + { + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_ON; + if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_DEFAULT) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_ON; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_ALPHA) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_ALPHA; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_NUMERIC) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_NUMERIC; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_PIN) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_PIN; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_PHONE_NUMBER) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_PHONE_NUMBER; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_HEX) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_HEX; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_TERMINAL) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_TERMINAL; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_PASSWORD) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_PASSWORD; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_IP) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_IP; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_HOST) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_HOST; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_FILE) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_FILE; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_URL) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_URL; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_KEYPAD) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_KEYPAD; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_J2ME) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_J2ME; + else if (_e_illume_kbd->layout == E_ILLUME_KEYBOARD_LAYOUT_NONE) + type = ECORE_X_VIRTUAL_KEYBOARD_STATE_OFF; + } + if (_e_illume_kbd->border) + ecore_x_e_virtual_keyboard_state_send(_e_illume_kbd->border->client.win, type); +}