Change the registering time of input pannel event callback and fix S1-9994 and N_SE...
authorKairong Yin <kairong78.yin@samsung.com>
Sat, 10 Nov 2012 12:07:40 +0000 (20:07 +0800)
committerKairong Yin <kairong78.yin@samsung.com>
Thu, 22 Nov 2012 03:01:15 +0000 (19:01 -0800)
Change-Id: Ie9c56fa9121b0b71ac8611c94bb16a71787a2e4b

setting-about/src/setting-about-main.c
setting-common/include/setting-common-data-type.h
setting-common/src/setting-common-draw-genlist.c

index 1194cd2..539f60a 100755 (executable)
@@ -76,6 +76,7 @@ static void setting_about_main_mouse_up_Gendial_list_cb(void *data,
                                                        Evas_Object *obj,
                                                        void *event_info);
 
+static void _input_panel_event_cb(void *data, Ecore_IMF_Context *ctx, int value);
 static void __setting_about_main_certificates_clicked(void *data);
 static void __setting_about_main_device_name_clicked(void *data, Evas_Object *obj);
 static void __setting_about_main_diagnostics_usage_clicked(void *data, Evas_Object *obj);
@@ -110,7 +111,7 @@ static void __device_name_changed_cb(void *data, Evas_Object *obj)
 {
        retm_if(!data || !obj, "Data parameter is NULL");
        //return if entry is not focused too
-
+       SETTING_TRACE_BEGIN;
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) data;
        SettingAboutUG *ad = list_item->userdata;
@@ -177,8 +178,11 @@ static void __device_name_changed_cb(void *data, Evas_Object *obj)
                        if (navi_it)
                        {
                                Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
-                               setting_disable_evas_object(back_btn);
-                               setting_dim_evas_object(back_btn, TRUE);
+                               if(back_btn)
+                               {
+                                       setting_disable_evas_object(back_btn);
+                                       setting_dim_evas_object(back_btn, TRUE);
+                               }
 
                                Evas_Object *top_r_btn = elm_object_item_part_content_get(navi_it, "title_right_btn");
                                if(top_r_btn)
@@ -198,8 +202,11 @@ static void __device_name_changed_cb(void *data, Evas_Object *obj)
                        if (navi_it)
                        {
                                Evas_Object *back_btn = elm_object_item_part_content_get(navi_it, "prev_btn");
-                               setting_enable_evas_object(back_btn);
-                               setting_undo_dim_evas_object(back_btn, TRUE);
+                               if(back_btn)
+                               {
+                                       setting_enable_evas_object(back_btn);
+                                       setting_undo_dim_evas_object(back_btn, TRUE);
+                               }
 
                                Evas_Object *top_r_btn = elm_object_item_part_content_get(navi_it, "title_right_btn");
                                if(top_r_btn)
@@ -317,7 +324,7 @@ void setting_about_main_get_battery_string(char *str, int size)
 
        int bat_level = -1;
 
-       /* Read battery level from vconf, as system-server sets that key using a 
+       /* Read battery level from vconf, as system-server sets that key using a
          device-specific plugin. Reading directly from /sys fails on different
          devices */
        if (vconf_get_int(VCONFKEY_SYSMAN_BATTERY_CAPACITY, &bat_level) == 0) {
@@ -653,6 +660,7 @@ int setting_about_generate_genlist(void *data)
                        ad->item_dev_name->start_change_cb = (setting_call_back_func)__entry_key_down_cb;
                        ad->item_dev_name->stop_change_cb = __entry_unfocus_cb;
                        ad->item_dev_name->maxlength_reached_cb = __max_len_reached;
+                       ad->item_dev_name->x_callback_cb = _input_panel_event_cb;
                        ad->item_dev_name->limit_filter_data = calloc(1, sizeof(Elm_Entry_Filter_Accept_Set));
 
                        if (ad->item_dev_name->limit_filter_data) {
@@ -1135,7 +1143,8 @@ static void _input_panel_event_cb(void *data, Ecore_IMF_Context *ctx, int value)
 
                if (ad->item_dev_name) {
                        elm_object_focus_set(ad->item_dev_name->eo_check, EINA_FALSE);
-               }//if Setting is overlapped by other app,the entry will lost its focus,
+               }
+               //if Setting is overlapped by other app,the entry will lost its focus,
                //the input pannel will be hided and any popup should be removed to fix blinking issue.
                if (ad->pause_flag)
                        ecore_idler_add(__delay_remove, ad);
@@ -1153,10 +1162,10 @@ static void __setting_about_main_device_name_clicked(void *data, Evas_Object *ob
                elm_object_focus_set(obj, EINA_TRUE);
        }
 
-       Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(obj);
-       setting_retm_if(imf_context == NULL, "imf_context is NULL");
-       ecore_imf_context_input_panel_event_callback_add(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_cb, ad);
-       ecore_imf_context_input_panel_show(imf_context);
+       //Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(obj);
+       //setting_retm_if(imf_context == NULL, "imf_context is NULL");
+       //ecore_imf_context_input_panel_event_callback_add(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, _input_panel_event_cb, ad);
+       //ecore_imf_context_input_panel_show(imf_context);
 }
 
 
index 398bfd8..9f8f8f7 100755 (executable)
@@ -274,6 +274,7 @@ typedef struct _Setting_GenGroupItem_Data {
        setting_call_back_func start_change_cb;
        setting_call_back_func stop_change_cb;
        setting_call_back_func maxlength_reached_cb;
+       void *x_callback_cb;
 
        /* sound/vibration */
        int belongs_to;                                                 /**< 1: slider belongs to sound group. 0: slider belongs to vibration group */
index 2bd29da..76395f1 100755 (executable)
@@ -166,6 +166,7 @@ static void __entry_focused(void *data, Evas_Object *obj, void *event_info) // F
 static void __eraser_clicked(void *data, Evas_Object *obj, const char *emission, const char *source) // When X marked button is clicked, empty entry's contents.
 {
        ret_if(!data);
+       SETTING_TRACE_BEGIN;
        Evas_Object *entry = data;
        elm_entry_entry_set(entry, "");
        elm_object_focus_set(entry, EINA_TRUE);
@@ -174,6 +175,7 @@ static void __eraser_clicked(void *data, Evas_Object *obj, const char *emission,
 static void __chk_changed(void *data, Evas_Object *obj, void *event_info)
 {
        retm_if(data == NULL, "Data parameter is NULL");
+       SETTING_TRACE_BEGIN;
        Setting_GenGroupItem_Data *list_item =
            (Setting_GenGroupItem_Data *) data;
        list_item->chk_status = elm_check_state_get(obj);       /*  for update */
@@ -218,6 +220,7 @@ static void __entry_keydown(void *data, Evas *e, Evas_Object *obj, void *event_i
        retm_if(event_info == NULL, "event_info is NULL");
        Setting_GenGroupItem_Data *list_item = (Setting_GenGroupItem_Data *) data;
        Evas_Event_Key_Down *ev = (Evas_Event_Key_Down *)event_info;
+       SETTING_TRACE_BEGIN;
        if(safeStrCmp(ev->key, "KP_Enter") == 0 //it is for Japanese keyboard to fix N_SE-10719
           || safeStrCmp(ev->key, "Return") == 0) //to disable the 'Enter' orginal function
        {
@@ -563,6 +566,9 @@ static Evas_Object *__add_entry(Setting_GenGroupItem_Data *item_data, Evas_Objec
        }
        evas_object_event_callback_add(entry, EVAS_CALLBACK_KEY_DOWN, __entry_keydown, item_data);
 
+       Ecore_IMF_Context *imf_context = (Ecore_IMF_Context *)elm_entry_imf_context_get(entry);
+       if (imf_context) ecore_imf_context_input_panel_event_callback_add(imf_context, ECORE_IMF_INPUT_PANEL_STATE_EVENT, item_data->x_callback_cb, item_data->userdata);
+
        if (item_data->input_panel_disable_flag) {
                elm_entry_input_panel_enabled_set(entry, EINA_FALSE);
        }