Add layout sending/updating.
authorChristopher Michael <cpmichael1@comcast.net>
Fri, 19 Feb 2010 15:40:11 +0000 (15:40 +0000)
committerChristopher Michael <cpmichael1@comcast.net>
Fri, 19 Feb 2010 15:40:11 +0000 (15:40 +0000)
SVN revision: 46312

src/modules/illume2/e_mod_kbd.c

index 1865897..2f0ae0b 100644 (file)
@@ -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);
+}