[Bug] Fix P121016-7262 and P121015-5401 .
authorJing Yigang <yigang.jing@samsung.com>
Thu, 18 Oct 2012 03:30:15 +0000 (11:30 +0800)
committerJing Yigang <yigang.jing@samsung.com>
Thu, 18 Oct 2012 03:30:15 +0000 (11:30 +0800)
Change-Id: I0f341ea4c2b0a23a576112ed3d070603d1b653a7

setting-display/include/setting-display.h
setting-display/src/setting-display-screen-mode.c

index 9a32881..fbf1469 100755 (executable)
@@ -112,6 +112,7 @@ struct _SettingDisplayUG {
        Elm_Genlist_Item_Class itc_2text_3_parent;
        Elm_Genlist_Item_Class itc_1icon_1text_sub;
        Elm_Genlist_Item_Class itc_1text;
+       Elm_Genlist_Item_Class itc_screen_mode;
 
        ui_gadget_h ug_gallery;
        ui_gadget_h ug_imageviewer;
index 055aa7f..97da742 100755 (executable)
@@ -38,6 +38,43 @@ setting_view setting_view_display_screen_mode = {
        .cleanup = setting_display_screen_mode_cleanup,
 };
 
+
+static Evas_Object *__gl_content_get(void *data, Evas_Object *obj, const char *part)
+{
+       if (!strcmp(part, "elm.icon")) {
+               Evas_Object *sub_layout = elm_layout_add(obj);
+               elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "screen_mode");
+               evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
+               evas_object_show(sub_layout);
+
+               Evas_Object *image = elm_image_add(obj);
+               elm_image_file_set(image, IMG_SCREEN_MODE, NULL);
+               elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
+               evas_object_show(image);
+
+               int w = 0;
+               int h = 0;
+               elm_image_object_size_get(image, &w, &h);
+               setting_resize_object(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR);
+
+               elm_object_part_content_set(sub_layout, "content", image);
+               return sub_layout;
+       }
+
+       return NULL;
+}
+
+static void __gl_item_del(void *data, Evas_Object *obj)
+{
+       setting_retm_if(data == NULL, "Data parameter is NULL");
+       Setting_GenGroupItem_Data *item_data = (Setting_GenGroupItem_Data *) data;
+       if (item_data) {
+               G_FREE(item_data->keyStr);
+               G_FREE(item_data->sub_desc);
+               FREE(item_data);
+       }
+}
+
 /* ***************************************************
  *
  *basic func
@@ -52,58 +89,48 @@ static int setting_display_screen_mode_create(void *cb)
        SettingDisplayUG *ad = (SettingDisplayUG *) cb;
 
        setting_call_back_func gl_sel_cb = NULL;
-       Evas_Object *scroller = NULL;
+       Evas_Object *genlist = NULL;
        Setting_GenGroupItem_Data *item_data = NULL;
 
-       /* add basic layout */
-       Evas_Object *view_layout = elm_layout_add(ad->win_main_layout);
-       elm_layout_file_set(view_layout, SETTING_THEME_EDJ_NAME, "search_layout");
-       evas_object_size_hint_weight_set(view_layout, EVAS_HINT_EXPAND, 0.0);
-       evas_object_show(view_layout);
-
-       Evas_Object *sub_layout = elm_layout_add(view_layout);
-       elm_layout_file_set(sub_layout, SETTING_THEME_EDJ_NAME, "screen_mode");
-       evas_object_size_hint_weight_set(sub_layout, EVAS_HINT_EXPAND, 0.0);
-       evas_object_show(sub_layout);
-
-       Evas_Object *image = elm_image_add(view_layout);
-       elm_image_file_set(image, IMG_SCREEN_MODE, NULL);
-       elm_image_resizable_set(image, EINA_TRUE, EINA_TRUE);
-       evas_object_show(image);
-
-       elm_object_part_content_set(sub_layout, "content", image);
-       elm_object_part_content_set(view_layout, "search_bar", sub_layout);
-
-       int w = 0;
-       int h = 0;
-       elm_image_object_size_get(image, &w, &h);
-       SETTING_TRACE("w = %d, h = %d", w, h);
-       setting_resize_object(image, w * WIDGET_SCALE_FACTOR, h * WIDGET_SCALE_FACTOR);
+       genlist = elm_genlist_add(ad->navi_bar);
+       retvm_if(genlist == NULL, SETTING_RETURN_FAIL, "scroller == NULL");
+       elm_object_style_set(genlist, "dialogue");
+       elm_genlist_clear(genlist);     /* first to clear list */
 
        setting_push_layout_navi_bar(_(Keystr_ScreenMode), _("IDS_COM_BODY_BACK"),
                                   NULL, NULL,
                                   setting_display_screen_mode_click_softkey_back_cb,
-                                  NULL, NULL, ad, view_layout, ad->navi_bar, NULL);
-
-       scroller = elm_genlist_add(ad->navi_bar);
-       retvm_if(scroller == NULL, SETTING_RETURN_FAIL, "scroller == NULL");
-       elm_object_style_set(scroller, "dialogue");
-       elm_genlist_clear(scroller);    /* first to clear list */
+                                  NULL, NULL, ad, genlist, ad->navi_bar, NULL);
 
-       elm_object_part_content_set(view_layout, "search_list", scroller);
-
-       Elm_Object_Item *item = elm_genlist_item_append(scroller,
+       Elm_Object_Item *item = elm_genlist_item_append(genlist,
                                                        &(itc_sep_line),
                                                        NULL, NULL,
                                                        ELM_GENLIST_ITEM_NONE,
                                                        NULL, NULL);
        elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
+       ad->itc_screen_mode.item_style = "1icon";
+       ad->itc_screen_mode.func.text_get = NULL;
+       ad->itc_screen_mode.func.content_get = __gl_content_get;
+       ad->itc_screen_mode.func.state_get = NULL;
+       ad->itc_screen_mode.func.del = __gl_item_del;
+
+       Setting_GenGroupItem_Data *screen_mode = (Setting_GenGroupItem_Data *) calloc(1, sizeof(Setting_GenGroupItem_Data));
+       setting_retvm_if(!screen_mode, SETTING_RETURN_FAIL, "calloc failed");
+
+       if (screen_mode) {
+               screen_mode->userdata = ad;
+               screen_mode->item = elm_genlist_item_append(genlist, &(ad->itc_screen_mode), screen_mode, NULL,
+                                           ELM_GENLIST_ITEM_NONE, NULL, NULL);
+               elm_genlist_item_select_mode_set(screen_mode->item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+       } else {
+               SETTING_TRACE_ERROR("screen_mode is NULL");
+               return SETTING_RETURN_FAIL;
+       }
 
-       //gl_sel_cb = setting_mouse_up_Gendial_list_radio_cb;
        gl_sel_cb = setting_display_screen_mode_mouse_up_Gendial_list_radio_cb;
 
-       Evas_Object *radio = elm_radio_add(scroller);
+       Evas_Object *radio = elm_radio_add(genlist);
        elm_radio_state_value_set(radio, -1);
 
        char* curmode = vconf_get_str(VCONFKEY_SETAPPL_SCREENMODE_SELNAME);
@@ -113,7 +140,7 @@ static int setting_display_screen_mode_create(void *cb)
 
        for (i=0; i< sizeof(str_in_arr)/sizeof(str_in_arr[0]) ;i++)
        {
-               item_data = setting_create_Gendial_field_1radio(scroller,
+               item_data = setting_create_Gendial_field_1radio(genlist,
                                                        &(itc_1text_1icon_2),
                                                        gl_sel_cb,
                                                        radio,  /* sel data */
@@ -136,6 +163,10 @@ static int setting_display_screen_mode_create(void *cb)
                }
        }
 
+       item = elm_genlist_item_append(genlist, &itc_bottom_seperator, NULL, NULL,
+                               ELM_GENLIST_ITEM_NONE, NULL, NULL);
+       elm_genlist_item_select_mode_set(item, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
+
        setting_view_display_screen_mode.is_create = 1;
        return SETTING_RETURN_SUCCESS;
 }