static Eina_Bool _land_indicator_connect_cb(void *data) { const char *indicator_serv_name; ELM_CONFORMANT_DATA_GET(data, sd); int rot; if (!sd) return ECORE_CALLBACK_CANCEL; if (sd->indmode != ELM_WIN_INDICATOR_SHOW) { sd->land_indi_timer = NULL; return ECORE_CALLBACK_CANCEL; } rot = (intptr_t) evas_object_data_get(sd->landscape_indicator, CONFORMANT_KEY); indicator_serv_name = elm_config_indicator_service_get(rot); if (!indicator_serv_name) { DBG("Conformant cannot find indicator service name: Rotation=%d\n",rot); sd->land_indi_timer = NULL; return ECORE_CALLBACK_CANCEL; } if (strchr(indicator_serv_name, '/')) { sd->port_indi_timer = NULL; return ECORE_CALLBACK_CANCEL; } if (elm_plug_connect(sd->landscape_indicator, indicator_serv_name, 0, EINA_FALSE)) { DBG("Conformant connect to server[%s]\n", indicator_serv_name); sd->land_indi_timer = NULL; return ECORE_CALLBACK_CANCEL; } return ECORE_CALLBACK_RENEW; }
static void _conformant_parts_swallow(Evas_Object *obj) { Evas *e; ELM_CONFORMANT_DATA_GET(obj, sd); ELM_WIDGET_DATA_GET_OR_RETURN(obj, wd); e = evas_object_evas_get(obj); sd->scroller = NULL; //Virtual Keyboard if (edje_object_part_exists(wd->resize_obj, VIRTUALKEYPAD_PART)) { if (!sd->virtualkeypad) { sd->virtualkeypad = evas_object_rectangle_add(e); elm_widget_sub_object_add(obj, sd->virtualkeypad); evas_object_size_hint_max_set(sd->virtualkeypad, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_VIRTUAL_KEYPAD_PART); evas_object_color_set(sd->virtualkeypad, 0, 0, 0, 0); elm_layout_content_set(obj, VIRTUALKEYPAD_PART, sd->virtualkeypad); } else ELM_SAFE_FREE(sd->virtualkeypad, evas_object_del); //Clipboard if (edje_object_part_exists(wd->resize_obj, CLIPBOARD_PART)) { if (!sd->clipboard) { sd->clipboard = evas_object_rectangle_add(e); evas_object_size_hint_min_set(sd->clipboard, -1, 0); evas_object_size_hint_max_set(sd->clipboard, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_CLIPBOARD_PART); evas_object_color_set(sd->clipboard, 0, 0, 0, 0); elm_layout_content_set(obj, CLIPBOARD_PART, sd->clipboard); } else ELM_SAFE_FREE(sd->clipboard, evas_object_del); //Softkey if (edje_object_part_exists(wd->resize_obj, SOFTKEY_PART)) { if (!sd->softkey) { sd->softkey = evas_object_rectangle_add(e); evas_object_size_hint_min_set(sd->softkey, -1, 0); evas_object_size_hint_max_set(sd->softkey, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_SOFTKEY_PART); evas_object_color_set(sd->softkey, 0, 0, 0, 0); elm_layout_content_set(obj, SOFTKEY_PART, sd->softkey); } else ELM_SAFE_FREE(sd->softkey, evas_object_del); }
static void _conformant_part_sizing_eval(Evas_Object *obj, Conformant_Part_Type part_type) { #ifdef HAVE_ELEMENTARY_X Ecore_X_Window zone = 0; Evas_Object *top; #endif int sx = -1, sy = -1, sw = -1, sh = -1; Ecore_X_Window xwin; ELM_CONFORMANT_DATA_GET(obj, sd); #ifdef HAVE_ELEMENTARY_X top = elm_widget_top_get(obj); xwin = elm_win_xwindow_get(top); if (xwin) zone = ecore_x_e_illume_zone_get(xwin); #endif if (part_type & ELM_CONFORMANT_INDICATOR_PART) { if ((!_conformant_part_geometry_get_from_env ("ILLUME_IND", &sx, &sy, &sw, &sh)) && (xwin)) { #ifdef HAVE_ELEMENTARY_X //No information of the indicator geometry, reset the geometry. if (!ecore_x_e_illume_indicator_geometry_get (zone, &sx, &sy, &sw, &sh)) sx = sy = sw = sh = 0; #else ; #endif } _conformant_part_size_hints_set(obj, sd->indicator, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_VIRTUAL_KEYPAD_PART) { if ((!_conformant_part_geometry_get_from_env ("ILLUME_KBD", &sx, &sy, &sw, &sh)) && (xwin)) { #ifdef HAVE_ELEMENTARY_X //No information of the keyboard geometry, reset the geometry. if (!ecore_x_e_illume_keyboard_geometry_get (zone, &sx, &sy, &sw, &sh)) sx = sy = sw = sh = 0; #else ; #endif } _conformant_part_size_hints_set (obj, sd->virtualkeypad, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_SOFTKEY_PART) { if ((!_conformant_part_geometry_get_from_env ("ILLUME_STK", &sx, &sy, &sw, &sh)) && (xwin)) { #ifdef HAVE_ELEMENTARY_X //No information of the softkey geometry, reset the geometry. if (!ecore_x_e_illume_softkey_geometry_get (zone, &sx, &sy, &sw, &sh)) sx = sy = sw = sh = 0; #else ; #endif } _conformant_part_size_hints_set(obj, sd->softkey, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_CLIPBOARD_PART) { if ((!_conformant_part_geometry_get_from_env ("ILLUME_CB", &sx, &sy, &sw, &sh)) && (xwin)) { #ifdef HAVE_ELEMENTARY_X //No information of the clipboard geometry, reset the geometry. if (!ecore_x_e_illume_clipboard_geometry_get (zone, &sx, &sy, &sw, &sh)) sx = sy = sw = sh = 0; #else ; #endif } _conformant_part_size_hints_set(obj, sd->clipboard, sx, sy, sw, sh); } }
static void _conformant_part_sizing_eval(Evas_Object *obj, Conformant_Part_Type part_type) { #ifdef HAVE_ELEMENTARY_X Ecore_X_Window zone = 0; Evas_Object *top; Ecore_X_Window xwin; #endif int sx = -1, sy = -1, sw = -1, sh = -1; ELM_CONFORMANT_DATA_GET(obj, sd); #ifdef HAVE_ELEMENTARY_X top = elm_widget_top_get(obj); xwin = elm_win_xwindow_get(top); if (xwin) zone = ecore_x_e_illume_zone_get(xwin); #endif if (part_type & ELM_CONFORMANT_INDICATOR_PART) { #ifdef HAVE_ELEMENTARY_X if ((!_conformant_part_geometry_get_from_env ("ILLUME_IND", &sx, &sy, &sw, &sh)) && (xwin)) { //No information of the indicator geometry, reset the geometry. if ((!zone) || (!ecore_x_e_illume_indicator_geometry_get (zone, &sx, &sy, &sw, &sh))) sx = sy = sw = sh = 0; } #endif if (((sd->rot == 90) || (sd->rot == 270)) && sd->landscape_indicator) _conformant_part_size_hints_set(obj, sd->landscape_indicator, sx, sy, sw, sh); else if (((sd->rot == 0) || (sd->rot == 180)) && sd->portrait_indicator) _conformant_part_size_hints_set(obj, sd->portrait_indicator, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_VIRTUAL_KEYPAD_PART) { #ifdef HAVE_ELEMENTARY_X if ((!_conformant_part_geometry_get_from_env ("ILLUME_KBD", &sx, &sy, &sw, &sh)) && (xwin)) { //No information of the keyboard geometry, reset the geometry. #ifdef __linux__ DBG("[KEYPAD]:pid=%d, xwin=0x%x, zone=0x%x: no env value and check window property.", getpid(), xwin, zone); #endif if (!ecore_x_e_illume_keyboard_geometry_get(xwin, &sx, &sy, &sw, &sh)) { DBG("[KEYPAD]:no window property, check zone property."); if ((!zone) || (!ecore_x_e_illume_keyboard_geometry_get(zone, &sx, &sy, &sw, &sh))) { DBG("[KEYPAD]:no zone property, reset value."); sx = sy = sw = sh = 0; } } } #endif DBG("[KEYPAD]: size(%d,%d, %dx%d).", sx, sy, sw, sh); _conformant_part_size_hints_set (obj, sd->virtualkeypad, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_SOFTKEY_PART) { #ifdef HAVE_ELEMENTARY_X if ((!_conformant_part_geometry_get_from_env ("ILLUME_STK", &sx, &sy, &sw, &sh)) && (xwin)) { //No information of the softkey geometry, reset the geometry. if ((!zone) || (!ecore_x_e_illume_softkey_geometry_get (zone, &sx, &sy, &sw, &sh))) sx = sy = sw = sh = 0; } #endif _conformant_part_size_hints_set(obj, sd->softkey, sx, sy, sw, sh); } if (part_type & ELM_CONFORMANT_CLIPBOARD_PART) { #ifdef HAVE_ELEMENTARY_X if ((!_conformant_part_geometry_get_from_env ("ILLUME_CB", &sx, &sy, &sw, &sh)) && (xwin)) { //No information of the clipboard geometry, reset the geometry. if ((!zone) || (!ecore_x_e_illume_clipboard_geometry_get (zone, &sx, &sy, &sw, &sh))) sx = sy = sw = sh = 0; } #endif _conformant_part_size_hints_set(obj, sd->clipboard, sx, sy, sw, sh); } }
static void _conformant_parts_swallow(Evas_Object *obj) { Evas *e; ELM_CONFORMANT_DATA_GET(obj, sd); e = evas_object_evas_get(obj); sd->scroller = NULL; //Indicator if (!sd->indicator) { sd->indicator = evas_object_rectangle_add(e); evas_object_size_hint_min_set(sd->indicator, -1, 0); evas_object_size_hint_max_set(sd->indicator, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_INDICATOR_PART); evas_object_color_set(sd->indicator, 0, 0, 0, 0); elm_layout_content_set(obj, "elm.swallow.indicator", sd->indicator); //Virtual Keyboard if (!sd->virtualkeypad) { sd->virtualkeypad = evas_object_rectangle_add(e); elm_widget_sub_object_add(obj, sd->virtualkeypad); evas_object_size_hint_max_set(sd->virtualkeypad, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_VIRTUAL_KEYPAD_PART); evas_object_color_set(sd->virtualkeypad, 0, 0, 0, 0); elm_layout_content_set(obj, "elm.swallow.virtualkeypad", sd->virtualkeypad); //Clipboard if (!sd->clipboard) { sd->clipboard = evas_object_rectangle_add(e); evas_object_size_hint_min_set(sd->clipboard, -1, 0); evas_object_size_hint_max_set(sd->clipboard, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_CLIPBOARD_PART); evas_object_color_set(sd->clipboard, 0, 0, 0, 0); elm_layout_content_set(obj, "elm.swallow.clipboard", sd->clipboard); //Softkey if (!sd->softkey) { sd->softkey = evas_object_rectangle_add(e); evas_object_size_hint_min_set(sd->softkey, -1, 0); evas_object_size_hint_max_set(sd->softkey, -1, 0); } else _conformant_part_sizing_eval(obj, ELM_CONFORMANT_SOFTKEY_PART); evas_object_color_set(sd->softkey, 0, 0, 0, 0); elm_layout_content_set(obj, "elm.swallow.softkey", sd->softkey); }