Merge "[Title] Set divided selection info layout due to rotating issue." into 2.0_beta
[profile/ivi/org.tizen.browser.git] / src / browser-bookmark / browser-bookmark-view.h
1 /*
2  * Copyright 2012  Samsung Electronics Co., Ltd
3  *
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
7  *
8  *    http://www.tizenopensource.org/license
9  *
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.
15  *
16  */
17
18
19
20 #ifndef BROWSER_BOOKMARK_VIEW_H
21 #define BROWSER_BOOKMARK_VIEW_H
22
23 #include "browser-bookmark-db.h"
24 #include "browser-common-view.h"
25 #include "browser-config.h"
26
27 class Browser_Bookmark_DB;
28
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;
33 public:
34         Browser_Bookmark_View(void);
35         ~Browser_Bookmark_View(void);
36
37         Eina_Bool init(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);
41 protected:
42         void history_item_clicked(const char *url);
43 private:
44         typedef enum _view_mode {
45                 BOOKMARK_VIEW   = 0,
46                 HISTORY_VIEW
47         } view_mode;
48
49         typedef enum _controlbar_type {
50                 BOOKMARK_VIEW_DEFAULT   = 0,
51                 BOOKMARK_VIEW_EDIT_MODE,
52                 HISTORY_VIEW_DEFAULT,
53                 HISTORY_VIEW_EDIT_MODE
54         } controlbar_type;
55
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);
77
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);
81
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);
84
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);
103 #endif
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);
115
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);
120
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;
139
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;
143
144         Elm_Genlist_Item_Class m_bookmark_genlist_item_class;
145         Elm_Genlist_Item_Class m_folder_genlist_item_class;
146
147         vector<Browser_Bookmark_DB::bookmark_item *> m_main_folder_list;
148         vector<Browser_Bookmark_DB::bookmark_item *> m_sub_folder_list;
149
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;
154
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;
164
165         Elm_Object_Item *m_current_sweep_item;
166         Elm_Object_Item *m_navi_it;
167
168         Evas_Object *m_delete_confirm_popup;
169 };
170 #endif /* BROWSER_BOOKMARK_VIEW_H */
171