Fix an issue that make border in homepage setting menu
authorJunghwan <junghwan.kang@samsung.com>
Wed, 5 Sep 2012 13:03:42 +0000 (22:03 +0900)
committerJunghwan <junghwan.kang@samsung.com>
Wed, 5 Sep 2012 13:54:21 +0000 (22:54 +0900)
[Title] Fix an issue that make border in homepage setting menu
[Issue#] N_SE_8708
[Problem] border is not there in url editing field
[Cause] property of the entry which platform suggests has the limitation
[Solution] Make it to use genlist from entry
[Team] Browser UI
[Developer] junghwan kang (junghwan.kang)
[Request] N/A

Change-Id: Ic3f945752288311ceafc3b70abdf885ebb1fb017

src/browser-settings/browser-settings-edit-homepage-view.cpp
src/browser-settings/browser-settings-edit-homepage-view.h

index e87324c..941a1ba 100755 (executable)
@@ -22,7 +22,8 @@
 Browser_Settings_Edit_Homepage_View::Browser_Settings_Edit_Homepage_View(Browser_Settings_Main_View *main_view)\r
 :\r
        m_main_view(main_view)\r
-       ,m_content_layout(NULL)\r
+       ,m_conformant(NULL)\r
+       ,m_genlist(NULL)\r
        ,m_edit_field(NULL)\r
        ,m_done_button(NULL)\r
        ,m_cancel_button(NULL)\r
@@ -33,6 +34,10 @@ Browser_Settings_Edit_Homepage_View::Browser_Settings_Edit_Homepage_View(Browser
 Browser_Settings_Edit_Homepage_View::~Browser_Settings_Edit_Homepage_View(void)\r
 {\r
        BROWSER_LOGD("[%s]", __func__);\r
+\r
+       if (m_conformant)\r
+               evas_object_del(m_conformant);\r
+       m_conformant = NULL;\r
 }\r
 \r
 void Browser_Settings_Edit_Homepage_View::__back_button_clicked_cb(void *data,\r
@@ -118,52 +123,40 @@ void Browser_Settings_Edit_Homepage_View::__edit_field_changed_cb(void *data,
 Eina_Bool Browser_Settings_Edit_Homepage_View::_create_main_layout(void)\r
 {\r
        BROWSER_LOGD("[%s]", __func__);\r
+       elm_win_conformant_set(m_win, EINA_TRUE);\r
 \r
-       m_content_layout = elm_layout_add(m_navi_bar);\r
-       if (!m_content_layout) {\r
-               BROWSER_LOGE("elm_layout_add failed");\r
+       m_conformant = elm_conformant_add(m_win);\r
+       if (!m_conformant) {\r
+               BROWSER_LOGE("elm_conformant_add failed");\r
                return EINA_FALSE;\r
        }\r
-       if (!elm_layout_file_set(m_content_layout, BROWSER_EDJE_DIR"/browser-settings.edj",\r
-                                       "edit_homepage_view")) {\r
-               BROWSER_LOGE("elm_layout_file_set failed");
-               return EINA_FALSE;
-       }\r
-       evas_object_show(m_content_layout);\r
+       elm_object_style_set(m_conformant, "internal_layout");\r
+       evas_object_size_hint_align_set(m_conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);\r
 \r
-       m_edit_field = br_elm_editfield_add(m_content_layout, EINA_TRUE);\r
-       if (!m_edit_field) {\r
-               BROWSER_LOGE("elm_editfield_add failed");\r
+       m_genlist = elm_genlist_add(m_conformant);\r
+       if (!m_genlist) {\r
+               BROWSER_LOGE("elm_genlist_add failed");\r
                return EINA_FALSE;\r
        }\r
-       br_elm_editfield_entry_single_line_set(m_edit_field, EINA_TRUE);\r
-       br_elm_editfield_label_set(m_edit_field, BR_STRING_URL);\r
-       elm_object_part_content_set(m_content_layout, "elm.swallow.entry", m_edit_field);\r
 \r
-       char *homepage = NULL;\r
-       if (br_preference_get_str(USER_HOMEPAGE_KEY, &homepage) == false) {\r
-               BROWSER_LOGE("failed to get %s preference\n", USER_HOMEPAGE_KEY);\r
-               return EINA_FALSE;\r
-       }\r
-       Evas_Object *entry = br_elm_editfield_entry_get(m_edit_field);\r
-       if (homepage) {\r
-               elm_entry_entry_set(entry, homepage);\r
-               free(homepage);\r
-       }\r
-       elm_entry_input_panel_layout_set(entry, ELM_INPUT_PANEL_LAYOUT_URL);\r
-       evas_object_size_hint_weight_set(m_edit_field, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
-       evas_object_size_hint_align_set(m_edit_field, 1, 0.5);\r
-       elm_entry_cursor_end_set(entry);\r
-
-       evas_object_show(m_edit_field);\r
-       elm_object_focus_set(m_edit_field, EINA_TRUE);\r
-       evas_object_smart_callback_add(entry, "changed", __edit_field_changed_cb, this);\r
-\r
-       Elm_Object_Item *navi_it = elm_naviframe_item_push(m_navi_bar, BR_STRING_HOMEPAGE,\r
-                                                       NULL, NULL, m_content_layout, "browser_titlebar");\r
-       elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);\r
-\r
-       m_done_button = elm_button_add(m_content_layout);\r
+       m_item_class.item_style = "1icon";\r
+       m_item_class.func.text_get = NULL;\r
+       m_item_class.func.content_get = __genlist_icon_get_cb;\r
+       m_item_class.func.state_get = NULL;\r
+       m_item_class.func.del = NULL;\r
+\r
+       elm_genlist_item_append(m_genlist, &m_item_class, this, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
+       evas_object_show(m_genlist);\r
+       elm_object_content_set(m_conformant, m_genlist);\r
+\r
+       m_navi_it = elm_naviframe_item_push(m_navi_bar, BR_STRING_HOMEPAGE, NULL, NULL,\r
+                                                                                       m_conformant, "browser_titlebar");\r
+\r
+       evas_object_smart_callback_add(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb, this);\r
+\r
+       elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);\r
+\r
+       m_done_button = elm_button_add(m_conformant);\r
        if (!m_done_button) {\r
                BROWSER_LOGE("elm_button_add failed");\r
                return EINA_FALSE;\r
@@ -172,9 +165,9 @@ Eina_Bool Browser_Settings_Edit_Homepage_View::_create_main_layout(void)
        elm_object_text_set(m_done_button, BR_STRING_DONE);\r
        evas_object_show(m_done_button);\r
        evas_object_smart_callback_add(m_done_button, "clicked", __done_button_clicked_cb, this);\r
-       elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN, m_done_button);\r
+       elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN, m_done_button);\r
 \r
-       m_cancel_button = elm_button_add(m_content_layout);\r
+       m_cancel_button = elm_button_add(m_conformant);\r
        if (!m_cancel_button) {\r
                BROWSER_LOGE("elm_button_add failed");\r
                return EINA_FALSE;\r
@@ -183,8 +176,41 @@ Eina_Bool Browser_Settings_Edit_Homepage_View::_create_main_layout(void)
        elm_object_text_set(m_cancel_button, BR_STRING_CANCEL);\r
        evas_object_show(m_cancel_button);\r
        evas_object_smart_callback_add(m_cancel_button, "clicked", __cancel_button_clicked_cb, this);\r
-       elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, m_cancel_button);\r
+       elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, m_cancel_button);\r
 \r
        return EINA_TRUE;\r
 }\r
 \r
+Evas_Object *Browser_Settings_Edit_Homepage_View::__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part)\r
+{\r
+       if (!data)\r
+               return NULL;\r
+\r
+       Browser_Settings_Edit_Homepage_View *edit_homepage_view = (Browser_Settings_Edit_Homepage_View *)data;\r
+\r
+       if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
+               edit_homepage_view->m_edit_field = br_elm_editfield_add(obj, EINA_TRUE);\r
+               if (!edit_homepage_view->m_edit_field) {\r
+                       BROWSER_LOGE("elm_editfield_add failed");\r
+                       return NULL;\r
+               }\r
+               br_elm_editfield_entry_single_line_set(edit_homepage_view->m_edit_field, EINA_TRUE);\r
+               br_elm_editfield_label_set(edit_homepage_view->m_edit_field, BR_STRING_URL);\r
+\r
+               char *homepage = NULL;\r
+               if (br_preference_get_str(USER_HOMEPAGE_KEY, &homepage) == false)\r
+                       BROWSER_LOGE("failed to get %s preference\n", USER_HOMEPAGE_KEY);\r
+\r
+               elm_entry_entry_set(br_elm_editfield_entry_get(edit_homepage_view->m_edit_field), homepage);\r
+\r
+               evas_object_smart_callback_add(br_elm_editfield_entry_get(edit_homepage_view->m_edit_field),\r
+                                               "changed", __edit_field_changed_cb, edit_homepage_view);\r
+\r
+               ecore_idler_add(edit_homepage_view->__set_focus_editfield_idler_cb, edit_homepage_view->m_edit_field);\r
+               return edit_homepage_view->m_edit_field;\r
+       }\r
+\r
+       return NULL;\r
+}\r
+\r
+\r
index 69893db..99cb138 100755 (executable)
@@ -37,12 +37,17 @@ private:
        static void __done_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
        static void __cancel_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);\r
        static void __edit_field_changed_cb(void *data, Evas_Object *obj, void *event_info);\r
+       static Evas_Object *__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part);\r
 \r
-       Evas_Object *m_content_layout;\r
+       Evas_Object *m_conformant;\r
+       Evas_Object *m_genlist;\r
        Evas_Object *m_edit_field;\r
        Evas_Object *m_done_button;\r
        Evas_Object *m_cancel_button;\r
 \r
+       Elm_Genlist_Item_Class m_item_class;\r
+       Elm_Object_Item *m_navi_it;\r
+\r
        Browser_Settings_Main_View *m_main_view;\r
 };\r
 \r