2 * Copyright 2012 Samsung Electronics Co., Ltd
4 * Licensed under the Flora License, Version 1.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.tizenopensource.org/license
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
18 #include "browser-add-to-bookmark-view.h"
19 #include "browser-bookmark-db.h"
20 #include "browser-bookmark-view.h"
21 #include "browser-history-layout.h"
22 #include "browser-new-folder-view.h"
23 #include "browser-string.h"
24 #include "browser-view.h"
26 #define UPPER_FOLDER_ICON_SIZE (64 * elm_scale_get())
28 Browser_Bookmark_View::Browser_Bookmark_View(void)
30 ,m_top_control_bar(NULL)
32 ,m_content_layout(NULL)
33 ,m_genlist_content_layout(NULL)
34 ,m_genlist_content_box(NULL)
35 ,m_main_folder_genlist(NULL)
36 ,m_sub_folder_genlist(NULL)
38 ,m_upper_folder_list(NULL)
39 ,m_upper_folder_icon(NULL)
40 ,m_view_mode(BOOKMARK_VIEW)
41 ,m_edit_mode_select_all_layout(NULL)
42 ,m_edit_mode_select_all_check_button(NULL)
43 ,m_current_folder_id(BROWSER_BOOKMARK_MAIN_FOLDER_ID)
45 ,m_current_genlist_item_to_edit(NULL)
46 ,m_sub_folder_conformant(NULL)
47 ,m_processing_popup_timer(NULL)
48 ,m_processing_progress_bar(NULL)
51 ,m_total_item_count(0)
52 ,m_processing_popup(NULL)
53 ,m_processing_popup_layout(NULL)
54 ,m_select_all_check_value(EINA_FALSE)
55 ,m_bottom_control_bar(NULL)
56 ,m_bookmark_delete_controlbar_item(NULL)
57 ,m_bookmark_edit_controlbar_item(NULL)
58 ,m_create_folder_controlbar_item(NULL)
59 ,m_current_sweep_item(NULL)
61 ,m_delete_confirm_popup(NULL)
62 ,m_rename_edit_field(NULL)
64 BROWSER_LOGD("[%s]", __func__);
65 m_current_bookmark_navigationbar_title = "";
68 Browser_Bookmark_View::~Browser_Bookmark_View(void)
70 BROWSER_LOGD("[%s]", __func__);
73 for(int i = 0 ; i < m_sub_folder_list.size() ; i++ ) {
74 if (m_sub_folder_list[i])
75 delete m_sub_folder_list[i];
77 m_sub_folder_list.clear();
79 for(int i = 0 ; i < m_main_folder_list.size() ; i++ ) {
80 if (m_main_folder_list[i])
81 delete m_main_folder_list[i];
83 m_main_folder_list.clear();
85 m_data_manager->destroy_bookmark_db();
87 evas_object_smart_callback_del(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb);
89 if (m_delete_confirm_popup)
90 evas_object_del(m_delete_confirm_popup);
94 Eina_Bool Browser_Bookmark_View::init(void)
96 BROWSER_LOGD("[%s]", __func__);
97 if (!m_data_manager->create_bookmark_db()) {
98 BROWSER_LOGE("m_data_manager->create_bookmark_db failed");
102 return _create_main_layout();
105 Eina_Bool Browser_Bookmark_View::append_bookmark_item(const char *title, const char *url)
107 if (!url || !title) {
108 BROWSER_LOGE("url or title is null");
112 if (!m_data_manager->get_bookmark_db()->save_bookmark(BROWSER_BOOKMARK_MAIN_FOLDER_ID, title, url)) {
113 BROWSER_LOGE("save_bookmark failed");
117 Browser_Bookmark_DB::bookmark_item *item = new(nothrow) Browser_Bookmark_DB::bookmark_item;
119 BROWSER_LOGE("new(nothrow) Browser_Bookmark_DB::bookmark_item failed");
123 int bookmark_id = -1;
124 m_data_manager->get_bookmark_db()->get_bookmark_id_by_title_url(BROWSER_BOOKMARK_MAIN_FOLDER_ID, title,
127 item->parent = BROWSER_BOOKMARK_MAIN_FOLDER_ID;
128 item->user_data_1 = (void *)this;
129 item->url = std::string(url);
130 item->title = std::string(title);
131 item->is_folder = EINA_FALSE;
132 item->id = bookmark_id;
133 item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_bookmark_genlist_item_class,
134 item, NULL, ELM_GENLIST_ITEM_NONE,
135 __bookmark_item_clicked_cb, this);
137 m_main_folder_list.push_back(item);
139 _show_empty_content_layout(EINA_FALSE);
144 void Browser_Bookmark_View::delete_bookmark_item(int bookmark_id)
146 BROWSER_LOGD("[%s]", __func__);
149 ret = m_data_manager->get_bookmark_db()->delete_bookmark(bookmark_id);
151 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
155 Elm_Object_Item *it = elm_genlist_first_item_get(m_main_folder_genlist);
157 Browser_Bookmark_DB::bookmark_item *item = NULL;
158 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
159 if (item->id == bookmark_id) {
160 elm_object_item_del(it);
164 it = elm_genlist_item_next_get(it);
167 for(int index = 0 ; index < m_main_folder_list.size() ; index++) {
168 if (m_main_folder_list[index]->id == bookmark_id) {
169 delete m_main_folder_list[index];
170 m_main_folder_list.erase(m_main_folder_list.begin() + index);
175 if (m_main_folder_list.size() == 0) {
176 _show_empty_content_layout(EINA_TRUE);
180 void Browser_Bookmark_View::return_to_bookmark_view(int added_bookmark_id)
182 BROWSER_LOGD("added_bookmark_id = %d", added_bookmark_id);
183 if (m_view_mode == BOOKMARK_VIEW) {
184 /* In case that bookmark view -> Edit bookmark item, then return to bookmark view. */
185 if (elm_genlist_decorate_mode_get(_get_current_folder_genlist())) {
186 int delete_item_count = 0;
187 int editable_item_count = 0;
188 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
190 Browser_Bookmark_DB::bookmark_item *item = NULL;
191 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
192 if (item->is_editable)
193 editable_item_count++;
196 it = elm_genlist_item_next_get(it);
199 if (editable_item_count == delete_item_count)
200 elm_check_state_set(m_edit_mode_select_all_check_button, EINA_TRUE);
202 elm_check_state_set(m_edit_mode_select_all_check_button, EINA_FALSE);
204 if (delete_item_count == 0)
205 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
208 int size = _get_current_folder_item_list().size();
210 _show_empty_content_layout(EINA_TRUE);
212 _show_empty_content_layout(EINA_FALSE);
214 if (!m_data_manager->get_history_layout())
217 /* In case that history view -> add to bookmark by slide-right, then return to history view. */
218 if (m_data_manager->get_history_layout()->m_current_sweep_item) {
219 elm_genlist_item_decorate_mode_set(m_data_manager->get_history_layout()->m_current_sweep_item, "slide", EINA_FALSE);
220 elm_genlist_item_select_mode_set(m_data_manager->get_history_layout()->m_current_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
221 m_data_manager->get_history_layout()->m_current_sweep_item = NULL;
225 /* boomark view -> history -> add to bookmark by slide button, then done. */
226 if (added_bookmark_id != -1) {
227 Browser_Bookmark_DB::bookmark_item *item = m_data_manager->get_bookmark_db()->get_bookmark_item_by_id(added_bookmark_id);
229 BROWSER_LOGE("get_bookmark_item_by_id failed");
233 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
235 Browser_Bookmark_DB::bookmark_item *exist_item = NULL;
236 exist_item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
237 if (exist_item->id == added_bookmark_id) {
238 exist_item->url = item->url;
239 exist_item->title = item->title;
240 exist_item->parent = item->parent;
241 elm_genlist_item_update(it);
244 it = elm_genlist_item_next_get(it);
247 if (m_current_folder_id == item->parent) {
248 /* If the saved bookmark item is in the current folder, just add it to current folder. */
249 Evas_Object *genlist = NULL;
250 if (item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
251 genlist = m_main_folder_genlist;
253 genlist = m_sub_folder_genlist;
255 item->user_data_1 = (void *)this;
256 item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_bookmark_genlist_item_class,
257 item, NULL, ELM_GENLIST_ITEM_NONE,
258 __bookmark_item_clicked_cb, this);
260 if (item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
261 m_main_folder_list.push_back(item);
263 m_sub_folder_list.push_back(item);
264 } else if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID
265 && item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID){
266 /* If the current folder is sub folder but the saved folder is main folder,
267 * add the saved bookmark item to main folder. */
268 item->user_data_1 = (void *)this;
269 item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_bookmark_genlist_item_class,
270 item, NULL, ELM_GENLIST_ITEM_NONE,
271 __bookmark_item_clicked_cb, this);
272 m_main_folder_list.push_back(item);
275 /* If the bookmark is empty page, destroy the empty layout to show the bookmark list. */
276 if (_get_current_folder_item_list().size() == 0)
277 _show_empty_content_layout(EINA_TRUE);
279 _show_empty_content_layout(EINA_FALSE);
283 void Browser_Bookmark_View::__back_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
285 BROWSER_LOGD("[%s]", __func__);
289 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
290 Evas_Object *navi_bar = bookmark_view->m_navi_bar;
292 if (elm_naviframe_bottom_item_get(navi_bar) != elm_naviframe_top_item_get(navi_bar))
293 elm_naviframe_item_pop(navi_bar);
295 /* Set the title if enter the add to bookmark while loading. */
296 m_data_manager->get_browser_view()->return_to_browser_view();
299 void Browser_Bookmark_View::__edit_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
301 BROWSER_LOGD("[%s]", __func__);
305 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
306 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
308 if (bookmark_view->m_view_mode == BOOKMARK_VIEW) {
309 if (!elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist()))
311 bookmark_view->_set_edit_mode(EINA_TRUE);
313 if (bookmark_view->m_rename_edit_field) {
314 Browser_Bookmark_DB::bookmark_item *item = NULL;
315 item = (Browser_Bookmark_DB::bookmark_item *)evas_object_data_get(bookmark_view->m_rename_edit_field, "item");
316 Evas_Object *edit_field_entry = br_elm_editfield_entry_get(bookmark_view->m_rename_edit_field);
317 elm_entry_entry_set(edit_field_entry, item->title.c_str());
320 /* Cancel Edit bookmark */
321 bookmark_view->_set_edit_mode(EINA_FALSE);
323 } else if (history_layout) {
324 if (!elm_genlist_decorate_mode_get(history_layout->m_history_genlist)) {
326 history_layout->_set_edit_mode(EINA_TRUE);
328 /* Cancel Delete bookmark */
329 history_layout->_set_edit_mode(EINA_FALSE);
333 if (bookmark_view->m_rename_edit_field)
334 elm_object_focus_set(bookmark_view->m_rename_edit_field, EINA_FALSE);
337 void Browser_Bookmark_View::__delete_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
342 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
343 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
345 if (bookmark_view->m_view_mode == BOOKMARK_VIEW) {
346 if (elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist())) {
347 /* Delete bookmark */
348 Evas_Object *ok_button = bookmark_view->_show_delete_confirm_popup();
350 evas_object_smart_callback_add(ok_button, "clicked",
351 __delete_confirm_response_by_edit_mode_cb, bookmark_view);
355 if (history_layout && elm_genlist_decorate_mode_get(history_layout->m_history_genlist)) {
356 /* Delete bookmark */
357 Evas_Object *ok_button = history_layout->_show_delete_confirm_popup();
359 evas_object_smart_callback_add(ok_button, "clicked",
360 Browser_History_Layout::__delete_confirm_response_by_edit_mode_cb,
366 void Browser_Bookmark_View::_delete_bookmark_item_from_folder_list(Browser_Bookmark_DB::bookmark_item *item)
368 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
369 for(int index = 0 ; index < m_main_folder_list.size() ; index++) {
370 if (m_main_folder_list[index] == item) {
371 delete m_main_folder_list[index];
372 m_main_folder_list.erase(m_main_folder_list.begin() + index);
376 for(int index = 0 ; index < m_sub_folder_list.size() ; index++) {
377 if (m_sub_folder_list[index] == item) {
378 delete m_sub_folder_list[index];
379 m_sub_folder_list.erase(m_sub_folder_list.begin() + index);
385 void Browser_Bookmark_View::_delete_selected_bookmark(void)
387 BROWSER_LOGD("[%s]", __func__);
388 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
389 Eina_List *delete_item_list = NULL;
390 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
391 int remain_count = 0;
393 Browser_Bookmark_DB::bookmark_item *item = NULL;
394 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
396 delete_item_list = eina_list_append(delete_item_list, it);
399 it = elm_genlist_item_next_get(it);
402 int count = eina_list_count(delete_item_list);
404 if (count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT) {
405 /* If delete more than 100 items, show the processing popup. */
406 _show_delete_processing_popup();
408 for (int i = 0; i < count; i++) {
409 it = (Elm_Object_Item *)eina_list_data_get(delete_item_list);
410 Browser_Bookmark_DB::bookmark_item *item = NULL;
411 Eina_Bool ret = EINA_TRUE;
412 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
413 if (item->is_folder) {
415 ret = bookmark_db->get_folder_id(m_current_folder_id, item->title.c_str(), &folder_id);
417 BROWSER_LOGE("bookmark_db->get_folder_id failed");
420 ret = bookmark_db->delete_folder(folder_id);
422 BROWSER_LOGE("bookmark_db->delete_folder failed");
426 ret = bookmark_db->delete_bookmark(item->id);
428 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
432 delete_item_list = eina_list_next(delete_item_list);
434 _delete_bookmark_item_from_folder_list(item);
436 elm_object_item_del(it);
438 eina_list_free(delete_item_list);
440 elm_check_state_set(m_edit_mode_select_all_check_button, EINA_FALSE);
442 if (remain_count == 0)
443 _show_empty_content_layout(EINA_TRUE);
445 show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
449 void Browser_Bookmark_View::__edit_mode_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
451 BROWSER_LOGD("[%s]", __func__);
454 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
455 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
456 int delete_item_count = 0;
457 int editable_item_count = 0;
459 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
461 Browser_Bookmark_DB::bookmark_item *item = NULL;
462 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
463 if (item->is_editable)
464 editable_item_count++;
467 it = elm_genlist_item_next_get(it);
470 if (editable_item_count == delete_item_count)
471 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_TRUE);
473 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
475 bookmark_view->_show_selection_info();
478 void Browser_Bookmark_View::_show_delete_processing_popup(void)
480 BROWSER_LOGD("[%s]", __func__);
481 if (m_processing_popup)
482 evas_object_del(m_processing_popup);
484 m_processing_popup = elm_popup_add(m_main_layout);
485 if (!m_processing_popup) {
486 BROWSER_LOGE("elm_popup_add failed");
490 if (m_processing_popup_layout)
491 evas_object_del(m_processing_popup_layout);
492 m_processing_popup_layout = elm_layout_add(m_processing_popup);
493 if (!m_processing_popup_layout) {
494 BROWSER_LOGE("elm_layout_add failed");
497 if (!elm_layout_file_set(m_processing_popup_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
498 "browser/popup_center_progressview")) {
499 BROWSER_LOGE("elm_layout_file_set failed");
502 evas_object_size_hint_weight_set(m_processing_popup_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
504 m_processing_progress_bar = elm_progressbar_add(m_processing_popup);
505 elm_object_style_set(m_processing_progress_bar, "list_progress");
506 elm_progressbar_horizontal_set(m_processing_progress_bar, EINA_TRUE);
507 evas_object_size_hint_align_set(m_processing_progress_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
508 evas_object_size_hint_weight_set(m_processing_progress_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
509 elm_progressbar_value_set(m_processing_progress_bar, 0.0);
511 if (m_processing_popup_timer)
512 ecore_timer_del(m_processing_popup_timer);
514 m_processed_count = 0;
515 m_processed_it = elm_genlist_last_item_get(_get_current_folder_genlist());
517 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
518 m_total_item_count = 0;
520 Browser_Bookmark_DB::bookmark_item *item = NULL;
521 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
523 if(item->is_editable && item->is_delete)
524 m_total_item_count++;
526 it = elm_genlist_item_next_get(it);
529 m_processing_popup_timer = ecore_timer_add(0.1, __delete_processing_popup_timer_cb, this);
530 evas_object_show(m_processing_progress_bar);
532 elm_object_part_content_set(m_processing_popup_layout, "elm.swallow.content", m_processing_progress_bar);
533 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.title", BR_STRING_PROCESSING);
534 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.left", "");
535 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.right", "");
537 elm_object_content_set(m_processing_popup, m_processing_popup_layout);
539 Evas_Object *cancel_button = elm_button_add(m_processing_popup);
540 elm_object_text_set(cancel_button, BR_STRING_CANCEL);
541 elm_object_part_content_set(m_processing_popup, "button1", cancel_button);
542 evas_object_smart_callback_add(cancel_button, "clicked", __delete_processing_popup_response_cb, this);
544 evas_object_show(m_processing_popup);
547 Eina_Bool Browser_Bookmark_View::__delete_processing_popup_timer_cb(void *data)
550 return ECORE_CALLBACK_CANCEL;
552 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
553 Evas_Object* progress_bar = bookmark_view->m_processing_progress_bar;
555 Eina_Bool check_value = bookmark_view->m_select_all_check_value;
557 double value = elm_progressbar_value_get(progress_bar);
559 __delete_processing_popup_response_cb(bookmark_view, NULL, NULL);
561 bookmark_view->m_processing_popup_timer = NULL;
562 bookmark_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
564 return ECORE_CALLBACK_CANCEL;
567 while(bookmark_view->m_processed_it) {
568 Browser_Bookmark_DB::bookmark_item *item = NULL;
569 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(bookmark_view->m_processed_it);
571 if(item->is_editable && item->is_delete) {
572 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
574 if (item->is_folder) {
576 ret = bookmark_db->get_folder_id(bookmark_view->m_current_folder_id,
577 item->title.c_str(), &folder_id);
579 BROWSER_LOGE("bookmark_db->get_folder_id failed");
580 return ECORE_CALLBACK_CANCEL;
582 ret = bookmark_db->delete_folder(folder_id);
584 BROWSER_LOGE("bookmark_db->delete_folder failed");
585 return ECORE_CALLBACK_CANCEL;
588 ret = bookmark_db->delete_bookmark(item->id);
590 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
591 return ECORE_CALLBACK_CANCEL;
594 bookmark_view->_delete_bookmark_item_from_folder_list(item);
595 bookmark_view->m_processed_count++;
596 Elm_Object_Item *it = bookmark_view->m_processed_it;
597 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
598 elm_object_item_del(it);
600 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
602 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
604 if (bookmark_view->m_processed_count % 5 == 0)
608 elm_progressbar_value_set(bookmark_view->m_processing_progress_bar,
609 (float)((float)bookmark_view->m_processed_count / (float)bookmark_view->m_total_item_count));
611 char progress_text[20] = {0, };
612 snprintf(progress_text, sizeof(progress_text) - 1, "%d / %d",
613 bookmark_view->m_processed_count, bookmark_view->m_total_item_count);
615 edje_object_part_text_set(elm_layout_edje_get(bookmark_view->m_processing_popup_layout),
616 "elm.text.right", progress_text);
618 return ECORE_CALLBACK_RENEW;
621 void Browser_Bookmark_View::_show_select_processing_popup(void)
623 BROWSER_LOGD("[%s]", __func__);
624 if (m_processing_popup)
625 evas_object_del(m_processing_popup);
627 m_processing_popup = elm_popup_add(m_main_layout);
628 if (!m_processing_popup) {
629 BROWSER_LOGE("elm_popup_add failed");
633 if (m_processing_popup_layout)
634 evas_object_del(m_processing_popup_layout);
635 m_processing_popup_layout = elm_layout_add(m_processing_popup);
636 if (!m_processing_popup_layout) {
637 BROWSER_LOGE("elm_layout_add failed");
640 if (!elm_layout_file_set(m_processing_popup_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
641 "browser/popup_center_progressview")) {
642 BROWSER_LOGE("elm_layout_file_set failed");
645 evas_object_size_hint_weight_set(m_processing_popup_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
647 m_processing_progress_bar = elm_progressbar_add(m_processing_popup);
648 elm_object_style_set(m_processing_progress_bar, "list_progress");
649 elm_progressbar_horizontal_set(m_processing_progress_bar, EINA_TRUE);
650 evas_object_size_hint_align_set(m_processing_progress_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
651 evas_object_size_hint_weight_set(m_processing_progress_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
652 elm_progressbar_value_set(m_processing_progress_bar, 0.0);
654 if (m_processing_popup_timer)
655 ecore_timer_del(m_processing_popup_timer);
657 m_processed_count = 0;
658 m_processed_it = elm_genlist_first_item_get(_get_current_folder_genlist());
660 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
661 m_total_item_count = 0;
663 Browser_Bookmark_DB::bookmark_item *item = NULL;
664 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
666 if(item->is_editable)
667 m_total_item_count++;
669 it = elm_genlist_item_next_get(it);
672 m_processing_popup_timer = ecore_timer_add(0.1, __select_processing_popup_timer_cb, this);
673 evas_object_show(m_processing_progress_bar);
675 elm_object_part_content_set(m_processing_popup_layout, "elm.swallow.content", m_processing_progress_bar);
676 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.title", BR_STRING_PROCESSING);
677 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.left", "");
678 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.right", "");
680 elm_object_content_set(m_processing_popup, m_processing_popup_layout);
682 Evas_Object *cancel_button = elm_button_add(m_processing_popup);
683 elm_object_text_set(cancel_button, BR_STRING_CANCEL);
684 elm_object_part_content_set(m_processing_popup, "button1", cancel_button);
685 evas_object_smart_callback_add(cancel_button, "clicked", __select_processing_popup_response_cb, this);
687 evas_object_show(m_processing_popup);
689 Eina_Bool check_value = elm_check_state_get(m_edit_mode_select_all_check_button);
690 m_select_all_check_value = check_value;
693 elm_check_state_set(m_edit_mode_select_all_check_button, !check_value);
696 Eina_Bool Browser_Bookmark_View::__select_processing_popup_timer_cb(void *data)
699 return ECORE_CALLBACK_CANCEL;
701 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
702 Evas_Object* progress_bar = bookmark_view->m_processing_progress_bar;
704 Eina_Bool check_value = bookmark_view->m_select_all_check_value;
706 double value = elm_progressbar_value_get(progress_bar);
708 __select_processing_popup_response_cb(bookmark_view, NULL, NULL);
710 bookmark_view->m_processing_popup_timer = NULL;
711 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, !check_value);
712 bookmark_view->_show_selection_info();
714 return ECORE_CALLBACK_CANCEL;
717 while(bookmark_view->m_processed_it) {
718 Browser_Bookmark_DB::bookmark_item *item = NULL;
719 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(bookmark_view->m_processed_it);
721 if(item->is_editable) {
722 item->is_delete = !check_value;
723 elm_genlist_item_update(bookmark_view->m_processed_it);
724 bookmark_view->m_processed_count++;
727 bookmark_view->m_processed_it = elm_genlist_item_next_get(bookmark_view->m_processed_it);
729 if (bookmark_view->m_processed_count % 30 == 0)
733 elm_progressbar_value_set(bookmark_view->m_processing_progress_bar,
734 (float)((float)bookmark_view->m_processed_count / (float)bookmark_view->m_total_item_count));
736 char progress_text[20] = {0, };
737 snprintf(progress_text, sizeof(progress_text) - 1, "%d / %d",
738 bookmark_view->m_processed_count, bookmark_view->m_total_item_count);
740 edje_object_part_text_set(elm_layout_edje_get(bookmark_view->m_processing_popup_layout),
741 "elm.text.right", progress_text);
743 return ECORE_CALLBACK_RENEW;
746 void Browser_Bookmark_View::__delete_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
748 BROWSER_LOGD("[%s]", __func__);
752 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
754 bookmark_view->m_processing_progress_bar = NULL;
755 bookmark_view->m_processed_it = NULL;
757 evas_object_del(bookmark_view->m_processing_popup);
759 if (bookmark_view->m_processing_popup_timer) {
760 ecore_timer_del(bookmark_view->m_processing_popup_timer);
761 bookmark_view->m_processing_popup_timer = NULL;
764 bookmark_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
766 vector<Browser_Bookmark_DB::bookmark_item *> item_list = bookmark_view->_get_current_folder_item_list();
767 if (item_list.size() == 0)
768 bookmark_view->_show_empty_content_layout(EINA_TRUE);
771 void Browser_Bookmark_View::__select_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
773 BROWSER_LOGD("[%s]", __func__);
777 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
779 evas_object_del(bookmark_view->m_processing_popup);
780 bookmark_view->m_processing_progress_bar = NULL;
781 bookmark_view->m_processed_it = NULL;
783 if (bookmark_view->m_processing_popup_timer) {
784 ecore_timer_del(bookmark_view->m_processing_popup_timer);
785 bookmark_view->m_processing_popup_timer = NULL;
788 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
791 Browser_Bookmark_DB::bookmark_item *item = NULL;
792 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
794 if(item->is_editable && item->is_delete)
797 it = elm_genlist_item_next_get(it);
801 elm_object_item_disabled_set(bookmark_view->m_bookmark_delete_controlbar_item, EINA_FALSE);
803 elm_object_item_disabled_set(bookmark_view->m_bookmark_delete_controlbar_item, EINA_TRUE);
806 void Browser_Bookmark_View::__edit_mode_select_all_clicked_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
811 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
812 int item_count = bookmark_view->_get_current_folder_item_list().size();
813 BROWSER_LOGD("item_count=%d", item_count);
815 if (item_count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT)
816 bookmark_view->_show_select_processing_popup();
818 Eina_Bool value = elm_check_state_get(bookmark_view->m_edit_mode_select_all_check_button);
819 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, !value);
821 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
823 Browser_Bookmark_DB::bookmark_item *item = NULL;
824 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
826 if(item->is_editable) {
827 item->is_delete = !value;
828 elm_genlist_item_update(it);
831 it = elm_genlist_item_next_get(it);
834 bookmark_view->_show_selection_info();
838 void Browser_Bookmark_View::__edit_mode_select_all_check_changed_cb(void *data,
839 Evas_Object *obj, void *event_info)
841 BROWSER_LOGD("[%s]", __func__);
845 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
846 int item_count = bookmark_view->_get_current_folder_item_list().size();
847 BROWSER_LOGD("item_count=%d", item_count);
848 Eina_Bool value = elm_check_state_get(obj);
850 if (item_count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT) {
851 /* Workaround to share the same code with __edit_mode_select_all_clicked_cb */
852 elm_check_state_set(obj, !value);
853 bookmark_view->_show_select_processing_popup();
855 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
857 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
859 if(item->is_editable) {
860 item->is_delete = value;
861 elm_genlist_item_update(it);
864 it = elm_genlist_item_next_get(it);
867 bookmark_view->_show_selection_info();
871 void Browser_Bookmark_View::_show_selection_info(void)
873 BROWSER_LOGD("[%s]", __func__);
874 int editable_item_count = 0;
875 int editable_folder_count = 0;
877 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
879 Browser_Bookmark_DB::bookmark_item *item = NULL;
880 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
881 if (item->is_delete) {
883 editable_folder_count++;
885 editable_item_count++;
887 it = elm_genlist_item_next_get(it);
890 if (editable_folder_count == 0 && editable_item_count == 0) {
891 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
895 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
897 if (editable_folder_count + editable_item_count == 1) {
898 show_notify_popup(BR_STRING_ONE_ITEM_SELECTED, 0, EINA_TRUE);
899 } else if (editable_folder_count + editable_item_count > 1) {
900 char *small_popup_text = NULL;
901 int string_len = strlen(BR_STRING_ITEMS_SELECTED) + 4; /* 4 : reserved for maximun count */
903 small_popup_text = (char *)malloc(string_len * sizeof(char));
904 memset(small_popup_text, 0x00, string_len);
906 snprintf(small_popup_text, string_len, BR_STRING_ITEMS_SELECTED, editable_folder_count + editable_item_count);
907 show_notify_popup(small_popup_text, 0, EINA_TRUE);
909 if (small_popup_text)
910 free(small_popup_text);
911 small_popup_text = 0x00;
915 void Browser_Bookmark_View::_set_edit_mode(Eina_Bool edit_mode)
917 BROWSER_LOGD("[%s]", __func__);
921 elm_object_style_set(m_bg, "edit_mode");
923 m_edit_mode_select_all_layout = elm_layout_add(m_genlist_content_box);
924 if (!m_edit_mode_select_all_layout) {
925 BROWSER_LOGE("elm_layout_add failed");
928 elm_layout_theme_set(m_edit_mode_select_all_layout, "genlist", "item", "select_all/default");
929 evas_object_size_hint_weight_set(m_edit_mode_select_all_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
930 evas_object_size_hint_align_set(m_edit_mode_select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
931 evas_object_event_callback_add(m_edit_mode_select_all_layout, EVAS_CALLBACK_MOUSE_DOWN,
932 __edit_mode_select_all_clicked_cb, this);
933 m_edit_mode_select_all_check_button = elm_check_add(m_edit_mode_select_all_layout);
934 if (!m_edit_mode_select_all_check_button) {
935 BROWSER_LOGE("elm_layout_add failed");
938 evas_object_smart_callback_add(m_edit_mode_select_all_check_button, "changed",
939 __edit_mode_select_all_check_changed_cb, this);
940 evas_object_propagate_events_set(m_edit_mode_select_all_check_button, EINA_FALSE);
942 elm_object_part_content_set(m_edit_mode_select_all_layout, "elm.icon", m_edit_mode_select_all_check_button);
943 elm_object_text_set(m_edit_mode_select_all_layout, BR_STRING_SELECT_ALL);
945 elm_box_pack_start(m_genlist_content_box, m_edit_mode_select_all_layout);
946 evas_object_show(m_edit_mode_select_all_layout);
948 Elm_Object_Item *it = NULL;
949 Browser_Bookmark_DB::bookmark_item *item = NULL;
950 it = elm_genlist_first_item_get(_get_current_folder_genlist());
952 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
953 if (!item->is_editable)
954 elm_object_item_disabled_set(it, EINA_TRUE);
956 it = elm_genlist_item_next_get(it);
958 elm_genlist_reorder_mode_set(_get_current_folder_genlist(), EINA_TRUE);
959 elm_genlist_decorate_mode_set(_get_current_folder_genlist(), EINA_TRUE);
960 elm_genlist_select_mode_set(_get_current_folder_genlist(), ELM_OBJECT_SELECT_MODE_ALWAYS);
962 _set_navigationbar_title(BR_STRING_SELECT_ITEMS);
964 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
965 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
966 "hide,upper_folder,signal", "");
967 evas_object_hide(m_upper_folder_list);
970 if (!_set_controlbar_type(BOOKMARK_VIEW_EDIT_MODE))
971 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
973 elm_object_style_set(m_bg, "default");
975 if (m_edit_mode_select_all_check_button) {
976 evas_object_del(m_edit_mode_select_all_check_button);
977 m_edit_mode_select_all_check_button = NULL;
979 if (m_edit_mode_select_all_layout) {
980 elm_box_unpack(m_genlist_content_box, m_edit_mode_select_all_layout);
981 evas_object_del(m_edit_mode_select_all_layout);
982 m_edit_mode_select_all_layout = NULL;
985 Elm_Object_Item *it = NULL;
986 Browser_Bookmark_DB::bookmark_item *item = NULL;
987 it = elm_genlist_first_item_get(_get_current_folder_genlist());
989 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
990 if (!item->is_editable)
991 elm_object_item_disabled_set(it, EINA_FALSE);
992 item->is_delete = EINA_FALSE;
993 it = elm_genlist_item_next_get(it);
995 elm_genlist_decorate_mode_set(_get_current_folder_genlist(), EINA_FALSE);
996 elm_genlist_reorder_mode_set(_get_current_folder_genlist(), EINA_FALSE);
998 elm_genlist_select_mode_set(_get_current_folder_genlist(), ELM_OBJECT_SELECT_MODE_DEFAULT);
1000 _set_navigationbar_title(BR_STRING_BOOKMARKS);
1002 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
1003 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
1004 "show,upper_folder,signal", "");
1005 evas_object_show(m_upper_folder_list);
1008 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1009 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
1013 void Browser_Bookmark_View::_set_view_mode(view_mode mode)
1015 BROWSER_LOGD("mode=%d", mode);
1016 Evas_Object *history_layout = NULL;
1017 if (m_data_manager->get_history_layout())
1018 history_layout = m_data_manager->get_history_layout()->get_main_layout();
1021 if (mode == HISTORY_VIEW) {
1022 if (history_layout) {
1023 elm_object_part_content_set(m_main_layout, "elm.swallow.content1", history_layout);
1024 evas_object_show(history_layout);
1027 edje_object_signal_emit(elm_layout_edje_get(m_main_layout), "show,content1,signal", "");
1029 _set_navigationbar_title(BR_STRING_HISTORY);
1031 if (elm_genlist_decorate_mode_get(m_data_manager->get_history_layout()->m_history_genlist)) {
1032 if (!_set_controlbar_type(HISTORY_VIEW_EDIT_MODE))
1033 BROWSER_LOGE("_set_controlbar_type HISTORY_VIEW_EDIT_MODE failed");
1035 if (!_set_controlbar_type(HISTORY_VIEW_DEFAULT))
1036 BROWSER_LOGE("_set_controlbar_type HISTORY_VIEW_DEFAULT failed");
1038 } else if (mode == BOOKMARK_VIEW){
1040 evas_object_hide(history_layout);
1041 edje_object_signal_emit(elm_layout_edje_get(m_main_layout), "show,content0,signal", "");
1043 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1044 _set_navigationbar_title(BR_STRING_BOOKMARKS);
1046 _set_navigationbar_title(m_current_bookmark_navigationbar_title.c_str());
1049 if (elm_genlist_decorate_mode_get(_get_current_folder_genlist())) {
1050 if (!_set_controlbar_type(BOOKMARK_VIEW_EDIT_MODE))
1051 BROWSER_LOGE("_set_controlbar_type BOOKMARK_VIEW_EDIT_MODE failed");
1053 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1054 BROWSER_LOGE("_set_controlbar_type BOOKMARK_VIEW_DEFAULT failed");
1059 void Browser_Bookmark_View::__controlbar_tab_changed_cb(void *data, Evas_Object *obj, void *event_info)
1064 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1065 Elm_Object_Item *selected_item = elm_toolbar_selected_item_get(obj);
1066 Elm_Object_Item *history_item = elm_toolbar_last_item_get(obj);
1067 if (!selected_item) {
1068 BROWSER_LOGD("no item selected");
1072 if (selected_item == history_item) {
1073 BROWSER_LOGD("tab history");
1074 /* history selected */
1075 if (!m_data_manager->get_history_layout()) {
1076 if (!m_data_manager->create_history_layout()) {
1077 BROWSER_LOGE("m_data_manager->create_history_layout() failed");
1081 if (!m_data_manager->get_history_layout()->init()) {
1082 BROWSER_LOGE("get_history_layout()->init() failed");
1087 bookmark_view->hide_notify_popup();
1088 bookmark_view->_set_view_mode(HISTORY_VIEW);
1091 BROWSER_LOGD("tab bookmark");
1092 if (m_data_manager->get_history_layout()) {
1093 m_data_manager->get_history_layout()->hide_notify_popup();
1094 bookmark_view->_set_view_mode(BOOKMARK_VIEW);
1099 /* bookmark -> edit(left option button -> edit button of each bookmark item. */
1100 void Browser_Bookmark_View::__edit_bookmark_item_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1102 BROWSER_LOGD("[%s]", __func__);
1105 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1106 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1108 /* Pass the selected genlist item as parameter when bookmark -> Edit item
1109 because of increase performance. */
1110 bookmark_view->m_current_genlist_item_to_edit = (Elm_Object_Item *)(item->user_data_2);
1112 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
1114 bookmark_view->hide_notify_popup();
1116 bookmark_view->_set_edit_mode(EINA_FALSE);
1118 if (!m_data_manager->create_edit_bookmark_view(item->title, item->url,
1119 bookmark_view->m_current_folder_id)) {
1120 BROWSER_LOGE("create_edit_bookmark_view failed");
1124 if (!m_data_manager->get_edit_bookmark_view()->init()) {
1125 BROWSER_LOGE("get_edit_bookmark_view()->init() failed");
1126 m_data_manager->destroy_edit_bookmark_view();
1131 void Browser_Bookmark_View::__rename_folder_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1133 BROWSER_LOGD("[%s]", __func__);
1136 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1137 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1138 Elm_Object_Item *it = (Elm_Object_Item *)(item->user_data_2);
1139 elm_genlist_item_flip_set(it, EINA_TRUE);
1141 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1143 /* If landscape mode, the folder edit field is hided by keypad. So turn to portrait. */
1144 elm_win_rotation_with_resize_set(bookmark_view->m_win, 0);
1146 evas_object_data_set(bookmark_view->_get_current_folder_genlist(), "selected_it", it);
1149 void Browser_Bookmark_View::__rename_folder_entry_enter_key_cb(void *data, Evas_Object *obj,
1152 BROWSER_LOGD("[%s]", __func__);
1156 Evas_Object *rename_edit_field = (Evas_Object *)data;
1157 elm_object_focus_set(rename_edit_field, EINA_FALSE);
1160 void Browser_Bookmark_View::__rename_folder_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
1162 BROWSER_LOGD("[%s]", __func__);
1166 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1167 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)item->user_data_1;
1169 Evas_Object *genlist = bookmark_view->_get_current_folder_genlist();
1171 Evas_Object *edit_field_entry = obj;
1172 char *markup_text = elm_entry_markup_to_utf8(elm_entry_entry_get(edit_field_entry));
1173 char *text = bookmark_view->_trim(markup_text);
1175 BROWSER_LOGE("elm_entry_markup_to_utf8 failed");
1178 Elm_Object_Item *it = (Elm_Object_Item *)evas_object_data_get(genlist, "selected_it");
1180 Eina_Bool only_has_space = EINA_FALSE;
1181 int space_count = 0;
1182 if (text && strlen(text)) {
1183 for (int i = 0 ; i < strlen(text) ; i++) {
1187 if (space_count == strlen(text))
1188 only_has_space = EINA_TRUE;
1191 if (!text || strlen(text) == 0 || only_has_space) {
1192 bookmark_view->show_msg_popup(BR_STRING_ENTER_FOLDER_NAME);
1193 elm_entry_entry_set(edit_field_entry, item->title.c_str());
1195 if (strcmp(text, item->title.c_str())) {
1196 if (!m_data_manager->get_bookmark_db()->is_duplicated(text)) {
1198 m_data_manager->get_bookmark_db()->modify_bookmark_title(item->id, text);
1200 if (elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist()))
1201 bookmark_view->show_msg_popup(BR_STRING_ALREADY_EXISTS);
1203 std::string folder_name = m_data_manager->get_bookmark_db()->get_folder_name_by_id(item->id);
1204 elm_entry_entry_set(edit_field_entry, folder_name.c_str());
1208 elm_genlist_item_flip_set(it, EINA_FALSE);
1210 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
1212 bookmark_view->m_rename_edit_field = NULL;
1217 void Browser_Bookmark_View::__drag_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1219 BROWSER_LOGD("[%s]", __func__);
1222 #if defined(GENLIST_SWEEP)
1223 void Browser_Bookmark_View::__sweep_right_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1225 BROWSER_LOGD("[%s]", __func__);
1228 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1230 if (elm_genlist_decorate_mode_get(obj))
1233 elm_genlist_item_decorate_mode_set((Elm_Object_Item *)event_info, "slide", EINA_TRUE);
1234 elm_genlist_item_select_mode_set((Elm_Object_Item *)event_info, ELM_OBJECT_SELECT_MODE_NONE);
1237 if (bookmark_view->m_current_sweep_item
1238 && (Elm_Object_Item *)event_info != bookmark_view->m_current_sweep_item) {
1239 elm_genlist_item_select_mode_set(bookmark_view->m_current_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
1240 bookmark_view->m_current_sweep_item = (Elm_Object_Item *)event_info;
1244 void Browser_Bookmark_View::__sweep_cancel_genlist_cb(void *data,
1245 Evas_Object *obj, void *event_info)
1247 BROWSER_LOGD("[%s]", __func__);
1252 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1253 Elm_Object_Item *it = (Elm_Object_Item*)elm_genlist_decorated_item_get(obj);
1255 elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
1256 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
1258 if (it == bookmark_view->m_current_sweep_item)
1259 bookmark_view->m_current_sweep_item = NULL;
1263 void Browser_Bookmark_View::__sweep_left_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1265 BROWSER_LOGD("[%s]", __func__);
1268 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1270 if (elm_genlist_decorate_mode_get(obj))
1273 elm_genlist_item_decorate_mode_set((Elm_Object_Item *)event_info, "slide", EINA_FALSE);
1274 elm_genlist_item_select_mode_set((Elm_Object_Item *)event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
1277 bookmark_view->m_current_sweep_item = NULL;
1281 char *Browser_Bookmark_View::__genlist_label_get_cb(void *data, Evas_Object *obj, const char *part)
1283 BROWSER_LOGD("part=%s", part);
1287 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1289 const char *title = item->title.c_str();
1290 BROWSER_LOGD("title(%p)=%s", title, title);
1291 const char *url = item->url.c_str();
1292 BROWSER_LOGD("url(%p)=%s", url, url);
1294 if (part && strlen(part) > 0) {
1295 if (!strncmp(part,"elm.text", strlen("elm.text"))
1296 || !strncmp(part, "elm.base.text", strlen("elm.base.text"))
1297 || !strncmp(part, "elm.slide.text.1", strlen("elm.slide.text.1"))) {
1298 if (title && strlen(title))
1299 return strdup(title);
1302 } else if (!strncmp(part, "elm.text.sub", strlen("elm.text.sub"))) {
1303 if (url && strlen(url))
1313 Evas_Object *Browser_Bookmark_View::__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part)
1315 BROWSER_LOGD("[%s]", __func__);
1316 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1320 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)item->user_data_1;
1322 if (part && strlen(part) > 0) {
1323 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {
1324 if (item->is_folder) {
1325 Evas_Object *folder_icon = elm_icon_add(obj);
1326 if (!elm_icon_file_set(folder_icon, BROWSER_IMAGE_DIR"/folder.png", NULL)) {
1327 BROWSER_LOGE("elm_icon_file_set is failed.\n");
1330 evas_object_size_hint_aspect_set(folder_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1333 Evas_Object *favicon = NULL;
1334 favicon = m_data_manager->get_browser_view()->get_favicon(item->url.c_str());
1338 Evas_Object *default_icon = elm_icon_add(obj);
1341 if (!elm_icon_file_set(default_icon, BROWSER_IMAGE_DIR"/faviconDefault.png", NULL)) {
1342 BROWSER_LOGE("elm_icon_file_set is failed.\n");
1345 evas_object_size_hint_aspect_set(default_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1346 return default_icon;
1349 } else if (!strncmp(part, "elm.slide.swallow.1", strlen("elm.slide.swallow.1"))) {
1350 Evas_Object *edit_button = elm_button_add(obj);
1352 BROWSER_LOGE("elm_button_add is failed.\n");
1355 elm_object_style_set(edit_button, "text_only/sweep");
1356 elm_object_text_set(edit_button, BR_STRING_EDIT);
1357 if (!item->is_editable)
1358 elm_object_disabled_set(edit_button, EINA_TRUE);
1359 evas_object_smart_callback_add(edit_button, "clicked", __slide_edit_button_clicked_cb, item);
1361 } else if (!strncmp(part, "elm.slide.swallow.2", strlen("elm.slide.swallow.2"))) {
1362 if (item->is_folder) {
1363 Evas_Object *delete_button = elm_button_add(obj);
1364 if (!delete_button) {
1365 BROWSER_LOGE("elm_button_add is failed.\n");
1368 elm_object_style_set(delete_button, "text_only/sweep");
1369 elm_object_text_set(delete_button, BR_STRING_DELETE);
1370 if (!item->is_editable)
1371 elm_object_disabled_set(delete_button, EINA_TRUE);
1372 evas_object_smart_callback_add(delete_button, "clicked", __slide_delete_button_clicked_cb, item);
1373 return delete_button;
1375 Evas_Object *share_button = elm_button_add(obj);
1376 if (!share_button) {
1377 BROWSER_LOGE("elm_button_add is failed.\n");
1380 elm_object_style_set(share_button, "text_only/sweep");
1381 elm_object_text_set(share_button, BR_STRING_SHARE);
1382 evas_object_smart_callback_add(share_button, "clicked", __slide_share_button_clicked_cb, item);
1383 return share_button;
1385 } else if (!strncmp(part, "elm.slide.swallow.3", strlen("elm.slide.swallow.3"))) {
1386 Evas_Object *delete_button = elm_button_add(obj);
1387 if (!delete_button) {
1388 BROWSER_LOGE("elm_button_add is failed.\n");
1391 elm_object_style_set(delete_button, "text_only/sweep");
1392 elm_object_text_set(delete_button, BR_STRING_DELETE);
1393 if (!item->is_editable)
1394 elm_object_disabled_set(delete_button, EINA_TRUE);
1395 evas_object_smart_callback_add(delete_button, "clicked", __slide_delete_button_clicked_cb, item);
1396 return delete_button;
1399 if (elm_genlist_decorate_mode_get(obj)) {
1400 if (!strncmp(part, "elm.edit.icon.1", strlen("elm.edit.icon.1"))) {
1401 Evas_Object *check_button = elm_check_add(obj);
1402 if (!check_button) {
1403 BROWSER_LOGE("elm_check_add is failed.\n");
1406 evas_object_propagate_events_set(check_button, EINA_FALSE);
1408 if (!item->is_editable)
1409 elm_object_disabled_set(check_button, EINA_TRUE);
1411 elm_check_state_pointer_set(check_button, &item->is_delete);
1412 evas_object_smart_callback_add(check_button, "changed",
1413 __edit_mode_item_check_changed_cb, item);
1414 return check_button;
1415 } else if (!strncmp(part, "elm.edit.icon.2", strlen("elm.edit.icon.2"))) {
1416 Evas_Object *button = elm_button_add(obj);
1418 BROWSER_LOGE("elm_button_add is failed.\n");
1421 evas_object_propagate_events_set(button, EINA_FALSE);
1423 if (!item->is_editable)
1424 elm_object_disabled_set(button, EINA_TRUE);
1425 if (item->is_folder) {
1426 elm_object_style_set(button, "rename");
1427 evas_object_smart_callback_add(button, "clicked",
1428 __rename_folder_button_clicked_cb, item);
1430 elm_object_style_set(button, "reveal");
1431 evas_object_smart_callback_add(button, "clicked",
1432 __edit_bookmark_item_button_clicked_cb, item);
1435 } else if (!strncmp(part, "elm.flip.content", strlen("elm.flip.content"))) {
1436 Evas_Object *edit_field = br_elm_editfield_add(obj);
1437 br_elm_editfield_entry_single_line_set(edit_field, EINA_TRUE);
1438 br_elm_editfield_eraser_set(edit_field, EINA_TRUE);
1440 bookmark_view->m_rename_edit_field = edit_field;
1441 evas_object_data_set(bookmark_view->m_rename_edit_field, "item", item);
1443 Evas_Object *edit_field_entry = br_elm_editfield_entry_get(edit_field);
1444 elm_entry_entry_set(edit_field_entry, item->title.c_str());
1445 elm_entry_cursor_end_set(edit_field_entry);
1447 evas_object_smart_callback_add(edit_field_entry, "unfocused",
1448 __rename_folder_unfocus_cb, data);
1449 evas_object_smart_callback_add(edit_field_entry, "activated",
1450 __rename_folder_entry_enter_key_cb, edit_field);
1452 ecore_idler_add(__set_focus_editfield_idler_cb, edit_field);
1462 Eina_Bool Browser_Bookmark_View::_is_empty_folder(string folder_name)
1464 BROWSER_LOGD("[%s]", __func__);
1465 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
1467 Eina_Bool ret = bookmark_db->get_folder_id(BROWSER_BOOKMARK_MAIN_FOLDER_ID, folder_name.c_str(), &folder_id);
1469 BROWSER_LOGE("get_folder_id is failed.");
1473 vector<Browser_Bookmark_DB::bookmark_item *> bookmark_list;
1474 ret = bookmark_db->get_bookmark_list(bookmark_list, folder_id);
1476 BROWSER_LOGE("get_bookmark_list failed");
1480 int count = bookmark_list.size();
1482 for(int i = 0 ; i < bookmark_list.size() ; i++ ) {
1483 if (bookmark_list[i])
1484 delete bookmark_list[i];
1486 bookmark_list.clear();
1494 void Browser_Bookmark_View::__slide_edit_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1496 BROWSER_LOGD("[%s]", __func__);
1500 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1501 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1502 bookmark_view->m_current_genlist_item_to_edit = (Elm_Object_Item *)(item->user_data_2);
1504 if (item->is_folder) {
1505 /* edit folder by slide genlist item */
1506 if (bookmark_view->_is_empty_folder(item->title)) {
1507 bookmark_view->show_msg_popup(BR_STRING_EMPTY);
1511 bookmark_view->_go_to_sub_foler(item->title.c_str());
1513 bookmark_view->_set_edit_mode(EINA_TRUE);
1515 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
1516 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN);
1517 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_TRUE);
1519 edje_object_signal_emit(elm_layout_edje_get(bookmark_view->m_main_layout),
1520 "expand_header_no_animation,signal", "");
1522 /* edit bookmark item by slide genlist item */
1523 /* Pass the selected genlist item as parameter when bookmark -> Edit item
1524 because of increase performance. */
1525 if (!m_data_manager->create_edit_bookmark_view(item->title, item->url,
1526 bookmark_view->m_current_folder_id)) {
1527 BROWSER_LOGE("create_edit_bookmark_view failed");
1531 if (!m_data_manager->get_edit_bookmark_view()->init()) {
1532 BROWSER_LOGE("new get_edit_bookmark_view()->init() failed");
1533 m_data_manager->destroy_edit_bookmark_view();
1538 elm_genlist_item_decorate_mode_set(bookmark_view->m_current_genlist_item_to_edit, "slide", EINA_FALSE);
1539 elm_genlist_item_select_mode_set(bookmark_view->m_current_genlist_item_to_edit, ELM_OBJECT_SELECT_MODE_DEFAULT);
1542 void Browser_Bookmark_View::__delete_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj,
1545 BROWSER_LOGD("event_info = %d", (int)event_info);
1550 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1551 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1553 evas_object_del(bookmark_view->m_delete_confirm_popup);
1555 bookmark_view->_delete_bookmark_item_by_slide_button(item);
1558 void Browser_Bookmark_View::__cancel_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj,
1561 BROWSER_LOGD("event_info = %d", (int)event_info);
1566 Evas_Object *popup = (Evas_Object *)data;
1568 evas_object_del(popup);
1571 void Browser_Bookmark_View::__delete_confirm_response_by_edit_mode_cb(void *data, Evas_Object *obj,
1574 BROWSER_LOGD("event_info = %d", (int)event_info);
1579 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1581 if (bookmark_view->m_delete_confirm_popup) {
1582 evas_object_del(bookmark_view->m_delete_confirm_popup);
1583 bookmark_view->m_delete_confirm_popup = NULL;
1586 bookmark_view->_delete_selected_bookmark();
1588 bookmark_view->_set_edit_mode(EINA_FALSE);
1591 Evas_Object *Browser_Bookmark_View::_show_delete_confirm_popup(void)
1593 BROWSER_LOGD("[%s]", __func__);
1595 m_delete_confirm_popup = elm_popup_add(m_navi_bar);
1596 if (!m_delete_confirm_popup) {
1597 BROWSER_LOGE("elm_popup_add failed");
1601 evas_object_size_hint_weight_set(m_delete_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1602 elm_object_text_set(m_delete_confirm_popup, BR_STRING_DELETE_Q);
1604 Evas_Object *ok_button = elm_button_add(m_delete_confirm_popup);
1605 elm_object_text_set(ok_button, BR_STRING_YES);
1606 elm_object_part_content_set(m_delete_confirm_popup, "button1", ok_button);
1608 Evas_Object *cancel_button = elm_button_add(m_delete_confirm_popup);
1609 elm_object_text_set(cancel_button, BR_STRING_NO);
1610 elm_object_part_content_set(m_delete_confirm_popup, "button2", cancel_button);
1612 evas_object_smart_callback_add(cancel_button, "clicked", __cancel_confirm_response_by_slide_button_cb,
1613 m_delete_confirm_popup);
1615 evas_object_show(m_delete_confirm_popup);
1620 void Browser_Bookmark_View::_delete_bookmark_item_by_slide_button(Browser_Bookmark_DB::bookmark_item *item)
1622 BROWSER_LOGD("[%s]", __func__);
1623 Elm_Object_Item *it = (Elm_Object_Item *)(item->user_data_2);
1624 int ret = EINA_TRUE;
1626 if (item->is_folder) {
1628 ret = m_data_manager->get_bookmark_db()->get_folder_id(m_current_folder_id,
1629 item->title.c_str(), &folder_id);
1631 BROWSER_LOGE("bookmark_db->get_folder_id failed");
1634 ret = m_data_manager->get_bookmark_db()->delete_folder(folder_id);
1636 BROWSER_LOGE("bookmark_db->delete_folder failed");
1640 ret = m_data_manager->get_bookmark_db()->delete_bookmark(item->id);
1642 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
1647 _delete_bookmark_item_from_folder_list(item);
1649 elm_object_item_del(it);
1651 if (_get_current_folder_item_list().size() == 0) {
1652 _show_empty_content_layout(EINA_TRUE);
1655 show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
1658 void Browser_Bookmark_View::__slide_share_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1660 BROWSER_LOGD("[%s]", __func__);
1664 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1665 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1666 if (!bookmark_view->_show_share_popup(item->url.c_str()))
1667 BROWSER_LOGE("_show_share_popup failed");
1670 void Browser_Bookmark_View::__slide_delete_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1672 BROWSER_LOGD("[%s]", __func__);
1676 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1677 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1679 Evas_Object *ok_button = bookmark_view->_show_delete_confirm_popup();
1681 evas_object_smart_callback_add(ok_button, "clicked",
1682 __delete_confirm_response_by_slide_button_cb, item);
1685 void Browser_Bookmark_View::__genlist_move_cb(void *data, Evas_Object *obj, void *event_info)
1687 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
1689 BROWSER_LOGD("moved it = %d", it);
1691 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1692 Elm_Object_Item *next_it = elm_genlist_item_next_get(it);
1693 Browser_Bookmark_DB::bookmark_item *next_item = NULL;
1696 next_item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(next_it);
1698 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1700 Elm_Object_Item *index_it = NULL;
1701 Browser_Bookmark_DB::bookmark_item *test_item = NULL;
1702 it = elm_genlist_first_item_get(obj);
1704 test_item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(index_it);
1705 BROWSER_LOGD("title=%s, order index=%d", test_item->title.c_str(), test_item->order_index);
1706 index_it = elm_genlist_item_next_get(index_it);
1709 if (next_item && (item->order_index < next_item->order_index))
1711 bookmark_view->_reorder_bookmark_item(item->order_index, EINA_TRUE);
1714 bookmark_view->_reorder_bookmark_item(item->order_index, EINA_FALSE);
1717 void Browser_Bookmark_View::_reorder_bookmark_item(int order_index, Eina_Bool is_move_down)
1719 BROWSER_LOGD("[%s]", __func__);
1720 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
1722 Elm_Object_Item *it = NULL;
1723 Elm_Object_Item *next_it = NULL;
1724 Browser_Bookmark_DB::bookmark_item *item = NULL;
1725 Browser_Bookmark_DB::bookmark_item *next_item = NULL;
1726 Eina_Bool ret = EINA_TRUE;
1727 int index = order_index;
1730 it = elm_genlist_first_item_get(_get_current_folder_genlist());
1732 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1733 if (item->order_index > index) {
1734 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1736 BROWSER_LOGD("modify_bookmark_order_index failed");
1737 int temp = item->order_index;
1738 item->order_index = index;
1740 elm_object_item_data_set(it, item);
1741 } else if (item->order_index == order_index) {
1742 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1743 item->order_index = index;
1744 elm_object_item_data_set(it, item);
1746 BROWSER_LOGD("modify_bookmark_order_index failed");
1749 it = elm_genlist_item_next_get(it);
1752 index = order_index;
1753 it = elm_genlist_last_item_get(_get_current_folder_genlist());
1755 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1756 if (item->order_index < index) {
1757 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1759 BROWSER_LOGD("modify_bookmark_order_index failed");
1760 int temp = item->order_index;
1761 item->order_index = index;
1763 elm_object_item_data_set(it, item);
1764 } else if (item->order_index == order_index) {
1765 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1766 item->order_index = index;
1767 elm_object_item_data_set(it, item);
1769 BROWSER_LOGD("modify_bookmark_order_index failed");
1772 it = elm_genlist_item_prev_get(it);
1777 void Browser_Bookmark_View::history_item_clicked(const char *url)
1779 BROWSER_LOGD("[%s]", __func__);
1781 if (m_data_manager->get_browser_view())
1782 m_data_manager->get_browser_view()->load_url(url);
1784 if (elm_naviframe_bottom_item_get(m_navi_bar) != elm_naviframe_top_item_get(m_navi_bar))
1785 elm_naviframe_item_pop(m_navi_bar);
1788 void Browser_Bookmark_View::__bookmark_item_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
1790 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1794 Elm_Object_Item *seleted_item = elm_genlist_selected_item_get(obj);
1795 Browser_Bookmark_DB::bookmark_item *item = NULL;
1796 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(seleted_item);
1798 if (!elm_genlist_decorate_mode_get(obj)) {
1799 if (!item->is_folder) {
1800 std::string url = std::string(item->url.c_str());
1802 if (m_data_manager->get_browser_view())
1803 m_data_manager->get_browser_view()->load_url(url.c_str());
1805 if (elm_naviframe_bottom_item_get(bookmark_view->m_navi_bar)
1806 != elm_naviframe_top_item_get(bookmark_view->m_navi_bar))
1807 elm_naviframe_item_pop(bookmark_view->m_navi_bar);
1809 bookmark_view->_go_to_sub_foler(item->title.c_str());
1811 Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
1812 Browser_Bookmark_DB::bookmark_item *item = NULL;
1813 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1814 if (item && item->is_editable) {
1815 item->is_delete = !(item->is_delete);
1816 elm_genlist_item_update(it);
1819 int delete_item_count = 0;
1820 int editable_item_count = 0;
1821 it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
1823 if (item->is_editable)
1824 editable_item_count++;
1825 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1826 if (item->is_delete)
1827 delete_item_count++;
1828 it = elm_genlist_item_next_get(it);
1831 if (editable_item_count == delete_item_count)
1832 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_TRUE);
1834 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
1836 bookmark_view->_show_selection_info();
1839 elm_genlist_item_selected_set(seleted_item, EINA_FALSE);
1842 void Browser_Bookmark_View::__upper_folder_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
1844 BROWSER_LOGD("[%s]", __func__);
1848 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1849 bookmark_view->_go_up_to_main_folder();
1851 bookmark_view->_set_navigationbar_title(BR_STRING_BOOKMARKS);
1854 Evas_Object *Browser_Bookmark_View::_get_current_folder_genlist(void)
1856 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1857 return m_main_folder_genlist;
1859 return m_sub_folder_genlist;
1862 /* This just returns the copy of item list instance.
1863 * Just refer to read. Do not modify(insert or delete) the contents of this return value.
1864 * It doesn't modify the actual m_main_folder_list, m_sub_folder_list contents. */
1865 vector<Browser_Bookmark_DB::bookmark_item *> Browser_Bookmark_View::_get_current_folder_item_list(void)
1867 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1868 return m_main_folder_list;
1870 return m_sub_folder_list;
1873 void Browser_Bookmark_View::_show_empty_content_layout(Eina_Bool is_empty)
1875 BROWSER_LOGD("is_empty=%d", is_empty);
1876 if (m_view_mode == BOOKMARK_VIEW) {
1877 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1878 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
1882 if (m_edit_mode_select_all_check_button) {
1883 evas_object_del(m_edit_mode_select_all_check_button);
1884 m_edit_mode_select_all_check_button = NULL;
1886 if (m_edit_mode_select_all_layout) {
1887 elm_box_unpack(m_genlist_content_box, m_edit_mode_select_all_layout);
1888 evas_object_del(m_edit_mode_select_all_layout);
1889 m_edit_mode_select_all_layout = NULL;
1892 if (m_no_contents) {
1893 evas_object_del(m_no_contents);
1894 m_no_contents = NULL;
1897 m_no_contents = elm_layout_add(m_main_layout);
1898 if (!m_no_contents) {
1899 BROWSER_LOGE("elm_layout_add failed");
1901 elm_layout_theme_set(m_no_contents, "layout", "no_bookmark", "full");
1902 elm_object_part_text_set (m_no_contents, "elm.text", BR_STRING_NO_BOOKMARKS);
1903 evas_object_size_hint_weight_set(m_no_contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1904 evas_object_size_hint_align_set(m_no_contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
1905 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.no_content", m_no_contents);
1906 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "hide,content_box,signal", "");
1907 evas_object_show(m_no_contents);
1909 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
1911 if (m_no_contents) {
1912 elm_object_part_content_unset(m_genlist_content_layout, "elm.swallow.no_content");
1913 evas_object_del(m_no_contents);
1914 m_no_contents = NULL;
1915 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
1916 "show,content_box,signal", "");
1919 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_FALSE);
1923 void Browser_Bookmark_View::_go_up_to_main_folder(void)
1925 BROWSER_LOGD("[%s]", __func__);
1927 m_current_folder_id = BROWSER_BOOKMARK_MAIN_FOLDER_ID;
1929 elm_box_unpack(m_genlist_content_box, m_sub_folder_conformant);
1930 elm_box_pack_end(m_genlist_content_box, m_conformant);
1931 evas_object_show(m_conformant);
1933 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "hide,upper_folder,signal", "");
1935 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
1936 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN);
1937 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_TRUE);
1939 for(int i = 0 ; i < m_sub_folder_list.size() ; i++) {
1940 if (m_sub_folder_list[i]) {
1941 delete m_sub_folder_list[i];
1942 m_sub_folder_list.erase(m_sub_folder_list.begin() + i);
1945 m_sub_folder_list.clear();
1947 if (m_upper_folder_icon) {
1948 evas_object_del(m_upper_folder_icon);
1949 m_upper_folder_icon = NULL;
1951 if (m_upper_folder_list) {
1952 evas_object_del(m_upper_folder_list);
1953 m_upper_folder_list = NULL;
1955 if (m_sub_folder_genlist) {
1956 evas_object_del(m_sub_folder_genlist);
1957 m_sub_folder_genlist = NULL;
1959 if (m_sub_folder_conformant) {
1960 evas_object_del(m_sub_folder_conformant);
1961 m_sub_folder_conformant = NULL;
1964 if (m_main_folder_list.size() == 0)
1965 _show_empty_content_layout(EINA_TRUE);
1967 _show_empty_content_layout(EINA_FALSE);
1969 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_FALSE);
1972 void Browser_Bookmark_View::_go_to_sub_foler(const char *folder_name)
1975 string navigationbar_title = folder_name;
1976 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_folder_id(BROWSER_BOOKMARK_MAIN_FOLDER_ID,
1977 folder_name, &folder_id);
1979 BROWSER_LOGE("get_folder_id is failed.");
1983 m_sub_folder_genlist = _create_sub_folder_genlist(folder_id);
1984 if (!m_sub_folder_genlist) {
1985 BROWSER_LOGD("_create_sub_folder_genlist failed");
1989 m_current_bookmark_navigationbar_title = navigationbar_title.c_str();
1990 _set_navigationbar_title(navigationbar_title.c_str());
1992 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_TRUE);
1994 if (!m_sub_folder_list.size())
1995 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
1998 void Browser_Bookmark_View::_set_navigationbar_title(const char *title)
2000 BROWSER_LOGD("title=[%s]", title);
2001 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
2002 if (elm_object_item_content_get(top_it) == m_main_layout)
2003 elm_object_item_text_set(top_it, title);
2006 Evas_Object *Browser_Bookmark_View::_create_sub_folder_genlist(int folder_id)
2008 BROWSER_LOGD("[%s]", __func__);
2009 Evas_Object *genlist = elm_genlist_add(m_main_layout);
2011 elm_box_unpack(m_genlist_content_box, m_conformant);
2012 evas_object_hide(m_conformant);
2014 m_sub_folder_conformant = elm_conformant_add(m_main_layout);
2015 if (!m_sub_folder_conformant) {
2016 BROWSER_LOGE("elm_conformant_add failed");
2019 elm_object_style_set(m_sub_folder_conformant, "internal_layout");
2020 evas_object_size_hint_weight_set(m_sub_folder_conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2021 evas_object_size_hint_align_set(m_sub_folder_conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
2022 evas_object_show(m_sub_folder_conformant);
2023 elm_box_pack_end(m_genlist_content_box, m_sub_folder_conformant);
2025 m_current_folder_id = folder_id;
2027 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2028 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
2029 elm_genlist_block_count_set(genlist, BROWSER_BOOKMARK_GENLIST_BLOCK_COUNT);
2030 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
2032 #if defined(GENLIST_SWEEP)
2033 evas_object_smart_callback_add(genlist, "drag,start,up", __sweep_cancel_genlist_cb, genlist);
2034 evas_object_smart_callback_add(genlist, "drag,start,down", __sweep_cancel_genlist_cb, genlist);
2035 evas_object_smart_callback_add(genlist, "drag,start,right", __sweep_right_genlist_cb, this);
2036 evas_object_smart_callback_add(genlist, "drag,start,left", __sweep_left_genlist_cb, this);
2039 evas_object_smart_callback_add(genlist, "moved", __genlist_move_cb, this);
2041 elm_object_content_set(m_sub_folder_conformant, genlist);
2042 evas_object_show(genlist);
2044 m_upper_folder_list = elm_list_add(m_main_layout);
2045 if (m_upper_folder_list) {
2046 elm_list_bounce_set(m_upper_folder_list, EINA_FALSE, EINA_FALSE);
2047 evas_object_size_hint_weight_set(m_upper_folder_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2048 evas_object_size_hint_align_set(m_upper_folder_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
2049 evas_object_show(m_upper_folder_list);
2050 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.upperlist", m_upper_folder_list);
2051 m_upper_folder_icon = elm_icon_add(m_upper_folder_list);
2052 if (!m_upper_folder_icon) {
2053 BROWSER_LOGE("elm_icon_add failed");
2056 if (!elm_icon_file_set(m_upper_folder_icon, BROWSER_IMAGE_DIR"/I01_icon_upper_folder.png", NULL))
2057 BROWSER_LOGE("elm_icon_file_set is failed. [%s]");
2059 evas_object_size_hint_min_set(m_upper_folder_icon, UPPER_FOLDER_ICON_SIZE, UPPER_FOLDER_ICON_SIZE);
2060 evas_object_resize(m_upper_folder_icon, UPPER_FOLDER_ICON_SIZE, UPPER_FOLDER_ICON_SIZE);
2061 elm_list_item_append(m_upper_folder_list, BR_STRING_BOOKMARKS, m_upper_folder_icon,
2062 NULL, __upper_folder_clicked_cb, this);
2063 evas_object_show(m_upper_folder_icon);
2064 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "show,upper_folder,signal", "");
2066 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
2067 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE);
2068 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_FALSE);
2071 /* Fill bookmark list */
2072 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_bookmark_list(m_sub_folder_list,
2073 m_current_folder_id);
2076 BROWSER_LOGE("get_bookmark_list failed");
2079 int size = m_sub_folder_list.size();
2080 BROWSER_LOGD("bookmark count=%d", size);
2081 for (int i = 0 ; i < size ; i++ ) {
2082 m_sub_folder_list[i]->user_data_1 = (void *)this;
2083 m_sub_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
2084 &m_bookmark_genlist_item_class, m_sub_folder_list[i], NULL,
2085 ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
2089 _show_empty_content_layout(EINA_TRUE);
2091 _show_empty_content_layout(EINA_FALSE);
2097 Evas_Object *Browser_Bookmark_View::_create_main_folder_genlist(void)
2099 BROWSER_LOGD("[%s]", __func__);
2100 Evas_Object *genlist = elm_genlist_add(m_main_layout);
2102 m_current_folder_id = BROWSER_BOOKMARK_MAIN_FOLDER_ID;
2104 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2105 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
2106 elm_genlist_block_count_set(genlist, BROWSER_BOOKMARK_GENLIST_BLOCK_COUNT);
2107 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
2109 #if defined(GENLIST_SWEEP)
2110 evas_object_smart_callback_add(genlist, "drag,start,up", __sweep_cancel_genlist_cb, genlist);
2111 evas_object_smart_callback_add(genlist, "drag,start,down", __sweep_cancel_genlist_cb, genlist);
2112 evas_object_smart_callback_add(genlist, "drag,start,right", __sweep_right_genlist_cb, this);
2113 evas_object_smart_callback_add(genlist, "drag,start,left", __sweep_left_genlist_cb, this);
2115 evas_object_smart_callback_add(genlist, "moved", __genlist_move_cb, this);
2117 m_bookmark_genlist_item_class.item_style = "1text.1icon.2";
2118 m_bookmark_genlist_item_class.decorate_item_style = "mode/slide3.text";
2119 m_bookmark_genlist_item_class.decorate_all_item_style = "edit_default";
2120 m_bookmark_genlist_item_class.func.text_get = __genlist_label_get_cb;
2121 m_bookmark_genlist_item_class.func.content_get = __genlist_icon_get_cb;
2122 m_bookmark_genlist_item_class.func.state_get = NULL;
2123 m_bookmark_genlist_item_class.func.del = NULL;
2124 // m_bookmark_genlist_item_class.func.moved = __genlist_move_cb;
2126 evas_object_show(genlist);
2128 /* Fill bookmark list */
2129 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_bookmark_list(m_main_folder_list,
2130 m_current_folder_id);
2133 BROWSER_LOGE("get_bookmark_list failed");
2136 int size = m_main_folder_list.size();
2137 BROWSER_LOGD("bookmark count=%d", size);
2138 for (int i = 0 ; i < size ; i++ ) {
2139 m_main_folder_list[i]->user_data_1 = (void *)this;
2140 m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
2141 &m_bookmark_genlist_item_class, m_main_folder_list[i], NULL,
2142 ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
2149 void Browser_Bookmark_View::__create_folder_button(void *data, Evas_Object *obj, void *event_info)
2153 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2156 if (!m_data_manager->create_new_folder_view()) {
2157 BROWSER_LOGE("create_new_folder_view failed");
2161 if (!m_data_manager->get_new_folder_view()->init()) {
2162 BROWSER_LOGE("get_new_folder_view()->init() failed");
2163 m_data_manager->destroy_new_folder_view();
2168 void Browser_Bookmark_View::__add_to_bookmark_cb(void *data, Evas_Object *obj, void *event_info)
2172 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2173 if (!m_data_manager->create_add_to_bookmark_view(m_data_manager->get_browser_view()->get_title(),
2174 m_data_manager->get_browser_view()->get_url(), bookmark_view->m_current_folder_id)) {
2175 BROWSER_LOGE("m_data_manager->create_add_to_bookmark_view failed");
2179 if (!m_data_manager->get_add_to_bookmark_view()->init())
2180 m_data_manager->destroy_add_to_bookmark_view();
2183 Eina_Bool Browser_Bookmark_View::_set_controlbar_type(controlbar_type type)
2185 if (m_bottom_control_bar)
2186 evas_object_del(m_bottom_control_bar);
2188 m_bookmark_delete_controlbar_item = NULL;
2189 m_create_folder_controlbar_item = NULL;
2191 if (type == BOOKMARK_VIEW_DEFAULT) {
2192 elm_object_style_set(m_bg, "default");
2194 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2196 m_back_button = elm_button_add(m_main_layout);
2197 if (!m_back_button) {
2198 BROWSER_LOGE("elm_button_add failed");
2201 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2202 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2203 evas_object_show(m_back_button);
2204 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, m_back_button);
2206 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2207 if (!m_bottom_control_bar) {
2208 BROWSER_LOGE("elm_toolbar_add failed");
2211 elm_object_style_set(m_bottom_control_bar, "browser/default");
2212 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2214 m_create_folder_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2215 BROWSER_IMAGE_DIR"/I01_controlbar_icon_create.png",
2216 NULL, __add_to_bookmark_cb, this);
2217 m_bookmark_edit_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2218 BROWSER_IMAGE_DIR"/01_controlbar_icon_compose.png", NULL,
2219 __edit_controlbar_item_clicked_cb, this);
2220 m_create_folder_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2221 BROWSER_IMAGE_DIR"/01_controlbar_icon_create_folder.png",
2222 NULL, __create_folder_button, this);
2223 evas_object_show(m_bottom_control_bar);
2225 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID)
2226 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_TRUE);
2228 if (!_get_current_folder_item_list().size())
2229 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
2231 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2232 } else if (type == BOOKMARK_VIEW_EDIT_MODE || type == HISTORY_VIEW_EDIT_MODE) {
2233 elm_object_style_set(m_bg, "edit_mode");
2235 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2236 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);
2238 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2239 if (!m_bottom_control_bar) {
2240 BROWSER_LOGE("elm_toolbar_add failed");
2243 elm_object_style_set(m_bottom_control_bar, "browser/default");
2244 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2246 Elm_Object_Item *empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2247 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2249 m_bookmark_delete_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2250 BROWSER_IMAGE_DIR"/01_controlbar_icon_delete.png",
2251 NULL, __delete_controlbar_item_clicked_cb, this);
2253 empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2254 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2256 elm_toolbar_item_append(m_bottom_control_bar, BROWSER_IMAGE_DIR"/01_controllbar_icon_close.png", NULL,
2257 __edit_controlbar_item_clicked_cb, this);
2259 if (type == BOOKMARK_VIEW_EDIT_MODE) {
2260 int delete_item_count = 0;
2261 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
2263 Browser_Bookmark_DB::bookmark_item *item = NULL;
2264 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
2265 if (item->is_delete)
2266 delete_item_count++;
2267 it = elm_genlist_item_next_get(it);
2270 if (delete_item_count)
2271 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
2273 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
2275 int delete_item_count = 0;
2276 Elm_Object_Item *it = elm_genlist_first_item_get(m_data_manager->get_history_layout()->m_history_genlist);
2278 Browser_History_DB::history_item *item = NULL;
2279 item = (Browser_History_DB::history_item *)elm_object_item_data_get(it);
2281 /* Ignore the date label. */
2282 if (elm_genlist_item_select_mode_get(it) != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) {
2283 if (item->is_delete)
2284 delete_item_count++;
2286 it = elm_genlist_item_next_get(it);
2288 if (delete_item_count)
2289 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
2291 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
2294 evas_object_show(m_bottom_control_bar);
2295 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2296 } else if (type == HISTORY_VIEW_DEFAULT) {
2297 elm_object_style_set(m_bg, "default");
2299 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2301 m_back_button = elm_button_add(m_main_layout);
2302 if (!m_back_button) {
2303 BROWSER_LOGE("elm_button_add failed");
2306 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2307 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2308 evas_object_show(m_back_button);
2309 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, m_back_button);
2311 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2312 if (!m_bottom_control_bar) {
2313 BROWSER_LOGE("elm_toolbar_add failed");
2316 elm_object_style_set(m_bottom_control_bar, "browser/default");
2317 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2319 Elm_Object_Item *empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2320 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2322 m_bookmark_edit_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2323 BROWSER_IMAGE_DIR"/01_controlbar_icon_compose.png", NULL,
2324 __edit_controlbar_item_clicked_cb, this);
2326 empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2327 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2329 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
2330 if (history_layout) {
2331 if (!history_layout->m_history_list.size())
2332 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
2334 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_FALSE);
2337 evas_object_show(m_bottom_control_bar);
2339 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2342 elm_object_focus_allow_set(m_bottom_control_bar, EINA_FALSE);
2347 void Browser_Bookmark_View::__naviframe_pop_finished_cb(void *data , Evas_Object *obj, void *event_info)
2349 BROWSER_LOGD("[%s]", __func__);
2353 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2354 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
2356 if (bookmark_view->m_navi_it != elm_naviframe_top_item_get(m_navi_bar))
2359 /* Bookmark view -> Edit one bookmark item, then cancel. */
2360 m_data_manager->destroy_edit_bookmark_view();
2362 /* History view -> slide one item -> add to bookmark, then done. */
2363 m_data_manager->destroy_add_to_bookmark_view();
2365 m_data_manager->destroy_new_folder_view();
2368 Eina_Bool Browser_Bookmark_View::_create_main_layout(void)
2370 BROWSER_LOGD("[%s]", __func__);
2371 m_main_layout = elm_layout_add(m_navi_bar);
2372 if (!m_main_layout) {
2373 BROWSER_LOGE("elm_layout_add failed");
2376 if (!elm_layout_file_set(m_main_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
2377 "bookmark/main_layout")) {
2378 BROWSER_LOGE("elm_layout_file_set failed");
2382 elm_win_conformant_set(m_win, EINA_TRUE);
2383 m_conformant = elm_conformant_add(m_main_layout);
2384 if (!m_conformant) {
2385 BROWSER_LOGE("elm_conformant_add failed");
2388 elm_object_style_set(m_conformant, "internal_layout");
2389 evas_object_size_hint_weight_set(m_conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2390 evas_object_size_hint_align_set(m_conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
2391 evas_object_show(m_conformant);
2393 elm_object_style_set(m_bg, "default");
2395 m_genlist_content_layout = elm_layout_add(m_main_layout);
2396 if (!m_genlist_content_layout) {
2397 BROWSER_LOGE("elm_layout_add failed");
2400 if (!elm_layout_file_set(m_genlist_content_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
2401 "bookmark/content_layout")) {
2402 BROWSER_LOGE("elm_layout_file_set failed");
2405 evas_object_size_hint_weight_set(m_genlist_content_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2406 evas_object_show(m_genlist_content_layout);
2407 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "show,content_box,signal", "");
2409 m_genlist_content_box = elm_box_add(m_genlist_content_layout);
2410 if (!m_genlist_content_box) {
2411 BROWSER_LOGE("elm_box_add failed");
2414 evas_object_size_hint_weight_set(m_genlist_content_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2415 evas_object_show(m_genlist_content_box);
2416 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.content_box", m_genlist_content_box);
2417 elm_box_pack_end(m_genlist_content_box, m_conformant);
2419 m_main_folder_genlist = _create_main_folder_genlist();
2420 if (!m_main_folder_genlist) {
2421 BROWSER_LOGE("_create_main_folder_genlist failed");
2425 elm_object_content_set(m_conformant, m_main_folder_genlist);
2427 m_back_button = elm_button_add(m_main_layout);
2428 if (!m_back_button) {
2429 BROWSER_LOGE("elm_button_add failed");
2432 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2433 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2434 evas_object_show(m_back_button);
2436 elm_object_part_content_set(m_main_layout, "elm.swallow.content", m_genlist_content_layout);
2438 m_top_control_bar = elm_toolbar_add(m_main_layout);
2439 if (!m_top_control_bar) {
2440 BROWSER_LOGE("elm_toolbar_add failed");
2443 elm_object_style_set(m_top_control_bar, "browser/tabbar");
2445 elm_toolbar_shrink_mode_set(m_top_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2447 elm_object_part_content_set(m_main_layout, "elm.swallow.tabbar", m_top_control_bar);
2449 Elm_Object_Item *bookmark_tab_item = elm_toolbar_item_append(m_top_control_bar, NULL,
2450 BR_STRING_BOOKMARKS, __controlbar_tab_changed_cb, this);
2451 elm_toolbar_item_append(m_top_control_bar, NULL, BR_STRING_HISTORY, __controlbar_tab_changed_cb, this);
2453 elm_toolbar_select_mode_set(m_top_control_bar, ELM_OBJECT_SELECT_MODE_ALWAYS);
2454 elm_toolbar_item_selected_set(bookmark_tab_item, EINA_TRUE);
2456 evas_object_show(m_top_control_bar);
2458 m_navi_it = elm_naviframe_item_push(m_navi_bar, NULL, m_back_button, NULL,
2459 m_main_layout, "browser/tabbar");
2461 evas_object_smart_callback_add(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb, this);
2463 int size = m_main_folder_list.size();
2465 _show_empty_content_layout(EINA_TRUE);
2467 _show_empty_content_layout(EINA_FALSE);