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.
20 #ifndef BROWSER_BOOKMARK_VIEW_H
21 #define BROWSER_BOOKMARK_VIEW_H
23 #include "browser-bookmark-db.h"
24 #include "browser-common-view.h"
25 #include "browser-config.h"
27 class Browser_Bookmark_DB;
29 class Browser_Bookmark_View : public Browser_Common_View {
30 friend class Browser_History_Layout;
31 friend class Browser_Add_To_Bookmark_View;
32 friend class Browser_New_Folder_View;
34 Browser_Bookmark_View(void);
35 ~Browser_Bookmark_View(void);
38 void return_to_bookmark_view(int added_bookmark_id = -1);
39 Eina_Bool append_bookmark_item(const char *title, const char *url);
40 void delete_bookmark_item(int bookmark_id);
42 void history_item_clicked(const char *url);
44 typedef enum _view_mode {
49 typedef enum _controlbar_type {
50 BOOKMARK_VIEW_DEFAULT = 0,
51 BOOKMARK_VIEW_EDIT_MODE,
53 HISTORY_VIEW_EDIT_MODE
56 Eina_Bool _create_main_layout(void);
57 Evas_Object *_create_main_folder_genlist(void);
58 Evas_Object *_create_sub_folder_genlist(int folder_id);
59 void _go_to_sub_foler(const char *folder_name);
60 void _go_up_to_main_folder(void);
61 void _set_navigationbar_title(const char *title);
62 void _set_view_mode(view_mode mode);
63 void _set_edit_mode(Eina_Bool edit_mode);
64 void _show_selection_info(void);
65 void _delete_selected_bookmark(void);
66 void _show_empty_content_layout(Eina_Bool is_empty);
67 void _reorder_bookmark_item(int order_index, Eina_Bool is_move_down);
68 Eina_Bool _is_empty_folder(string folder_name);
69 Evas_Object *_get_current_folder_genlist(void);
70 void _delete_bookmark_item_from_folder_list(Browser_Bookmark_DB::bookmark_item *item);
71 vector<Browser_Bookmark_DB::bookmark_item *> _get_current_folder_item_list(void);
72 void _show_select_processing_popup(void);
73 void _show_delete_processing_popup(void);
74 Evas_Object *_show_delete_confirm_popup(void);
75 void _delete_bookmark_item_by_slide_button(Browser_Bookmark_DB::bookmark_item *item);
76 Eina_Bool _set_controlbar_type(controlbar_type type);
78 /* ecore timer callback functions */
79 static Eina_Bool __select_processing_popup_timer_cb(void *data);
80 static Eina_Bool __delete_processing_popup_timer_cb(void *data);
82 /* evas object event callback functions. */
83 static void __edit_mode_select_all_clicked_cb(void *data, Evas *evas, Evas_Object *obj, void *event_info);
85 /* elementary event callback functions. */
86 static void __select_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
87 static void __delete_processing_popup_response_cb(void *data, Evas_Object *obj, void *event_info);
88 static void __slide_edit_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
89 static void __slide_delete_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
90 static void __slide_share_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
91 static void __edit_bookmark_item_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
92 static void __rename_folder_unfocus_cb(void *data, Evas_Object *obj, void *event_info);
93 static void __rename_folder_entry_enter_key_cb(void *data, Evas_Object *obj, void *event_info);
94 static void __rename_folder_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
95 static void __edit_mode_item_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
96 static void __edit_mode_select_all_check_changed_cb(void *data, Evas_Object *obj, void *event_info);
97 static void __upper_folder_clicked_cb(void *data, Evas_Object *obj, void *eventInfo);
98 static void __drag_genlist_cb(void *data, Evas_Object *obj, void *event_info);
99 #if defined(GENLIST_SWEEP)
100 static void __sweep_cancel_genlist_cb(void *data, Evas_Object *obj, void *event_info);
101 static void __sweep_left_genlist_cb(void *data, Evas_Object *obj, void *event_info);
102 static void __sweep_right_genlist_cb(void *data, Evas_Object *obj, void *event_info);
104 static void __back_button_clicked_cb(void *data, Evas_Object *obj, void *event_info);
105 static void __edit_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info);
106 static void __controlbar_tab_changed_cb(void *data, Evas_Object *obj, void *event_info);
107 static void __bookmark_item_clicked_cb(void *data, Evas_Object *obj, void *eventInfo);
108 static void __delete_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj, void *event_info);
109 static void __cancel_confirm_response_by_slide_button_cb(void *data, Evas_Object *obj, void *event_info);
110 static void __delete_confirm_response_by_edit_mode_cb(void *data, Evas_Object *obj, void *event_info);
111 static void __create_folder_button(void *data, Evas_Object *obj, void *event_info);
112 static void __delete_controlbar_item_clicked_cb(void *data, Evas_Object *obj, void *event_info);
113 static void __add_to_bookmark_cb(void *data, Evas_Object *obj, void *event_info);
114 static void __naviframe_pop_finished_cb(void *data , Evas_Object *obj, void *event_info);
116 /* genlist callback functions. */
117 static char *__genlist_label_get_cb(void *data, Evas_Object *obj, const char *part);
118 static Evas_Object *__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part);
119 static void __genlist_move_cb(void *data, Evas_Object *obj, void *event_info);
121 Evas_Object *m_conformant;
122 Evas_Object *m_main_folder_genlist;
123 Evas_Object *m_sub_folder_conformant;
124 Evas_Object *m_sub_folder_genlist;
125 Evas_Object *m_content_layout;
126 Evas_Object *m_main_layout;
127 Evas_Object *m_sub_main_layout;
128 Evas_Object *m_genlist_content_layout;
129 Evas_Object *m_genlist_content_box;
130 Evas_Object *m_top_control_bar;
131 Evas_Object *m_bottom_control_bar;
132 Evas_Object *m_back_button;
133 Evas_Object *m_upper_folder_list;
134 Evas_Object *m_upper_folder_icon;
135 Evas_Object *m_edit_mode_select_all_layout;
136 Evas_Object *m_edit_mode_select_all_check_button;
137 Evas_Object *m_no_contents;
138 Evas_Object *m_rename_edit_field;
140 Elm_Object_Item *m_bookmark_delete_controlbar_item;
141 Elm_Object_Item *m_bookmark_edit_controlbar_item;
142 Elm_Object_Item *m_create_folder_controlbar_item;
144 Elm_Genlist_Item_Class m_bookmark_genlist_item_class;
145 Elm_Genlist_Item_Class m_folder_genlist_item_class;
147 vector<Browser_Bookmark_DB::bookmark_item *> m_main_folder_list;
148 vector<Browser_Bookmark_DB::bookmark_item *> m_sub_folder_list;
150 view_mode m_view_mode;
151 int m_current_folder_id;
152 string m_current_bookmark_navigationbar_title;
153 Elm_Object_Item *m_current_genlist_item_to_edit;
155 /* For select all processing popup. */
156 Evas_Object *m_processing_progress_bar;
157 Ecore_Timer *m_processing_popup_timer;
158 Elm_Object_Item *m_processed_it;
159 int m_processed_count;
160 int m_total_item_count;
161 Evas_Object *m_processing_popup;
162 Evas_Object *m_processing_popup_layout;
163 Eina_Bool m_select_all_check_value;
165 Elm_Object_Item *m_current_sweep_item;
166 Elm_Object_Item *m_navi_it;
168 Evas_Object *m_delete_confirm_popup;
170 #endif /* BROWSER_BOOKMARK_VIEW_H */