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 if (item->is_folder) {
257 item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_folder_genlist_item_class,
258 item, NULL, ELM_GENLIST_ITEM_NONE,
259 __bookmark_item_clicked_cb, this);
262 item->user_data_2 = (void *)elm_genlist_item_append(genlist, &m_bookmark_genlist_item_class,
263 item, NULL, ELM_GENLIST_ITEM_NONE,
264 __bookmark_item_clicked_cb, this);
267 if (item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
268 m_main_folder_list.push_back(item);
270 m_sub_folder_list.push_back(item);
271 } else if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID
272 && item->parent == BROWSER_BOOKMARK_MAIN_FOLDER_ID){
273 /* If the current folder is sub folder but the saved folder is main folder,
274 * add the saved bookmark item to main folder. */
275 item->user_data_1 = (void *)this;
276 if (item->is_folder) {
277 item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_folder_genlist_item_class,
278 item, NULL, ELM_GENLIST_ITEM_NONE,
279 __bookmark_item_clicked_cb, this);
281 item->user_data_2 = (void *)elm_genlist_item_append(m_main_folder_genlist, &m_bookmark_genlist_item_class,
282 item, NULL, ELM_GENLIST_ITEM_NONE,
283 __bookmark_item_clicked_cb, this);
285 m_main_folder_list.push_back(item);
288 /* If the bookmark is empty page, destroy the empty layout to show the bookmark list. */
289 if (_get_current_folder_item_list().size() == 0)
290 _show_empty_content_layout(EINA_TRUE);
292 _show_empty_content_layout(EINA_FALSE);
296 void Browser_Bookmark_View::__back_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
298 BROWSER_LOGD("[%s]", __func__);
302 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
303 Evas_Object *navi_bar = bookmark_view->m_navi_bar;
305 if (elm_naviframe_bottom_item_get(navi_bar) != elm_naviframe_top_item_get(navi_bar))
306 elm_naviframe_item_pop(navi_bar);
308 /* Set the title if enter the add to bookmark while loading. */
309 m_data_manager->get_browser_view()->return_to_browser_view();
312 void Browser_Bookmark_View::__edit_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
314 BROWSER_LOGD("[%s]", __func__);
318 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
319 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
321 if (bookmark_view->m_view_mode == BOOKMARK_VIEW) {
322 if (!elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist()))
324 bookmark_view->_set_edit_mode(EINA_TRUE);
326 if (bookmark_view->m_rename_edit_field) {
327 Browser_Bookmark_DB::bookmark_item *item = NULL;
328 item = (Browser_Bookmark_DB::bookmark_item *)evas_object_data_get(bookmark_view->m_rename_edit_field, "item");
329 Evas_Object *edit_field_entry = br_elm_editfield_entry_get(bookmark_view->m_rename_edit_field);
330 elm_entry_entry_set(edit_field_entry, item->title.c_str());
333 /* Cancel Edit bookmark */
334 bookmark_view->_set_edit_mode(EINA_FALSE);
336 } else if (history_layout) {
337 if (!elm_genlist_decorate_mode_get(history_layout->m_history_genlist)) {
339 history_layout->_set_edit_mode(EINA_TRUE);
341 /* Cancel Delete bookmark */
342 history_layout->_set_edit_mode(EINA_FALSE);
346 if (bookmark_view->m_rename_edit_field)
347 elm_object_focus_set(bookmark_view->m_rename_edit_field, EINA_FALSE);
350 void Browser_Bookmark_View::__delete_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info)
355 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
356 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
358 if (bookmark_view->m_view_mode == BOOKMARK_VIEW) {
359 if (elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist())) {
360 /* Delete bookmark */
361 Evas_Object *ok_button = bookmark_view->_show_delete_confirm_popup();
363 evas_object_smart_callback_add(ok_button, "clicked",
364 __delete_confirm_response_by_edit_mode_cb, bookmark_view);
368 if (history_layout && elm_genlist_decorate_mode_get(history_layout->m_history_genlist)) {
369 /* Delete bookmark */
370 Evas_Object *ok_button = history_layout->_show_delete_confirm_popup();
372 evas_object_smart_callback_add(ok_button, "clicked",
373 Browser_History_Layout::__delete_confirm_response_by_edit_mode_cb,
379 void Browser_Bookmark_View::_delete_bookmark_item_from_folder_list(Browser_Bookmark_DB::bookmark_item *item)
381 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
382 for(int index = 0 ; index < m_main_folder_list.size() ; index++) {
383 if (m_main_folder_list[index] == item) {
384 delete m_main_folder_list[index];
385 m_main_folder_list.erase(m_main_folder_list.begin() + index);
389 for(int index = 0 ; index < m_sub_folder_list.size() ; index++) {
390 if (m_sub_folder_list[index] == item) {
391 delete m_sub_folder_list[index];
392 m_sub_folder_list.erase(m_sub_folder_list.begin() + index);
398 void Browser_Bookmark_View::_delete_selected_bookmark(void)
400 BROWSER_LOGD("[%s]", __func__);
401 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
402 Eina_List *delete_item_list = NULL;
403 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
404 int remain_count = 0;
406 Browser_Bookmark_DB::bookmark_item *item = NULL;
407 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
409 delete_item_list = eina_list_append(delete_item_list, it);
412 it = elm_genlist_item_next_get(it);
415 int count = eina_list_count(delete_item_list);
417 if (count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT) {
418 /* If delete more than 100 items, show the processing popup. */
419 _show_delete_processing_popup();
421 for (int i = 0; i < count; i++) {
422 it = (Elm_Object_Item *)eina_list_data_get(delete_item_list);
423 Browser_Bookmark_DB::bookmark_item *item = NULL;
424 Eina_Bool ret = EINA_TRUE;
425 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
426 if (item->is_folder) {
428 ret = bookmark_db->get_folder_id(m_current_folder_id, item->title.c_str(), &folder_id);
430 BROWSER_LOGE("bookmark_db->get_folder_id failed");
433 ret = bookmark_db->delete_folder(folder_id);
435 BROWSER_LOGE("bookmark_db->delete_folder failed");
439 ret = bookmark_db->delete_bookmark(item->id);
441 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
445 delete_item_list = eina_list_next(delete_item_list);
447 _delete_bookmark_item_from_folder_list(item);
449 elm_object_item_del(it);
451 eina_list_free(delete_item_list);
453 elm_check_state_set(m_edit_mode_select_all_check_button, EINA_FALSE);
455 if (remain_count == 0)
456 _show_empty_content_layout(EINA_TRUE);
458 show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
462 void Browser_Bookmark_View::__edit_mode_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info)
464 BROWSER_LOGD("[%s]", __func__);
467 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
468 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
469 int delete_item_count = 0;
470 int editable_item_count = 0;
472 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
474 Browser_Bookmark_DB::bookmark_item *item = NULL;
475 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
476 if (item->is_editable)
477 editable_item_count++;
480 it = elm_genlist_item_next_get(it);
483 if (editable_item_count == delete_item_count)
484 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_TRUE);
486 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
488 bookmark_view->_show_selection_info();
491 void Browser_Bookmark_View::_show_delete_processing_popup(void)
493 BROWSER_LOGD("[%s]", __func__);
494 if (m_processing_popup)
495 evas_object_del(m_processing_popup);
497 m_processing_popup = elm_popup_add(m_main_layout);
498 if (!m_processing_popup) {
499 BROWSER_LOGE("elm_popup_add failed");
503 if (m_processing_popup_layout)
504 evas_object_del(m_processing_popup_layout);
505 m_processing_popup_layout = elm_layout_add(m_processing_popup);
506 if (!m_processing_popup_layout) {
507 BROWSER_LOGE("elm_layout_add failed");
510 if (!elm_layout_file_set(m_processing_popup_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
511 "browser/popup_center_progressview")) {
512 BROWSER_LOGE("elm_layout_file_set failed");
515 evas_object_size_hint_weight_set(m_processing_popup_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
517 m_processing_progress_bar = elm_progressbar_add(m_processing_popup);
518 elm_object_style_set(m_processing_progress_bar, "list_progress");
519 elm_progressbar_horizontal_set(m_processing_progress_bar, EINA_TRUE);
520 evas_object_size_hint_align_set(m_processing_progress_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
521 evas_object_size_hint_weight_set(m_processing_progress_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
522 elm_progressbar_value_set(m_processing_progress_bar, 0.0);
524 if (m_processing_popup_timer)
525 ecore_timer_del(m_processing_popup_timer);
527 m_processed_count = 0;
528 m_processed_it = elm_genlist_last_item_get(_get_current_folder_genlist());
530 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
531 m_total_item_count = 0;
533 Browser_Bookmark_DB::bookmark_item *item = NULL;
534 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
536 if(item->is_editable && item->is_delete)
537 m_total_item_count++;
539 it = elm_genlist_item_next_get(it);
542 m_processing_popup_timer = ecore_timer_add(0.1, __delete_processing_popup_timer_cb, this);
543 evas_object_show(m_processing_progress_bar);
545 elm_object_part_content_set(m_processing_popup_layout, "elm.swallow.content", m_processing_progress_bar);
546 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.title", BR_STRING_PROCESSING);
547 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.left", "");
548 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.right", "");
550 elm_object_content_set(m_processing_popup, m_processing_popup_layout);
552 Evas_Object *cancel_button = elm_button_add(m_processing_popup);
553 elm_object_text_set(cancel_button, BR_STRING_CANCEL);
554 elm_object_part_content_set(m_processing_popup, "button1", cancel_button);
555 evas_object_smart_callback_add(cancel_button, "clicked", __delete_processing_popup_response_cb, this);
557 evas_object_show(m_processing_popup);
560 Eina_Bool Browser_Bookmark_View::__delete_processing_popup_timer_cb(void *data)
563 return ECORE_CALLBACK_CANCEL;
565 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
566 Evas_Object* progress_bar = bookmark_view->m_processing_progress_bar;
568 Eina_Bool check_value = bookmark_view->m_select_all_check_value;
570 double value = elm_progressbar_value_get(progress_bar);
572 __delete_processing_popup_response_cb(bookmark_view, NULL, NULL);
574 bookmark_view->m_processing_popup_timer = NULL;
575 bookmark_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
577 return ECORE_CALLBACK_CANCEL;
580 while(bookmark_view->m_processed_it) {
581 Browser_Bookmark_DB::bookmark_item *item = NULL;
582 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(bookmark_view->m_processed_it);
584 if(item->is_editable && item->is_delete) {
585 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
587 if (item->is_folder) {
589 ret = bookmark_db->get_folder_id(bookmark_view->m_current_folder_id,
590 item->title.c_str(), &folder_id);
592 BROWSER_LOGE("bookmark_db->get_folder_id failed");
593 return ECORE_CALLBACK_CANCEL;
595 ret = bookmark_db->delete_folder(folder_id);
597 BROWSER_LOGE("bookmark_db->delete_folder failed");
598 return ECORE_CALLBACK_CANCEL;
601 ret = bookmark_db->delete_bookmark(item->id);
603 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
604 return ECORE_CALLBACK_CANCEL;
607 bookmark_view->_delete_bookmark_item_from_folder_list(item);
608 bookmark_view->m_processed_count++;
609 Elm_Object_Item *it = bookmark_view->m_processed_it;
610 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
611 elm_object_item_del(it);
613 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
615 bookmark_view->m_processed_it = elm_genlist_item_prev_get(bookmark_view->m_processed_it);
617 if (bookmark_view->m_processed_count % 5 == 0)
621 elm_progressbar_value_set(bookmark_view->m_processing_progress_bar,
622 (float)((float)bookmark_view->m_processed_count / (float)bookmark_view->m_total_item_count));
624 char progress_text[20] = {0, };
625 snprintf(progress_text, sizeof(progress_text) - 1, "%d / %d",
626 bookmark_view->m_processed_count, bookmark_view->m_total_item_count);
628 edje_object_part_text_set(elm_layout_edje_get(bookmark_view->m_processing_popup_layout),
629 "elm.text.right", progress_text);
631 return ECORE_CALLBACK_RENEW;
634 void Browser_Bookmark_View::_show_select_processing_popup(void)
636 BROWSER_LOGD("[%s]", __func__);
637 if (m_processing_popup)
638 evas_object_del(m_processing_popup);
640 m_processing_popup = elm_popup_add(m_main_layout);
641 if (!m_processing_popup) {
642 BROWSER_LOGE("elm_popup_add failed");
646 if (m_processing_popup_layout)
647 evas_object_del(m_processing_popup_layout);
648 m_processing_popup_layout = elm_layout_add(m_processing_popup);
649 if (!m_processing_popup_layout) {
650 BROWSER_LOGE("elm_layout_add failed");
653 if (!elm_layout_file_set(m_processing_popup_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
654 "browser/popup_center_progressview")) {
655 BROWSER_LOGE("elm_layout_file_set failed");
658 evas_object_size_hint_weight_set(m_processing_popup_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
660 m_processing_progress_bar = elm_progressbar_add(m_processing_popup);
661 elm_object_style_set(m_processing_progress_bar, "list_progress");
662 elm_progressbar_horizontal_set(m_processing_progress_bar, EINA_TRUE);
663 evas_object_size_hint_align_set(m_processing_progress_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
664 evas_object_size_hint_weight_set(m_processing_progress_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
665 elm_progressbar_value_set(m_processing_progress_bar, 0.0);
667 if (m_processing_popup_timer)
668 ecore_timer_del(m_processing_popup_timer);
670 m_processed_count = 0;
671 m_processed_it = elm_genlist_first_item_get(_get_current_folder_genlist());
673 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
674 m_total_item_count = 0;
676 Browser_Bookmark_DB::bookmark_item *item = NULL;
677 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
679 if(item->is_editable)
680 m_total_item_count++;
682 it = elm_genlist_item_next_get(it);
685 m_processing_popup_timer = ecore_timer_add(0.1, __select_processing_popup_timer_cb, this);
686 evas_object_show(m_processing_progress_bar);
688 elm_object_part_content_set(m_processing_popup_layout, "elm.swallow.content", m_processing_progress_bar);
689 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.title", BR_STRING_PROCESSING);
690 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.left", "");
691 edje_object_part_text_set(elm_layout_edje_get(m_processing_popup_layout), "elm.text.right", "");
693 elm_object_content_set(m_processing_popup, m_processing_popup_layout);
695 Evas_Object *cancel_button = elm_button_add(m_processing_popup);
696 elm_object_text_set(cancel_button, BR_STRING_CANCEL);
697 elm_object_part_content_set(m_processing_popup, "button1", cancel_button);
698 evas_object_smart_callback_add(cancel_button, "clicked", __select_processing_popup_response_cb, this);
700 evas_object_show(m_processing_popup);
702 Eina_Bool check_value = elm_check_state_get(m_edit_mode_select_all_check_button);
703 m_select_all_check_value = check_value;
706 elm_check_state_set(m_edit_mode_select_all_check_button, !check_value);
709 Eina_Bool Browser_Bookmark_View::__select_processing_popup_timer_cb(void *data)
712 return ECORE_CALLBACK_CANCEL;
714 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
715 Evas_Object* progress_bar = bookmark_view->m_processing_progress_bar;
717 Eina_Bool check_value = bookmark_view->m_select_all_check_value;
719 double value = elm_progressbar_value_get(progress_bar);
721 __select_processing_popup_response_cb(bookmark_view, NULL, NULL);
723 bookmark_view->m_processing_popup_timer = NULL;
724 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, !check_value);
725 bookmark_view->_show_selection_info();
727 return ECORE_CALLBACK_CANCEL;
730 while(bookmark_view->m_processed_it) {
731 Browser_Bookmark_DB::bookmark_item *item = NULL;
732 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(bookmark_view->m_processed_it);
734 if(item->is_editable) {
735 item->is_delete = !check_value;
736 elm_genlist_item_update(bookmark_view->m_processed_it);
737 bookmark_view->m_processed_count++;
740 bookmark_view->m_processed_it = elm_genlist_item_next_get(bookmark_view->m_processed_it);
742 if (bookmark_view->m_processed_count % 30 == 0)
746 elm_progressbar_value_set(bookmark_view->m_processing_progress_bar,
747 (float)((float)bookmark_view->m_processed_count / (float)bookmark_view->m_total_item_count));
749 char progress_text[20] = {0, };
750 snprintf(progress_text, sizeof(progress_text) - 1, "%d / %d",
751 bookmark_view->m_processed_count, bookmark_view->m_total_item_count);
753 edje_object_part_text_set(elm_layout_edje_get(bookmark_view->m_processing_popup_layout),
754 "elm.text.right", progress_text);
756 return ECORE_CALLBACK_RENEW;
759 void Browser_Bookmark_View::__delete_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
761 BROWSER_LOGD("[%s]", __func__);
765 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
767 bookmark_view->m_processing_progress_bar = NULL;
768 bookmark_view->m_processed_it = NULL;
770 evas_object_del(bookmark_view->m_processing_popup);
772 if (bookmark_view->m_processing_popup_timer) {
773 ecore_timer_del(bookmark_view->m_processing_popup_timer);
774 bookmark_view->m_processing_popup_timer = NULL;
777 bookmark_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
779 vector<Browser_Bookmark_DB::bookmark_item *> item_list = bookmark_view->_get_current_folder_item_list();
780 if (item_list.size() == 0)
781 bookmark_view->_show_empty_content_layout(EINA_TRUE);
784 void Browser_Bookmark_View::__select_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info)
786 BROWSER_LOGD("[%s]", __func__);
790 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
792 evas_object_del(bookmark_view->m_processing_popup);
793 bookmark_view->m_processing_progress_bar = NULL;
794 bookmark_view->m_processed_it = NULL;
796 if (bookmark_view->m_processing_popup_timer) {
797 ecore_timer_del(bookmark_view->m_processing_popup_timer);
798 bookmark_view->m_processing_popup_timer = NULL;
801 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
804 Browser_Bookmark_DB::bookmark_item *item = NULL;
805 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
807 if(item->is_editable && item->is_delete)
810 it = elm_genlist_item_next_get(it);
814 elm_object_item_disabled_set(bookmark_view->m_bookmark_delete_controlbar_item, EINA_FALSE);
816 elm_object_item_disabled_set(bookmark_view->m_bookmark_delete_controlbar_item, EINA_TRUE);
819 void Browser_Bookmark_View::__edit_mode_select_all_clicked_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info)
824 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
825 int item_count = bookmark_view->_get_current_folder_item_list().size();
826 BROWSER_LOGD("item_count=%d", item_count);
828 if (item_count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT)
829 bookmark_view->_show_select_processing_popup();
831 Eina_Bool value = elm_check_state_get(bookmark_view->m_edit_mode_select_all_check_button);
832 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, !value);
834 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
836 Browser_Bookmark_DB::bookmark_item *item = NULL;
837 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
839 if(item->is_editable) {
840 item->is_delete = !value;
841 elm_genlist_item_update(it);
844 it = elm_genlist_item_next_get(it);
847 bookmark_view->_show_selection_info();
851 void Browser_Bookmark_View::__edit_mode_select_all_check_changed_cb(void *data,
852 Evas_Object *obj, void *event_info)
854 BROWSER_LOGD("[%s]", __func__);
858 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
859 int item_count = bookmark_view->_get_current_folder_item_list().size();
860 BROWSER_LOGD("item_count=%d", item_count);
861 Eina_Bool value = elm_check_state_get(obj);
863 if (item_count >= BROWSER_BOOKMARK_PROCESS_BLOCK_COUNT) {
864 /* Workaround to share the same code with __edit_mode_select_all_clicked_cb */
865 elm_check_state_set(obj, !value);
866 bookmark_view->_show_select_processing_popup();
868 Elm_Object_Item *it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
870 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
872 if(item->is_editable) {
873 item->is_delete = value;
874 elm_genlist_item_update(it);
877 it = elm_genlist_item_next_get(it);
880 bookmark_view->_show_selection_info();
884 void Browser_Bookmark_View::_show_selection_info(void)
886 BROWSER_LOGD("[%s]", __func__);
887 int editable_item_count = 0;
888 int editable_folder_count = 0;
890 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
892 Browser_Bookmark_DB::bookmark_item *item = NULL;
893 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
894 if (item->is_delete) {
896 editable_folder_count++;
898 editable_item_count++;
900 it = elm_genlist_item_next_get(it);
903 if (editable_folder_count == 0 && editable_item_count == 0) {
904 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
908 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
910 if (editable_folder_count + editable_item_count == 1) {
911 show_notify_popup(BR_STRING_ONE_ITEM_SELECTED, 0, EINA_TRUE);
912 } else if (editable_folder_count + editable_item_count > 1) {
913 char *small_popup_text = NULL;
914 int string_len = strlen(BR_STRING_ITEMS_SELECTED) + 4; /* 4 : reserved for maximun count */
916 small_popup_text = (char *)malloc(string_len * sizeof(char));
917 memset(small_popup_text, 0x00, string_len);
919 snprintf(small_popup_text, string_len, BR_STRING_ITEMS_SELECTED, editable_folder_count + editable_item_count);
920 show_notify_popup(small_popup_text, 0, EINA_TRUE);
922 if (small_popup_text)
923 free(small_popup_text);
924 small_popup_text = 0x00;
928 void Browser_Bookmark_View::_set_edit_mode(Eina_Bool edit_mode)
930 BROWSER_LOGD("[%s]", __func__);
934 elm_object_style_set(m_bg, "edit_mode");
936 m_edit_mode_select_all_layout = elm_layout_add(m_genlist_content_box);
937 if (!m_edit_mode_select_all_layout) {
938 BROWSER_LOGE("elm_layout_add failed");
941 elm_layout_theme_set(m_edit_mode_select_all_layout, "genlist", "item", "select_all/default");
942 evas_object_size_hint_weight_set(m_edit_mode_select_all_layout, EVAS_HINT_EXPAND, EVAS_HINT_FILL);
943 evas_object_size_hint_align_set(m_edit_mode_select_all_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
944 evas_object_event_callback_add(m_edit_mode_select_all_layout, EVAS_CALLBACK_MOUSE_DOWN,
945 __edit_mode_select_all_clicked_cb, this);
946 m_edit_mode_select_all_check_button = elm_check_add(m_edit_mode_select_all_layout);
947 if (!m_edit_mode_select_all_check_button) {
948 BROWSER_LOGE("elm_layout_add failed");
951 evas_object_smart_callback_add(m_edit_mode_select_all_check_button, "changed",
952 __edit_mode_select_all_check_changed_cb, this);
953 evas_object_propagate_events_set(m_edit_mode_select_all_check_button, EINA_FALSE);
955 elm_object_part_content_set(m_edit_mode_select_all_layout, "elm.icon", m_edit_mode_select_all_check_button);
956 elm_object_text_set(m_edit_mode_select_all_layout, BR_STRING_SELECT_ALL);
958 elm_box_pack_start(m_genlist_content_box, m_edit_mode_select_all_layout);
959 evas_object_show(m_edit_mode_select_all_layout);
961 Elm_Object_Item *it = NULL;
962 Browser_Bookmark_DB::bookmark_item *item = NULL;
963 it = elm_genlist_first_item_get(_get_current_folder_genlist());
965 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
966 if (!item->is_editable)
967 elm_object_item_disabled_set(it, EINA_TRUE);
969 it = elm_genlist_item_next_get(it);
971 elm_genlist_reorder_mode_set(_get_current_folder_genlist(), EINA_TRUE);
972 elm_genlist_decorate_mode_set(_get_current_folder_genlist(), EINA_TRUE);
973 elm_genlist_select_mode_set(_get_current_folder_genlist(), ELM_OBJECT_SELECT_MODE_ALWAYS);
975 _set_navigationbar_title(BR_STRING_SELECT_ITEMS);
977 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
978 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
979 "hide,upper_folder,signal", "");
980 evas_object_hide(m_upper_folder_list);
983 if (!_set_controlbar_type(BOOKMARK_VIEW_EDIT_MODE))
984 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
986 elm_object_style_set(m_bg, "default");
988 if (m_edit_mode_select_all_check_button) {
989 evas_object_del(m_edit_mode_select_all_check_button);
990 m_edit_mode_select_all_check_button = NULL;
992 if (m_edit_mode_select_all_layout) {
993 elm_box_unpack(m_genlist_content_box, m_edit_mode_select_all_layout);
994 evas_object_del(m_edit_mode_select_all_layout);
995 m_edit_mode_select_all_layout = NULL;
998 Elm_Object_Item *it = NULL;
999 Browser_Bookmark_DB::bookmark_item *item = NULL;
1000 it = elm_genlist_first_item_get(_get_current_folder_genlist());
1002 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1003 if (!item->is_editable)
1004 elm_object_item_disabled_set(it, EINA_FALSE);
1005 item->is_delete = EINA_FALSE;
1006 it = elm_genlist_item_next_get(it);
1008 elm_genlist_decorate_mode_set(_get_current_folder_genlist(), EINA_FALSE);
1009 elm_genlist_reorder_mode_set(_get_current_folder_genlist(), EINA_FALSE);
1011 elm_genlist_select_mode_set(_get_current_folder_genlist(), ELM_OBJECT_SELECT_MODE_DEFAULT);
1013 _set_navigationbar_title(BR_STRING_BOOKMARKS);
1015 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
1016 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
1017 "show,upper_folder,signal", "");
1018 evas_object_show(m_upper_folder_list);
1021 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1022 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
1026 void Browser_Bookmark_View::_set_view_mode(view_mode mode)
1028 BROWSER_LOGD("mode=%d", mode);
1029 Evas_Object *history_layout = NULL;
1030 if (m_data_manager->get_history_layout())
1031 history_layout = m_data_manager->get_history_layout()->get_main_layout();
1034 if (mode == HISTORY_VIEW) {
1035 if (history_layout) {
1036 elm_object_part_content_set(m_main_layout, "elm.swallow.content1", history_layout);
1037 evas_object_show(history_layout);
1040 edje_object_signal_emit(elm_layout_edje_get(m_main_layout), "show,content1,signal", "");
1042 _set_navigationbar_title(BR_STRING_HISTORY);
1044 if (elm_genlist_decorate_mode_get(m_data_manager->get_history_layout()->m_history_genlist)) {
1045 if (!_set_controlbar_type(HISTORY_VIEW_EDIT_MODE))
1046 BROWSER_LOGE("_set_controlbar_type HISTORY_VIEW_EDIT_MODE failed");
1048 if (!_set_controlbar_type(HISTORY_VIEW_DEFAULT))
1049 BROWSER_LOGE("_set_controlbar_type HISTORY_VIEW_DEFAULT failed");
1051 } else if (mode == BOOKMARK_VIEW){
1053 evas_object_hide(history_layout);
1054 edje_object_signal_emit(elm_layout_edje_get(m_main_layout), "show,content0,signal", "");
1056 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1057 _set_navigationbar_title(BR_STRING_BOOKMARKS);
1059 _set_navigationbar_title(m_current_bookmark_navigationbar_title.c_str());
1062 if (elm_genlist_decorate_mode_get(_get_current_folder_genlist())) {
1063 if (!_set_controlbar_type(BOOKMARK_VIEW_EDIT_MODE))
1064 BROWSER_LOGE("_set_controlbar_type BOOKMARK_VIEW_EDIT_MODE failed");
1066 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1067 BROWSER_LOGE("_set_controlbar_type BOOKMARK_VIEW_DEFAULT failed");
1072 void Browser_Bookmark_View::__controlbar_tab_changed_cb(void *data, Evas_Object *obj, void *event_info)
1077 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1078 Elm_Object_Item *selected_item = elm_toolbar_selected_item_get(obj);
1079 Elm_Object_Item *history_item = elm_toolbar_last_item_get(obj);
1080 if (!selected_item) {
1081 BROWSER_LOGD("no item selected");
1085 if (selected_item == history_item) {
1086 BROWSER_LOGD("tab history");
1087 /* history selected */
1088 if (!m_data_manager->get_history_layout()) {
1089 if (!m_data_manager->create_history_layout()) {
1090 BROWSER_LOGE("m_data_manager->create_history_layout() failed");
1094 if (!m_data_manager->get_history_layout()->init()) {
1095 BROWSER_LOGE("get_history_layout()->init() failed");
1100 bookmark_view->hide_notify_popup();
1101 bookmark_view->_set_view_mode(HISTORY_VIEW);
1104 BROWSER_LOGD("tab bookmark");
1105 if (m_data_manager->get_history_layout()) {
1106 m_data_manager->get_history_layout()->hide_notify_popup();
1107 bookmark_view->_set_view_mode(BOOKMARK_VIEW);
1112 /* bookmark -> edit(left option button -> edit button of each bookmark item. */
1113 void Browser_Bookmark_View::__edit_bookmark_item_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1115 BROWSER_LOGD("[%s]", __func__);
1118 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1119 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1121 /* Pass the selected genlist item as parameter when bookmark -> Edit item
1122 because of increase performance. */
1123 bookmark_view->m_current_genlist_item_to_edit = (Elm_Object_Item *)(item->user_data_2);
1125 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
1127 bookmark_view->hide_notify_popup();
1129 bookmark_view->_set_edit_mode(EINA_FALSE);
1131 if (!m_data_manager->create_edit_bookmark_view(item->title, item->url,
1132 bookmark_view->m_current_folder_id)) {
1133 BROWSER_LOGE("create_edit_bookmark_view failed");
1137 if (!m_data_manager->get_edit_bookmark_view()->init()) {
1138 BROWSER_LOGE("get_edit_bookmark_view()->init() failed");
1139 m_data_manager->destroy_edit_bookmark_view();
1144 void Browser_Bookmark_View::__rename_folder_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1146 BROWSER_LOGD("[%s]", __func__);
1149 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1150 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1151 Elm_Object_Item *it = (Elm_Object_Item *)(item->user_data_2);
1152 elm_genlist_item_flip_set(it, EINA_TRUE);
1154 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
1156 evas_object_data_set(bookmark_view->_get_current_folder_genlist(), "selected_it", it);
1159 void Browser_Bookmark_View::__rename_folder_entry_enter_key_cb(void *data, Evas_Object *obj,
1162 BROWSER_LOGD("[%s]", __func__);
1166 Evas_Object *rename_edit_field = (Evas_Object *)data;
1167 elm_object_focus_set(rename_edit_field, EINA_FALSE);
1170 void Browser_Bookmark_View::__rename_folder_unfocus_cb(void *data, Evas_Object *obj, void *event_info)
1172 BROWSER_LOGD("[%s]", __func__);
1176 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1177 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)item->user_data_1;
1179 Evas_Object *genlist = bookmark_view->_get_current_folder_genlist();
1181 Evas_Object *edit_field_entry = obj;
1182 char *markup_text = elm_entry_markup_to_utf8(elm_entry_entry_get(edit_field_entry));
1183 char *text = bookmark_view->_trim(markup_text);
1185 BROWSER_LOGE("elm_entry_markup_to_utf8 failed");
1188 Elm_Object_Item *it = (Elm_Object_Item *)evas_object_data_get(genlist, "selected_it");
1190 Eina_Bool only_has_space = EINA_FALSE;
1191 int space_count = 0;
1192 if (text && strlen(text)) {
1193 for (int i = 0 ; i < strlen(text) ; i++) {
1197 if (space_count == strlen(text))
1198 only_has_space = EINA_TRUE;
1201 if (!text || strlen(text) == 0 || only_has_space) {
1202 bookmark_view->show_msg_popup(BR_STRING_ENTER_FOLDER_NAME);
1203 elm_entry_entry_set(edit_field_entry, item->title.c_str());
1205 if (strcmp(text, item->title.c_str())) {
1206 if (!m_data_manager->get_bookmark_db()->is_duplicated(text)) {
1208 m_data_manager->get_bookmark_db()->modify_bookmark_title(item->id, text);
1210 if (elm_genlist_decorate_mode_get(bookmark_view->_get_current_folder_genlist()))
1211 bookmark_view->show_msg_popup(BR_STRING_ALREADY_EXISTS);
1213 std::string folder_name = m_data_manager->get_bookmark_db()->get_folder_name_by_id(item->id);
1214 elm_entry_entry_set(edit_field_entry, folder_name.c_str());
1218 elm_genlist_item_flip_set(it, EINA_FALSE);
1220 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
1222 bookmark_view->m_rename_edit_field = NULL;
1227 void Browser_Bookmark_View::__drag_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1229 BROWSER_LOGD("[%s]", __func__);
1232 #if defined(GENLIST_SWEEP)
1233 void Browser_Bookmark_View::__sweep_right_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1235 BROWSER_LOGD("[%s]", __func__);
1238 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1240 if (elm_genlist_decorate_mode_get(obj))
1243 elm_genlist_item_decorate_mode_set((Elm_Object_Item *)event_info, "slide", EINA_TRUE);
1244 elm_genlist_item_select_mode_set((Elm_Object_Item *)event_info, ELM_OBJECT_SELECT_MODE_NONE);
1247 if (bookmark_view->m_current_sweep_item
1248 && (Elm_Object_Item *)event_info != bookmark_view->m_current_sweep_item) {
1249 elm_genlist_item_select_mode_set(bookmark_view->m_current_sweep_item, ELM_OBJECT_SELECT_MODE_DEFAULT);
1250 bookmark_view->m_current_sweep_item = (Elm_Object_Item *)event_info;
1254 void Browser_Bookmark_View::__sweep_cancel_genlist_cb(void *data,
1255 Evas_Object *obj, void *event_info)
1257 BROWSER_LOGD("[%s]", __func__);
1262 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1263 Elm_Object_Item *it = (Elm_Object_Item*)elm_genlist_decorated_item_get(obj);
1265 elm_genlist_item_decorate_mode_set(it, "slide", EINA_FALSE);
1266 elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DEFAULT);
1268 if (it == bookmark_view->m_current_sweep_item)
1269 bookmark_view->m_current_sweep_item = NULL;
1273 void Browser_Bookmark_View::__sweep_left_genlist_cb(void *data, Evas_Object *obj, void *event_info)
1275 BROWSER_LOGD("[%s]", __func__);
1278 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1280 if (elm_genlist_decorate_mode_get(obj))
1283 elm_genlist_item_decorate_mode_set((Elm_Object_Item *)event_info, "slide", EINA_FALSE);
1284 elm_genlist_item_select_mode_set((Elm_Object_Item *)event_info, ELM_OBJECT_SELECT_MODE_DEFAULT);
1287 bookmark_view->m_current_sweep_item = NULL;
1291 char *Browser_Bookmark_View::__genlist_label_get_cb(void *data, Evas_Object *obj, const char *part)
1293 BROWSER_LOGD("part=%s", part);
1297 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1299 const char *title = item->title.c_str();
1300 BROWSER_LOGD("title(%p)=%s", title, title);
1301 const char *url = item->url.c_str();
1302 BROWSER_LOGD("url(%p)=%s", url, url);
1304 if (part && strlen(part) > 0) {
1305 if (!strncmp(part,"elm.text", strlen("elm.text"))
1306 || !strncmp(part, "elm.base.text", strlen("elm.base.text"))
1307 || !strncmp(part, "elm.slide.text.1", strlen("elm.slide.text.1"))) {
1308 if (title && strlen(title))
1309 return strdup(title);
1312 } else if (!strncmp(part, "elm.text.sub", strlen("elm.text.sub"))) {
1313 if (url && strlen(url))
1323 Evas_Object *Browser_Bookmark_View::__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part)
1325 BROWSER_LOGD("[%s]", __func__);
1326 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1330 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)item->user_data_1;
1332 if (part && strlen(part) > 0) {
1333 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {
1334 if (item->is_folder) {
1335 Evas_Object *folder_icon = elm_icon_add(obj);
1336 if (!elm_icon_file_set(folder_icon, BROWSER_IMAGE_DIR"/folder.png", NULL)) {
1337 BROWSER_LOGE("elm_icon_file_set is failed.\n");
1340 evas_object_size_hint_aspect_set(folder_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1343 Evas_Object *favicon = NULL;
1344 favicon = m_data_manager->get_browser_view()->get_favicon(item->url.c_str());
1348 Evas_Object *default_icon = elm_icon_add(obj);
1351 if (!elm_icon_file_set(default_icon, BROWSER_IMAGE_DIR"/faviconDefault.png", NULL)) {
1352 BROWSER_LOGE("elm_icon_file_set is failed.\n");
1355 evas_object_size_hint_aspect_set(default_icon, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
1356 return default_icon;
1359 } else if (!strncmp(part, "elm.slide.swallow.1", strlen("elm.slide.swallow.1"))) {
1360 Evas_Object *edit_button = elm_button_add(obj);
1362 BROWSER_LOGE("elm_button_add is failed.\n");
1365 elm_object_style_set(edit_button, "text_only/sweep");
1366 elm_object_text_set(edit_button, BR_STRING_EDIT);
1367 if (!item->is_editable)
1368 elm_object_disabled_set(edit_button, EINA_TRUE);
1369 evas_object_smart_callback_add(edit_button, "clicked", __slide_edit_button_clicked_cb, item);
1371 } else if (!strncmp(part, "elm.slide.swallow.2", strlen("elm.slide.swallow.2"))) {
1372 if (item->is_folder) {
1373 Evas_Object *delete_button = elm_button_add(obj);
1374 if (!delete_button) {
1375 BROWSER_LOGE("elm_button_add is failed.\n");
1378 elm_object_style_set(delete_button, "text_only/sweep");
1379 elm_object_text_set(delete_button, BR_STRING_DELETE);
1380 if (!item->is_editable)
1381 elm_object_disabled_set(delete_button, EINA_TRUE);
1382 evas_object_smart_callback_add(delete_button, "clicked", __slide_delete_button_clicked_cb, item);
1383 return delete_button;
1385 Evas_Object *share_button = elm_button_add(obj);
1386 if (!share_button) {
1387 BROWSER_LOGE("elm_button_add is failed.\n");
1390 elm_object_style_set(share_button, "text_only/sweep");
1391 elm_object_text_set(share_button, BR_STRING_SHARE);
1392 evas_object_smart_callback_add(share_button, "clicked", __slide_share_button_clicked_cb, item);
1393 return share_button;
1395 } else if (!strncmp(part, "elm.slide.swallow.3", strlen("elm.slide.swallow.3"))) {
1396 Evas_Object *delete_button = elm_button_add(obj);
1397 if (!delete_button) {
1398 BROWSER_LOGE("elm_button_add is failed.\n");
1401 elm_object_style_set(delete_button, "text_only/sweep");
1402 elm_object_text_set(delete_button, BR_STRING_DELETE);
1403 if (!item->is_editable)
1404 elm_object_disabled_set(delete_button, EINA_TRUE);
1405 evas_object_smart_callback_add(delete_button, "clicked", __slide_delete_button_clicked_cb, item);
1406 return delete_button;
1409 if (elm_genlist_decorate_mode_get(obj)) {
1410 if (!strncmp(part, "elm.edit.icon.1", strlen("elm.edit.icon.1"))) {
1411 Evas_Object *check_button = elm_check_add(obj);
1412 if (!check_button) {
1413 BROWSER_LOGE("elm_check_add is failed.\n");
1416 evas_object_propagate_events_set(check_button, EINA_FALSE);
1418 if (!item->is_editable)
1419 elm_object_disabled_set(check_button, EINA_TRUE);
1421 elm_check_state_pointer_set(check_button, &item->is_delete);
1422 evas_object_smart_callback_add(check_button, "changed",
1423 __edit_mode_item_check_changed_cb, item);
1424 return check_button;
1425 } else if (!strncmp(part, "elm.edit.icon.2", strlen("elm.edit.icon.2"))) {
1426 Evas_Object *button = elm_button_add(obj);
1428 BROWSER_LOGE("elm_button_add is failed.\n");
1431 evas_object_propagate_events_set(button, EINA_FALSE);
1433 if (!item->is_editable)
1434 elm_object_disabled_set(button, EINA_TRUE);
1435 if (item->is_folder) {
1436 elm_object_style_set(button, "rename");
1437 evas_object_smart_callback_add(button, "clicked",
1438 __rename_folder_button_clicked_cb, item);
1440 elm_object_style_set(button, "reveal");
1441 evas_object_smart_callback_add(button, "clicked",
1442 __edit_bookmark_item_button_clicked_cb, item);
1445 } else if (!strncmp(part, "elm.flip.content", strlen("elm.flip.content"))) {
1446 Evas_Object *edit_field = br_elm_editfield_add(obj);
1447 br_elm_editfield_entry_single_line_set(edit_field, EINA_TRUE);
1448 br_elm_editfield_eraser_set(edit_field, EINA_TRUE);
1450 bookmark_view->m_rename_edit_field = edit_field;
1451 evas_object_data_set(bookmark_view->m_rename_edit_field, "item", item);
1453 Evas_Object *edit_field_entry = br_elm_editfield_entry_get(edit_field);
1454 elm_entry_entry_set(edit_field_entry, item->title.c_str());
1455 elm_entry_cursor_end_set(edit_field_entry);
1457 evas_object_smart_callback_add(edit_field_entry, "unfocused",
1458 __rename_folder_unfocus_cb, data);
1459 evas_object_smart_callback_add(edit_field_entry, "activated",
1460 __rename_folder_entry_enter_key_cb, edit_field);
1462 ecore_idler_add(__set_focus_editfield_idler_cb, edit_field);
1472 Eina_Bool Browser_Bookmark_View::_is_empty_folder(string folder_name)
1474 BROWSER_LOGD("[%s]", __func__);
1475 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
1477 Eina_Bool ret = bookmark_db->get_folder_id(BROWSER_BOOKMARK_MAIN_FOLDER_ID, folder_name.c_str(), &folder_id);
1479 BROWSER_LOGE("get_folder_id is failed.");
1483 vector<Browser_Bookmark_DB::bookmark_item *> bookmark_list;
1484 ret = bookmark_db->get_bookmark_list(bookmark_list, folder_id);
1486 BROWSER_LOGE("get_bookmark_list failed");
1490 int count = bookmark_list.size();
1492 for(int i = 0 ; i < bookmark_list.size() ; i++ ) {
1493 if (bookmark_list[i])
1494 delete bookmark_list[i];
1496 bookmark_list.clear();
1504 void Browser_Bookmark_View::__slide_edit_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1506 BROWSER_LOGD("[%s]", __func__);
1510 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1511 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1512 bookmark_view->m_current_genlist_item_to_edit = (Elm_Object_Item *)(item->user_data_2);
1514 if (item->is_folder) {
1515 /* edit folder by slide genlist item */
1516 if (bookmark_view->_is_empty_folder(item->title)) {
1517 bookmark_view->show_msg_popup(BR_STRING_EMPTY);
1521 bookmark_view->_go_to_sub_foler(item->title.c_str());
1523 bookmark_view->_set_edit_mode(EINA_TRUE);
1525 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
1526 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN);
1527 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_TRUE);
1529 edje_object_signal_emit(elm_layout_edje_get(bookmark_view->m_main_layout),
1530 "expand_header_no_animation,signal", "");
1532 /* edit bookmark item by slide genlist item */
1533 /* Pass the selected genlist item as parameter when bookmark -> Edit item
1534 because of increase performance. */
1535 if (!m_data_manager->create_edit_bookmark_view(item->title, item->url,
1536 bookmark_view->m_current_folder_id)) {
1537 BROWSER_LOGE("create_edit_bookmark_view failed");
1541 if (!m_data_manager->get_edit_bookmark_view()->init()) {
1542 BROWSER_LOGE("new get_edit_bookmark_view()->init() failed");
1543 m_data_manager->destroy_edit_bookmark_view();
1548 elm_genlist_item_decorate_mode_set(bookmark_view->m_current_genlist_item_to_edit, "slide", EINA_FALSE);
1549 elm_genlist_item_select_mode_set(bookmark_view->m_current_genlist_item_to_edit, ELM_OBJECT_SELECT_MODE_DEFAULT);
1552 void Browser_Bookmark_View::__delete_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj,
1555 BROWSER_LOGD("event_info = %d", (int)event_info);
1560 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1561 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1563 evas_object_del(bookmark_view->m_delete_confirm_popup);
1565 bookmark_view->_delete_bookmark_item_by_slide_button(item);
1568 void Browser_Bookmark_View::__cancel_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj,
1571 BROWSER_LOGD("event_info = %d", (int)event_info);
1576 Evas_Object *popup = (Evas_Object *)data;
1578 evas_object_del(popup);
1581 void Browser_Bookmark_View::__delete_confirm_response_by_edit_mode_cb(void *data, Evas_Object *obj,
1584 BROWSER_LOGD("event_info = %d", (int)event_info);
1589 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1591 if (bookmark_view->m_delete_confirm_popup) {
1592 evas_object_del(bookmark_view->m_delete_confirm_popup);
1593 bookmark_view->m_delete_confirm_popup = NULL;
1596 bookmark_view->_delete_selected_bookmark();
1598 bookmark_view->_set_edit_mode(EINA_FALSE);
1601 Evas_Object *Browser_Bookmark_View::_show_delete_confirm_popup(void)
1603 BROWSER_LOGD("[%s]", __func__);
1605 m_delete_confirm_popup = elm_popup_add(m_navi_bar);
1606 if (!m_delete_confirm_popup) {
1607 BROWSER_LOGE("elm_popup_add failed");
1611 evas_object_size_hint_weight_set(m_delete_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1612 elm_object_text_set(m_delete_confirm_popup, BR_STRING_DELETE_Q);
1614 Evas_Object *ok_button = elm_button_add(m_delete_confirm_popup);
1615 elm_object_text_set(ok_button, BR_STRING_YES);
1616 elm_object_part_content_set(m_delete_confirm_popup, "button1", ok_button);
1618 Evas_Object *cancel_button = elm_button_add(m_delete_confirm_popup);
1619 elm_object_text_set(cancel_button, BR_STRING_NO);
1620 elm_object_part_content_set(m_delete_confirm_popup, "button2", cancel_button);
1622 evas_object_smart_callback_add(cancel_button, "clicked", __cancel_confirm_response_by_slide_button_cb,
1623 m_delete_confirm_popup);
1625 evas_object_show(m_delete_confirm_popup);
1630 void Browser_Bookmark_View::_delete_bookmark_item_by_slide_button(Browser_Bookmark_DB::bookmark_item *item)
1632 BROWSER_LOGD("[%s]", __func__);
1633 Elm_Object_Item *it = (Elm_Object_Item *)(item->user_data_2);
1634 int ret = EINA_TRUE;
1636 if (item->is_folder) {
1638 ret = m_data_manager->get_bookmark_db()->get_folder_id(m_current_folder_id,
1639 item->title.c_str(), &folder_id);
1641 BROWSER_LOGE("bookmark_db->get_folder_id failed");
1644 ret = m_data_manager->get_bookmark_db()->delete_folder(folder_id);
1646 BROWSER_LOGE("bookmark_db->delete_folder failed");
1650 ret = m_data_manager->get_bookmark_db()->delete_bookmark(item->id);
1652 BROWSER_LOGE("bookmark_db->delete_bookmark failed");
1657 _delete_bookmark_item_from_folder_list(item);
1659 elm_object_item_del(it);
1661 if (_get_current_folder_item_list().size() == 0) {
1662 _show_empty_content_layout(EINA_TRUE);
1665 show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);
1668 void Browser_Bookmark_View::__slide_share_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1670 BROWSER_LOGD("[%s]", __func__);
1674 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1675 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1676 if (!bookmark_view->_show_share_popup(item->url.c_str()))
1677 BROWSER_LOGE("_show_share_popup failed");
1680 void Browser_Bookmark_View::__slide_delete_button_clicked_cb(void *data, Evas_Object *obj, void *event_info)
1682 BROWSER_LOGD("[%s]", __func__);
1686 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)data;
1687 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1689 Evas_Object *ok_button = bookmark_view->_show_delete_confirm_popup();
1691 evas_object_smart_callback_add(ok_button, "clicked",
1692 __delete_confirm_response_by_slide_button_cb, item);
1695 void Browser_Bookmark_View::__genlist_move_cb(void *data, Evas_Object *obj, void *event_info)
1697 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
1699 BROWSER_LOGD("moved it = %d", it);
1701 Browser_Bookmark_DB::bookmark_item *item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1702 Elm_Object_Item *next_it = elm_genlist_item_next_get(it);
1703 Browser_Bookmark_DB::bookmark_item *next_item = NULL;
1706 next_item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(next_it);
1708 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)(item->user_data_1);
1710 Elm_Object_Item *index_it = NULL;
1711 Browser_Bookmark_DB::bookmark_item *test_item = NULL;
1712 it = elm_genlist_first_item_get(obj);
1714 test_item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(index_it);
1715 BROWSER_LOGD("title=%s, order index=%d", test_item->title.c_str(), test_item->order_index);
1716 index_it = elm_genlist_item_next_get(index_it);
1719 if (next_item && (item->order_index < next_item->order_index))
1721 bookmark_view->_reorder_bookmark_item(item->order_index, EINA_TRUE);
1724 bookmark_view->_reorder_bookmark_item(item->order_index, EINA_FALSE);
1727 void Browser_Bookmark_View::_reorder_bookmark_item(int order_index, Eina_Bool is_move_down)
1729 BROWSER_LOGD("[%s]", __func__);
1730 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
1732 Elm_Object_Item *it = NULL;
1733 Elm_Object_Item *next_it = NULL;
1734 Browser_Bookmark_DB::bookmark_item *item = NULL;
1735 Browser_Bookmark_DB::bookmark_item *next_item = NULL;
1736 Eina_Bool ret = EINA_TRUE;
1737 int index = order_index;
1740 it = elm_genlist_first_item_get(_get_current_folder_genlist());
1742 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1743 if (item->order_index > index) {
1744 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1746 BROWSER_LOGD("modify_bookmark_order_index failed");
1747 int temp = item->order_index;
1748 item->order_index = index;
1750 elm_object_item_data_set(it, item);
1751 } else if (item->order_index == order_index) {
1752 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1753 item->order_index = index;
1754 elm_object_item_data_set(it, item);
1756 BROWSER_LOGD("modify_bookmark_order_index failed");
1759 it = elm_genlist_item_next_get(it);
1762 index = order_index;
1763 it = elm_genlist_last_item_get(_get_current_folder_genlist());
1765 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1766 if (item->order_index < index) {
1767 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1769 BROWSER_LOGD("modify_bookmark_order_index failed");
1770 int temp = item->order_index;
1771 item->order_index = index;
1773 elm_object_item_data_set(it, item);
1774 } else if (item->order_index == order_index) {
1775 ret = bookmark_db->modify_bookmark_order_index(item->id, m_current_folder_id, index);
1776 item->order_index = index;
1777 elm_object_item_data_set(it, item);
1779 BROWSER_LOGD("modify_bookmark_order_index failed");
1782 it = elm_genlist_item_prev_get(it);
1787 void Browser_Bookmark_View::history_item_clicked(const char *url)
1789 BROWSER_LOGD("[%s]", __func__);
1791 if (m_data_manager->get_browser_view())
1792 m_data_manager->get_browser_view()->load_url(url);
1794 if (elm_naviframe_bottom_item_get(m_navi_bar) != elm_naviframe_top_item_get(m_navi_bar))
1795 elm_naviframe_item_pop(m_navi_bar);
1798 void Browser_Bookmark_View::__bookmark_item_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
1800 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1804 Elm_Object_Item *seleted_item = elm_genlist_selected_item_get(obj);
1805 Browser_Bookmark_DB::bookmark_item *item = NULL;
1806 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(seleted_item);
1808 if (!elm_genlist_decorate_mode_get(obj)) {
1809 if (!item->is_folder) {
1810 std::string url = std::string(item->url.c_str());
1812 if (m_data_manager->get_browser_view())
1813 m_data_manager->get_browser_view()->load_url(url.c_str());
1815 if (elm_naviframe_bottom_item_get(bookmark_view->m_navi_bar)
1816 != elm_naviframe_top_item_get(bookmark_view->m_navi_bar))
1817 elm_naviframe_item_pop(bookmark_view->m_navi_bar);
1819 bookmark_view->_go_to_sub_foler(item->title.c_str());
1821 Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
1822 Browser_Bookmark_DB::bookmark_item *item = NULL;
1823 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1824 if (item && item->is_editable) {
1825 item->is_delete = !(item->is_delete);
1826 elm_genlist_item_update(it);
1829 int delete_item_count = 0;
1830 int editable_item_count = 0;
1831 it = elm_genlist_first_item_get(bookmark_view->_get_current_folder_genlist());
1833 if (item->is_editable)
1834 editable_item_count++;
1835 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
1836 if (item->is_delete)
1837 delete_item_count++;
1838 it = elm_genlist_item_next_get(it);
1841 if (editable_item_count == delete_item_count)
1842 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_TRUE);
1844 elm_check_state_set(bookmark_view->m_edit_mode_select_all_check_button, EINA_FALSE);
1846 bookmark_view->_show_selection_info();
1849 elm_genlist_item_selected_set(seleted_item, EINA_FALSE);
1852 void Browser_Bookmark_View::__upper_folder_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
1854 BROWSER_LOGD("[%s]", __func__);
1858 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
1859 bookmark_view->_go_up_to_main_folder();
1861 bookmark_view->_set_navigationbar_title(BR_STRING_BOOKMARKS);
1864 Evas_Object *Browser_Bookmark_View::_get_current_folder_genlist(void)
1866 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1867 return m_main_folder_genlist;
1869 return m_sub_folder_genlist;
1872 /* This just returns the copy of item list instance.
1873 * Just refer to read. Do not modify(insert or delete) the contents of this return value.
1874 * It doesn't modify the actual m_main_folder_list, m_sub_folder_list contents. */
1875 vector<Browser_Bookmark_DB::bookmark_item *> Browser_Bookmark_View::_get_current_folder_item_list(void)
1877 if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
1878 return m_main_folder_list;
1880 return m_sub_folder_list;
1883 void Browser_Bookmark_View::_show_empty_content_layout(Eina_Bool is_empty)
1885 BROWSER_LOGD("is_empty=%d", is_empty);
1886 if (m_view_mode == BOOKMARK_VIEW) {
1887 if (!_set_controlbar_type(BOOKMARK_VIEW_DEFAULT))
1888 BROWSER_LOGE("_set_controlbar_type(BOOKMARK_VIEW_DEFAULT) failed");
1892 if (m_edit_mode_select_all_check_button) {
1893 evas_object_del(m_edit_mode_select_all_check_button);
1894 m_edit_mode_select_all_check_button = NULL;
1896 if (m_edit_mode_select_all_layout) {
1897 elm_box_unpack(m_genlist_content_box, m_edit_mode_select_all_layout);
1898 evas_object_del(m_edit_mode_select_all_layout);
1899 m_edit_mode_select_all_layout = NULL;
1902 if (m_no_contents) {
1903 evas_object_del(m_no_contents);
1904 m_no_contents = NULL;
1907 m_no_contents = elm_layout_add(m_main_layout);
1908 if (!m_no_contents) {
1909 BROWSER_LOGE("elm_layout_add failed");
1911 elm_layout_theme_set(m_no_contents, "layout", "no_bookmark", "full");
1912 elm_object_part_text_set (m_no_contents, "elm.text", BR_STRING_NO_BOOKMARKS);
1913 evas_object_size_hint_weight_set(m_no_contents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
1914 evas_object_size_hint_align_set(m_no_contents, EVAS_HINT_FILL, EVAS_HINT_FILL);
1915 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.no_content", m_no_contents);
1916 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "hide,content_box,signal", "");
1917 evas_object_show(m_no_contents);
1919 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
1921 if (m_no_contents) {
1922 elm_object_part_content_unset(m_genlist_content_layout, "elm.swallow.no_content");
1923 evas_object_del(m_no_contents);
1924 m_no_contents = NULL;
1925 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout),
1926 "show,content_box,signal", "");
1929 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_FALSE);
1933 void Browser_Bookmark_View::_go_up_to_main_folder(void)
1935 BROWSER_LOGD("[%s]", __func__);
1937 m_current_folder_id = BROWSER_BOOKMARK_MAIN_FOLDER_ID;
1939 elm_box_unpack(m_genlist_content_box, m_sub_folder_conformant);
1940 elm_box_pack_end(m_genlist_content_box, m_conformant);
1941 evas_object_show(m_conformant);
1943 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "hide,upper_folder,signal", "");
1945 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
1946 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_OPEN);
1947 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_TRUE);
1949 for(int i = 0 ; i < m_sub_folder_list.size() ; i++) {
1950 if (m_sub_folder_list[i]) {
1951 delete m_sub_folder_list[i];
1952 m_sub_folder_list.erase(m_sub_folder_list.begin() + i);
1955 m_sub_folder_list.clear();
1957 if (m_upper_folder_icon) {
1958 evas_object_del(m_upper_folder_icon);
1959 m_upper_folder_icon = NULL;
1961 if (m_upper_folder_list) {
1962 evas_object_del(m_upper_folder_list);
1963 m_upper_folder_list = NULL;
1965 if (m_sub_folder_genlist) {
1966 evas_object_del(m_sub_folder_genlist);
1967 m_sub_folder_genlist = NULL;
1969 if (m_sub_folder_conformant) {
1970 evas_object_del(m_sub_folder_conformant);
1971 m_sub_folder_conformant = NULL;
1974 if (m_main_folder_list.size() == 0)
1975 _show_empty_content_layout(EINA_TRUE);
1977 _show_empty_content_layout(EINA_FALSE);
1979 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_FALSE);
1982 void Browser_Bookmark_View::_go_to_sub_foler(const char *folder_name)
1985 string navigationbar_title = folder_name;
1986 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_folder_id(BROWSER_BOOKMARK_MAIN_FOLDER_ID,
1987 folder_name, &folder_id);
1989 BROWSER_LOGE("get_folder_id is failed.");
1993 m_sub_folder_genlist = _create_sub_folder_genlist(folder_id);
1994 if (!m_sub_folder_genlist) {
1995 BROWSER_LOGD("_create_sub_folder_genlist failed");
1999 m_current_bookmark_navigationbar_title = navigationbar_title.c_str();
2000 _set_navigationbar_title(navigationbar_title.c_str());
2002 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_TRUE);
2004 if (!m_sub_folder_list.size())
2005 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
2008 void Browser_Bookmark_View::_set_navigationbar_title(const char *title)
2010 BROWSER_LOGD("title=[%s]", title);
2011 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
2012 if (elm_object_item_content_get(top_it) == m_main_layout)
2013 elm_object_item_text_set(top_it, title);
2016 Evas_Object *Browser_Bookmark_View::_create_sub_folder_genlist(int folder_id)
2018 BROWSER_LOGD("[%s]", __func__);
2019 Evas_Object *genlist = elm_genlist_add(m_main_layout);
2021 elm_box_unpack(m_genlist_content_box, m_conformant);
2022 evas_object_hide(m_conformant);
2024 m_sub_folder_conformant = elm_conformant_add(m_main_layout);
2025 if (!m_sub_folder_conformant) {
2026 BROWSER_LOGE("elm_conformant_add failed");
2029 elm_object_style_set(m_sub_folder_conformant, "internal_layout");
2030 evas_object_size_hint_weight_set(m_sub_folder_conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2031 evas_object_size_hint_align_set(m_sub_folder_conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
2032 evas_object_show(m_sub_folder_conformant);
2033 elm_box_pack_end(m_genlist_content_box, m_sub_folder_conformant);
2035 m_current_folder_id = folder_id;
2037 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2038 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
2039 elm_genlist_block_count_set(genlist, BROWSER_BOOKMARK_GENLIST_BLOCK_COUNT);
2040 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
2042 #if defined(GENLIST_SWEEP)
2043 evas_object_smart_callback_add(genlist, "drag,start,up", __sweep_cancel_genlist_cb, genlist);
2044 evas_object_smart_callback_add(genlist, "drag,start,down", __sweep_cancel_genlist_cb, genlist);
2045 evas_object_smart_callback_add(genlist, "drag,start,right", __sweep_right_genlist_cb, this);
2046 evas_object_smart_callback_add(genlist, "drag,start,left", __sweep_left_genlist_cb, this);
2049 evas_object_smart_callback_add(genlist, "moved", __genlist_move_cb, this);
2051 elm_object_content_set(m_sub_folder_conformant, genlist);
2052 evas_object_show(genlist);
2054 m_upper_folder_list = elm_list_add(m_main_layout);
2055 if (m_upper_folder_list) {
2056 elm_list_bounce_set(m_upper_folder_list, EINA_FALSE, EINA_FALSE);
2057 evas_object_size_hint_weight_set(m_upper_folder_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2058 evas_object_size_hint_align_set(m_upper_folder_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
2059 evas_object_show(m_upper_folder_list);
2060 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.upperlist", m_upper_folder_list);
2061 m_upper_folder_icon = elm_icon_add(m_upper_folder_list);
2062 if (!m_upper_folder_icon) {
2063 BROWSER_LOGE("elm_icon_add failed");
2066 if (!elm_icon_file_set(m_upper_folder_icon, BROWSER_IMAGE_DIR"/I01_icon_upper_folder.png", NULL))
2067 BROWSER_LOGE("elm_icon_file_set is failed. [%s]");
2069 evas_object_size_hint_min_set(m_upper_folder_icon, UPPER_FOLDER_ICON_SIZE, UPPER_FOLDER_ICON_SIZE);
2070 evas_object_resize(m_upper_folder_icon, UPPER_FOLDER_ICON_SIZE, UPPER_FOLDER_ICON_SIZE);
2071 elm_list_item_append(m_upper_folder_list, BR_STRING_BOOKMARKS, m_upper_folder_icon,
2072 NULL, __upper_folder_clicked_cb, this);
2073 evas_object_show(m_upper_folder_icon);
2074 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "show,upper_folder,signal", "");
2076 Elm_Object_Item *top_it = elm_naviframe_top_item_get(m_navi_bar);
2077 elm_object_item_signal_emit(top_it, ELM_NAVIFRAME_ITEM_SIGNAL_OPTIONHEADER_INSTANT_CLOSE);
2078 evas_object_data_set(m_navi_bar, "visible", (void *)EINA_FALSE);
2081 /* Fill bookmark list */
2082 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_bookmark_list(m_sub_folder_list,
2083 m_current_folder_id);
2086 BROWSER_LOGE("get_bookmark_list failed");
2089 int size = m_sub_folder_list.size();
2090 BROWSER_LOGD("bookmark count=%d", size);
2091 for (int i = 0 ; i < size ; i++ ) {
2092 m_sub_folder_list[i]->user_data_1 = (void *)this;
2093 m_sub_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
2094 &m_bookmark_genlist_item_class, m_sub_folder_list[i], NULL,
2095 ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
2099 _show_empty_content_layout(EINA_TRUE);
2101 _show_empty_content_layout(EINA_FALSE);
2107 Evas_Object *Browser_Bookmark_View::_create_main_folder_genlist(void)
2109 BROWSER_LOGD("[%s]", __func__);
2110 Evas_Object *genlist = elm_genlist_add(m_main_layout);
2112 m_current_folder_id = BROWSER_BOOKMARK_MAIN_FOLDER_ID;
2114 evas_object_size_hint_weight_set(genlist, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2115 evas_object_size_hint_align_set(genlist, EVAS_HINT_FILL, EVAS_HINT_FILL);
2116 elm_genlist_block_count_set(genlist, BROWSER_BOOKMARK_GENLIST_BLOCK_COUNT);
2117 elm_genlist_homogeneous_set(genlist, EINA_TRUE);
2119 #if defined(GENLIST_SWEEP)
2120 evas_object_smart_callback_add(genlist, "drag,start,up", __sweep_cancel_genlist_cb, genlist);
2121 evas_object_smart_callback_add(genlist, "drag,start,down", __sweep_cancel_genlist_cb, genlist);
2122 evas_object_smart_callback_add(genlist, "drag,start,right", __sweep_right_genlist_cb, this);
2123 evas_object_smart_callback_add(genlist, "drag,start,left", __sweep_left_genlist_cb, this);
2125 evas_object_smart_callback_add(genlist, "moved", __genlist_move_cb, this);
2127 m_bookmark_genlist_item_class.item_style = "1text.1icon.2";
2128 m_bookmark_genlist_item_class.decorate_item_style = "mode/slide3.text";
2129 m_bookmark_genlist_item_class.decorate_all_item_style = "edit_default";
2130 m_bookmark_genlist_item_class.func.text_get = __genlist_label_get_cb;
2131 m_bookmark_genlist_item_class.func.content_get = __genlist_icon_get_cb;
2132 m_bookmark_genlist_item_class.func.state_get = NULL;
2133 m_bookmark_genlist_item_class.func.del = NULL;
2134 // m_bookmark_genlist_item_class.func.moved = __genlist_move_cb;
2136 m_folder_genlist_item_class.item_style = "1text.1icon.2";
2137 m_folder_genlist_item_class.decorate_item_style = "mode/slide2";
2138 m_folder_genlist_item_class.decorate_all_item_style = "edit_default";
2139 m_folder_genlist_item_class.func.text_get = __genlist_label_get_cb;
2140 m_folder_genlist_item_class.func.content_get = __genlist_icon_get_cb;
2141 m_folder_genlist_item_class.func.state_get = NULL;
2142 m_folder_genlist_item_class.func.del = NULL;
2143 evas_object_show(genlist);
2145 /* Fill bookmark list */
2146 Eina_Bool ret = m_data_manager->get_bookmark_db()->get_bookmark_list(m_main_folder_list,
2147 m_current_folder_id);
2150 BROWSER_LOGE("get_bookmark_list failed");
2153 int size = m_main_folder_list.size();
2154 BROWSER_LOGD("bookmark count=%d", size);
2155 for (int i = 0 ; i < size ; i++ ) {
2156 m_main_folder_list[i]->user_data_1 = (void *)this;
2157 if (m_main_folder_list[i]->is_folder) {
2158 m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
2159 &m_folder_genlist_item_class, m_main_folder_list[i], NULL,
2160 ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
2163 m_main_folder_list[i]->user_data_2 = (void *)elm_genlist_item_append(genlist,
2164 &m_bookmark_genlist_item_class, m_main_folder_list[i], NULL,
2165 ELM_GENLIST_ITEM_NONE, __bookmark_item_clicked_cb, this);
2173 void Browser_Bookmark_View::__create_folder_button(void *data, Evas_Object *obj, void *event_info)
2177 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2180 if (!m_data_manager->create_new_folder_view()) {
2181 BROWSER_LOGE("create_new_folder_view failed");
2185 if (!m_data_manager->get_new_folder_view()->init()) {
2186 BROWSER_LOGE("get_new_folder_view()->init() failed");
2187 m_data_manager->destroy_new_folder_view();
2192 void Browser_Bookmark_View::__add_to_bookmark_cb(void *data, Evas_Object *obj, void *event_info)
2196 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2197 if (!m_data_manager->create_add_to_bookmark_view(m_data_manager->get_browser_view()->get_title(),
2198 m_data_manager->get_browser_view()->get_url(), bookmark_view->m_current_folder_id)) {
2199 BROWSER_LOGE("m_data_manager->create_add_to_bookmark_view failed");
2203 if (!m_data_manager->get_add_to_bookmark_view()->init())
2204 m_data_manager->destroy_add_to_bookmark_view();
2207 Eina_Bool Browser_Bookmark_View::_set_controlbar_type(controlbar_type type)
2209 if (m_bottom_control_bar)
2210 evas_object_del(m_bottom_control_bar);
2212 m_bookmark_delete_controlbar_item = NULL;
2213 m_create_folder_controlbar_item = NULL;
2215 if (type == BOOKMARK_VIEW_DEFAULT) {
2216 elm_object_style_set(m_bg, "default");
2218 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2220 m_back_button = elm_button_add(m_main_layout);
2221 if (!m_back_button) {
2222 BROWSER_LOGE("elm_button_add failed");
2225 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2226 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2227 evas_object_show(m_back_button);
2228 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, m_back_button);
2230 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2231 if (!m_bottom_control_bar) {
2232 BROWSER_LOGE("elm_toolbar_add failed");
2235 elm_object_style_set(m_bottom_control_bar, "browser/default");
2236 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2238 m_create_folder_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2239 BROWSER_IMAGE_DIR"/I01_controlbar_icon_create.png",
2240 NULL, __add_to_bookmark_cb, this);
2241 m_bookmark_edit_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2242 BROWSER_IMAGE_DIR"/01_controlbar_icon_compose.png", NULL,
2243 __edit_controlbar_item_clicked_cb, this);
2244 m_create_folder_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2245 BROWSER_IMAGE_DIR"/01_controlbar_icon_create_folder.png",
2246 NULL, __create_folder_button, this);
2247 evas_object_show(m_bottom_control_bar);
2249 if (m_current_folder_id != BROWSER_BOOKMARK_MAIN_FOLDER_ID)
2250 elm_object_item_disabled_set(m_create_folder_controlbar_item, EINA_TRUE);
2252 if (!_get_current_folder_item_list().size())
2253 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
2255 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2256 } else if (type == BOOKMARK_VIEW_EDIT_MODE || type == HISTORY_VIEW_EDIT_MODE) {
2257 elm_object_style_set(m_bg, "edit_mode");
2259 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2260 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);
2262 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2263 if (!m_bottom_control_bar) {
2264 BROWSER_LOGE("elm_toolbar_add failed");
2267 elm_object_style_set(m_bottom_control_bar, "browser/default");
2268 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2270 Elm_Object_Item *empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2271 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2273 m_bookmark_delete_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2274 BROWSER_IMAGE_DIR"/01_controlbar_icon_delete.png",
2275 NULL, __delete_controlbar_item_clicked_cb, this);
2277 empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2278 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2280 elm_toolbar_item_append(m_bottom_control_bar, BROWSER_IMAGE_DIR"/01_controllbar_icon_close.png", NULL,
2281 __edit_controlbar_item_clicked_cb, this);
2283 if (type == BOOKMARK_VIEW_EDIT_MODE) {
2284 int delete_item_count = 0;
2285 Elm_Object_Item *it = elm_genlist_first_item_get(_get_current_folder_genlist());
2287 Browser_Bookmark_DB::bookmark_item *item = NULL;
2288 item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(it);
2289 if (item->is_delete)
2290 delete_item_count++;
2291 it = elm_genlist_item_next_get(it);
2294 if (delete_item_count)
2295 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
2297 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
2299 int delete_item_count = 0;
2300 Elm_Object_Item *it = elm_genlist_first_item_get(m_data_manager->get_history_layout()->m_history_genlist);
2302 Browser_History_DB::history_item *item = NULL;
2303 item = (Browser_History_DB::history_item *)elm_object_item_data_get(it);
2305 /* Ignore the date label. */
2306 if (elm_genlist_item_select_mode_get(it) != ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY) {
2307 if (item->is_delete)
2308 delete_item_count++;
2310 it = elm_genlist_item_next_get(it);
2312 if (delete_item_count)
2313 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_FALSE);
2315 elm_object_item_disabled_set(m_bookmark_delete_controlbar_item, EINA_TRUE);
2318 evas_object_show(m_bottom_control_bar);
2319 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2320 } else if (type == HISTORY_VIEW_DEFAULT) {
2321 elm_object_style_set(m_bg, "default");
2323 Elm_Object_Item *navi_it = elm_naviframe_top_item_get(m_navi_bar);
2325 m_back_button = elm_button_add(m_main_layout);
2326 if (!m_back_button) {
2327 BROWSER_LOGE("elm_button_add failed");
2330 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2331 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2332 evas_object_show(m_back_button);
2333 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, m_back_button);
2335 m_bottom_control_bar = elm_toolbar_add(m_main_layout);
2336 if (!m_bottom_control_bar) {
2337 BROWSER_LOGE("elm_toolbar_add failed");
2340 elm_object_style_set(m_bottom_control_bar, "browser/default");
2341 elm_toolbar_shrink_mode_set(m_bottom_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2343 Elm_Object_Item *empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2344 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2346 m_bookmark_edit_controlbar_item = elm_toolbar_item_append(m_bottom_control_bar,
2347 BROWSER_IMAGE_DIR"/01_controlbar_icon_compose.png", NULL,
2348 __edit_controlbar_item_clicked_cb, this);
2350 empty_item = elm_toolbar_item_append(m_bottom_control_bar, NULL, NULL, NULL, NULL);
2351 elm_object_item_disabled_set(empty_item, EINA_TRUE);
2353 Browser_History_Layout *history_layout = m_data_manager->get_history_layout();
2354 if (history_layout) {
2355 if (!history_layout->m_history_list.size())
2356 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_TRUE);
2358 elm_object_item_disabled_set(m_bookmark_edit_controlbar_item, EINA_FALSE);
2361 evas_object_show(m_bottom_control_bar);
2363 elm_object_item_part_content_set(navi_it, ELM_NAVIFRAME_ITEM_CONTROLBAR, m_bottom_control_bar);
2366 elm_object_focus_allow_set(m_bottom_control_bar, EINA_FALSE);
2371 void Browser_Bookmark_View::__naviframe_pop_finished_cb(void *data , Evas_Object *obj, void *event_info)
2373 BROWSER_LOGD("[%s]", __func__);
2377 Browser_Bookmark_View *bookmark_view = (Browser_Bookmark_View *)data;
2378 Elm_Object_Item *it = (Elm_Object_Item *)event_info;
2380 if (bookmark_view->m_navi_it != elm_naviframe_top_item_get(m_navi_bar))
2383 /* Bookmark view -> Edit one bookmark item, then cancel. */
2384 m_data_manager->destroy_edit_bookmark_view();
2386 /* History view -> slide one item -> add to bookmark, then done. */
2387 m_data_manager->destroy_add_to_bookmark_view();
2389 m_data_manager->destroy_new_folder_view();
2392 Eina_Bool Browser_Bookmark_View::_create_main_layout(void)
2394 BROWSER_LOGD("[%s]", __func__);
2395 m_main_layout = elm_layout_add(m_navi_bar);
2396 if (!m_main_layout) {
2397 BROWSER_LOGE("elm_layout_add failed");
2400 if (!elm_layout_file_set(m_main_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
2401 "bookmark/main_layout")) {
2402 BROWSER_LOGE("elm_layout_file_set failed");
2406 elm_win_conformant_set(m_win, EINA_TRUE);
2407 m_conformant = elm_conformant_add(m_main_layout);
2408 if (!m_conformant) {
2409 BROWSER_LOGE("elm_conformant_add failed");
2412 elm_object_style_set(m_conformant, "internal_layout");
2413 evas_object_size_hint_weight_set(m_conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2414 evas_object_size_hint_align_set(m_conformant, EVAS_HINT_FILL, EVAS_HINT_FILL);
2415 evas_object_show(m_conformant);
2417 elm_object_style_set(m_bg, "default");
2419 m_genlist_content_layout = elm_layout_add(m_main_layout);
2420 if (!m_genlist_content_layout) {
2421 BROWSER_LOGE("elm_layout_add failed");
2424 if (!elm_layout_file_set(m_genlist_content_layout, BROWSER_EDJE_DIR"/browser-bookmark-view.edj",
2425 "bookmark/content_layout")) {
2426 BROWSER_LOGE("elm_layout_file_set failed");
2429 evas_object_size_hint_weight_set(m_genlist_content_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2430 evas_object_show(m_genlist_content_layout);
2431 edje_object_signal_emit(elm_layout_edje_get(m_genlist_content_layout), "show,content_box,signal", "");
2433 m_genlist_content_box = elm_box_add(m_genlist_content_layout);
2434 if (!m_genlist_content_box) {
2435 BROWSER_LOGE("elm_box_add failed");
2438 evas_object_size_hint_weight_set(m_genlist_content_box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
2439 evas_object_show(m_genlist_content_box);
2440 elm_object_part_content_set(m_genlist_content_layout, "elm.swallow.content_box", m_genlist_content_box);
2441 elm_box_pack_end(m_genlist_content_box, m_conformant);
2443 m_main_folder_genlist = _create_main_folder_genlist();
2444 if (!m_main_folder_genlist) {
2445 BROWSER_LOGE("_create_main_folder_genlist failed");
2449 elm_object_content_set(m_conformant, m_main_folder_genlist);
2451 m_back_button = elm_button_add(m_main_layout);
2452 if (!m_back_button) {
2453 BROWSER_LOGE("elm_button_add failed");
2456 elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");
2457 evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);
2458 evas_object_show(m_back_button);
2460 elm_object_part_content_set(m_main_layout, "elm.swallow.content", m_genlist_content_layout);
2462 m_top_control_bar = elm_toolbar_add(m_main_layout);
2463 if (!m_top_control_bar) {
2464 BROWSER_LOGE("elm_toolbar_add failed");
2467 elm_object_style_set(m_top_control_bar, "browser/tabbar");
2469 elm_toolbar_shrink_mode_set(m_top_control_bar, ELM_TOOLBAR_SHRINK_EXPAND);
2471 elm_object_part_content_set(m_main_layout, "elm.swallow.tabbar", m_top_control_bar);
2473 Elm_Object_Item *bookmark_tab_item = elm_toolbar_item_append(m_top_control_bar, NULL,
2474 BR_STRING_BOOKMARKS, __controlbar_tab_changed_cb, this);
2475 elm_toolbar_item_append(m_top_control_bar, NULL, BR_STRING_HISTORY, __controlbar_tab_changed_cb, this);
2477 elm_toolbar_select_mode_set(m_top_control_bar, ELM_OBJECT_SELECT_MODE_ALWAYS);
2478 elm_toolbar_item_selected_set(bookmark_tab_item, EINA_TRUE);
2480 evas_object_show(m_top_control_bar);
2482 m_navi_it = elm_naviframe_item_push(m_navi_bar, NULL, m_back_button, NULL,
2483 m_main_layout, "browser/tabbar");
2485 evas_object_smart_callback_add(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb, this);
2487 int size = m_main_folder_list.size();
2489 _show_empty_content_layout(EINA_TRUE);
2491 _show_empty_content_layout(EINA_FALSE);