[Title] Set divided selection info layout due to rotating issue.
[profile/ivi/org.tizen.browser.git] / src / browser-bookmark / browser-bookmark-view.cpp
index 9bf6579..dac73ff 100755 (executable)
@@ -30,6 +30,7 @@ Browser_Bookmark_View::Browser_Bookmark_View(void)
        ,m_top_control_bar(NULL)
        ,m_conformant(NULL)
        ,m_content_layout(NULL)
+       ,m_sub_main_layout(NULL)
        ,m_genlist_content_layout(NULL)
        ,m_genlist_content_box(NULL)
        ,m_main_folder_genlist(NULL)
@@ -68,17 +69,21 @@ Browser_Bookmark_View::Browser_Bookmark_View(void)
 Browser_Bookmark_View::~Browser_Bookmark_View(void)
 {
        BROWSER_LOGD("[%s]", __func__);
-       hide_notify_popup();
+       hide_notify_popup_layout(m_sub_main_layout);
 
        for(int i = 0 ; i < m_sub_folder_list.size() ; i++ ) {
-               if (m_sub_folder_list[i])
+               if (m_sub_folder_list[i]) {
                        delete m_sub_folder_list[i];
+                       m_sub_folder_list.erase(m_sub_folder_list.begin() + i);
+               }
        }
        m_sub_folder_list.clear();
 
        for(int i = 0 ; i < m_main_folder_list.size() ; i++ ) {
-               if (m_main_folder_list[i])
+               if (m_main_folder_list[i]) {
                        delete m_main_folder_list[i];
+                       m_main_folder_list.erase(m_main_folder_list.begin() + i);
+               }
        }
        m_main_folder_list.clear();
 
@@ -253,10 +258,17 @@ void Browser_Bookmark_View::return_to_bookmark_view(int added_bookmark_id)
                                genlist = m_sub_folder_genlist;
 
                        item->user_data_1 = (void *)this;
-                       item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_bookmark_genlist_item_class,
+                       if (item->is_folder) {
+                               item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_folder_genlist_item_class,
                                                                        item, NULL, ELM_GENLIST_ITEM_NONE,
                                                                        __bookmark_item_clicked_cb, this);
 
+                       } else {
+                               item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_bookmark_genlist_item_class,
+                                                                       item, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       __bookmark_item_clicked_cb, this);
+                       }
+
                        if (item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
                                m_main_folder_list.push_back(item);
                        else
@@ -266,9 +278,15 @@ void Browser_Bookmark_View::return_to_bookmark_view(int added_bookmark_id)
                        /* If the current folder is sub folder but the saved folder is main folder,
                          * add the saved bookmark item to main folder. */
                        item->user_data_1 = (void *)this;
+                       if (item->is_folder) {
+                       item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_folder_genlist_item_class,
+                                                                       item, NULL, ELM_GENLIST_ITEM_NONE,
+                                                                       __bookmark_item_clicked_cb, this);
+                       } else {
                        item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_bookmark_genlist_item_class,
                                                                        item, NULL, ELM_GENLIST_ITEM_NONE,
                                                                        __bookmark_item_clicked_cb, this);
+                       }
                        m_main_folder_list.push_back(item);
                }
 
@@ -889,13 +907,13 @@ void Browser_Bookmark_View::_show_selection_info(void)
 
        if (editable_folder_count == 0 && editable_item_count == 0) {
                elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
-               hide_notify_popup();
+               hide_notify_popup_layout(m_sub_main_layout);
                return;
        } else
                elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
 
        if (editable_folder_count + editable_item_count == 1) {
-               show_notify_popup(BR_STRING_ONE_ITEM_SELECTED, 0, EINA_TRUE);
+               show_notify_popup_layout(BR_STRING_ONE_ITEM_SELECTED, 0, m_sub_main_layout);
        } else if (editable_folder_count + editable_item_count > 1) {
                char *small_popup_text = NULL;
                int string_len = strlen(BR_STRING_ITEMS_SELECTED) + 4; /* 4 : reserved for maximun count */
@@ -904,7 +922,7 @@ void Browser_Bookmark_View::_show_selection_info(void)
                memset(small_popup_text, 0x00, string_len);
 
                snprintf(small_popup_text, string_len, BR_STRING_ITEMS_SELECTED, editable_folder_count + editable_item_count);
-               show_notify_popup(small_popup_text, 0, EINA_TRUE);
+               show_notify_popup_layout(small_popup_text, 0, m_sub_main_layout);
 
                if (small_popup_text)
                        free(small_popup_text);
@@ -915,7 +933,7 @@ void Browser_Bookmark_View::_show_selection_info(void)
 void Browser_Bookmark_View::_set_edit_mode(Eina_Bool edit_mode)
 {
        BROWSER_LOGD("[%s]", __func__);
-       hide_notify_popup();
+       hide_notify_popup_layout(m_sub_main_layout);
 
        if (edit_mode) {
                elm_object_style_set(m_bg, "edit_mode");
@@ -1084,13 +1102,14 @@ void Browser_Bookmark_View::__controlbar_tab_changed_cb(void *data, Evas_Object
                        }
                }
 
-               bookmark_view->hide_notify_popup();
+               bookmark_view->hide_notify_popup_layout(bookmark_view->m_sub_main_layout);
                bookmark_view->_set_view_mode(HISTORY_VIEW);
 
        } else {
                BROWSER_LOGD("tab bookmark");
                if (m_data_manager->get_history_layout()) {
-                       m_data_manager->get_history_layout()->hide_notify_popup();
+                       m_data_manager->get_history_layout()->hide_notify_popup_layout(
+                               m_data_manager->get_history_layout()->m_sub_main_history_layout);
                        bookmark_view->_set_view_mode(BOOKMARK_VIEW);
                }
        }
@@ -1111,7 +1130,7 @@ void Browser_Bookmark_View::__edit_bookmark_item_button_clicked_cb(void *data, E
 
        elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
 
-       bookmark_view->hide_notify_popup();
+       bookmark_view->hide_notify_popup_layout(bookmark_view->m_sub_main_layout);
 
        bookmark_view->_set_edit_mode(EINA_FALSE);
 
@@ -1140,9 +1159,6 @@ void Browser_Bookmark_View::__rename_folder_button_clicked_cb(void *data, Evas_O
 
        elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
 
-       /* If landscape mode, the folder edit field is hided by keypad. So turn to portrait. */
-       elm_win_rotation_with_resize_set(bookmark_view->m_win, 0);
-
        evas_object_data_set(bookmark_view->_get_current_folder_genlist(), "selected_it", it);
 }
 
@@ -1359,6 +1375,30 @@ Evas_Object *Browser_Bookmark_View::__genlist_icon_get_cb(void *data, Evas_Objec
                        evas_object_smart_callback_add(edit_button, "clicked", __slide_edit_button_clicked_cb, item);
                        return edit_button;
                } else if (!strncmp(part, "elm.slide.swallow.2", strlen("elm.slide.swallow.2"))) {
+                       if (item->is_folder) {
+                               Evas_Object *delete_button = elm_button_add(obj);
+                               if (!delete_button) {
+                                       BROWSER_LOGE("elm_button_add is failed.\n");
+                                       return NULL;
+                               }
+                               elm_object_style_set(delete_button, "text_only/sweep");
+                               elm_object_text_set(delete_button, BR_STRING_DELETE);
+                               if (!item->is_editable)
+                                       elm_object_disabled_set(delete_button, EINA_TRUE);
+                               evas_object_smart_callback_add(delete_button, "clicked", __slide_delete_button_clicked_cb, item);
+                               return delete_button;
+                       } else {
+                               Evas_Object *share_button = elm_button_add(obj);
+                               if (!share_button) {
+                                       BROWSER_LOGE("elm_button_add is failed.\n");
+                                       return NULL;
+                               }
+                               elm_object_style_set(share_button, "text_only/sweep");
+                               elm_object_text_set(share_button, BR_STRING_SHARE);
+                               evas_object_smart_callback_add(share_button, "clicked", __slide_share_button_clicked_cb, item);
+                               return share_button;
+                       }
+               } else if (!strncmp(part, "elm.slide.swallow.3", strlen("elm.slide.swallow.3"))) {
                        Evas_Object *delete_button = elm_button_add(obj);
                        if (!delete_button) {
                                BROWSER_LOGE("elm_button_add is failed.\n");
@@ -1631,6 +1671,18 @@ void Browser_Bookmark_View::_delete_bookmark_item_by_slide_button(Browser_Bookma
        show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
 }
 
+void Browser_Bookmark_View::__slide_share_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
+{
+       BROWSER_LOGD("[%s]", __func__);
+       if (!data)
+               return;
+
+       Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
+       Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
+       if (!bookmark_view->_show_share_popup(item->url.c_str()))
+               BROWSER_LOGE("_show_share_popup failed");
+}
+
 void Browser_Bookmark_View::__slide_delete_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
 {
        BROWSER_LOGD("[%s]", __func__);
@@ -2079,7 +2131,7 @@ Evas_Object *Browser_Bookmark_View::_create_main_folder_genlist(void)
                evas_object_smart_callback_add(genlist, "moved", __genlist_move_cb, this);
 
                m_bookmark_genlist_item_class.item_style = "1text.1icon.2";
-               m_bookmark_genlist_item_class.decorate_item_style = "mode/slide2";
+               m_bookmark_genlist_item_class.decorate_item_style = "mode/slide3.text";
                m_bookmark_genlist_item_class.decorate_all_item_style = "edit_default";
                m_bookmark_genlist_item_class.func.text_get = __genlist_label_get_cb;
                m_bookmark_genlist_item_class.func.content_get = __genlist_icon_get_cb;
@@ -2087,6 +2139,13 @@ Evas_Object *Browser_Bookmark_View::_create_main_folder_genlist(void)
                m_bookmark_genlist_item_class.func.del = NULL;
 //             m_bookmark_genlist_item_class.func.moved = __genlist_move_cb;
 
+               m_folder_genlist_item_class.item_style = "1text.1icon.2";
+               m_folder_genlist_item_class.decorate_item_style = "mode/slide2";
+               m_folder_genlist_item_class.decorate_all_item_style = "edit_default";
+               m_folder_genlist_item_class.func.text_get = __genlist_label_get_cb;
+               m_folder_genlist_item_class.func.content_get = __genlist_icon_get_cb;
+               m_folder_genlist_item_class.func.state_get = NULL;
+               m_folder_genlist_item_class.func.del = NULL;
                evas_object_show(genlist);
 
                /* Fill bookmark list */
@@ -2101,9 +2160,16 @@ Evas_Object *Browser_Bookmark_View::_create_main_folder_genlist(void)
                BROWSER_LOGD("bookmark count=%d", size);
                for (int i = 0 ; i < size ; i++ ) {
                        m_main_folder_list[i]->user_data_1 = (void *)this;
-                       m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
-                                               &m_bookmark_genlist_item_class, m_main_folder_list[i], NULL,
-                                               ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
+                       if (m_main_folder_list[i]->is_folder) {
+                               m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
+                                                       &m_folder_genlist_item_class, m_main_folder_list[i], NULL,
+                                                       ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
+
+                       } else {
+                               m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
+                                                       &m_bookmark_genlist_item_class, m_main_folder_list[i], NULL,
+                                                       ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
+                       }
                }
        }
 
@@ -2355,8 +2421,22 @@ Eina_Bool Browser_Bookmark_View::_create_main_layout(void)
        evas_object_show(m_conformant);
 
        elm_object_style_set(m_bg, "default");
-
-       m_genlist_content_layout = elm_layout_add(m_main_layout);
+       m_sub_main_layout = elm_layout_add(m_main_layout);
+       if (!m_sub_main_layout) {
+               BROWSER_LOGE("elm_layout_add failed");
+               return EINA_FALSE;
+       }
+       elm_layout_file_set(m_sub_main_layout,
+                               BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
+                               "browser/selectioninfo");
+       evas_object_size_hint_weight_set(
+                               m_sub_main_layout,
+                               EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
+       evas_object_size_hint_align_set(
+                               m_sub_main_layout,
+                               EVAS_HINT_FILL, EVAS_HINT_FILL);
+
+       m_genlist_content_layout = elm_layout_add(m_sub_main_layout);
        if (!m_genlist_content_layout) {
                BROWSER_LOGE("elm_layout_add failed");
                return EINA_FALSE;
@@ -2397,7 +2477,8 @@ Eina_Bool Browser_Bookmark_View::_create_main_layout(void)
        evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
        evas_object_show(m_back_button);
 
-       elm_object_part_content_set(m_main_layout, "elm.swallow.content", m_genlist_content_layout);
+       elm_object_part_content_set(m_sub_main_layout, "genlist.swallow.contents", m_genlist_content_layout);
+       elm_object_part_content_set(m_main_layout, "elm.swallow.content", m_sub_main_layout);
 
        m_top_control_bar = elm_toolbar_add(m_main_layout);
        if (!m_top_control_bar) {