9776a9bc136285a54327f487b567388130203b47
[profile/ivi/org.tizen.browser.git] / src / browser-data-manager.cpp
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 #include "browser-add-to-bookmark-view.h"
18 #include "browser-bookmark-db.h"
19 #include "browser-bookmark-view.h"
20 #include "browser-config.h"
21 #include "browser-data-manager.h"
22 #include "browser-history-db.h"
23 #include "browser-history-layout.h"
24 #include "browser-multi-window-view.h"
25 #include "browser-new-folder-view.h"
26 #include "browser-select-folder-view.h"
27 #include "browser-view.h"
28
29 Browser_Data_Manager::Browser_Data_Manager(void)
30 :
31         m_browser_view(NULL)
32         ,m_bookmark_view(NULL)
33         ,m_add_to_bookmark_view(NULL)
34         ,m_edit_bookmark_view(NULL)
35         ,m_new_folder_view(NULL)
36         ,m_select_folder_view(NULL)
37         ,m_history_layout(NULL)
38         ,m_multi_window_view(NULL)
39         ,m_bookmark_db(NULL)
40         ,m_history_db(NULL)
41         ,m_stack_status(0)
42 {
43         BROWSER_LOGD("[%s]", __func__);
44 }
45
46 Browser_Data_Manager::~Browser_Data_Manager(void)
47 {
48         BROWSER_LOGD("[%s]", __func__);
49         if (m_bookmark_view) {
50                 delete m_bookmark_view;
51                 m_bookmark_view = NULL;
52         }
53         if (m_add_to_bookmark_view) {
54                 delete m_add_to_bookmark_view;
55                 m_add_to_bookmark_view = NULL;
56         }
57         if (m_edit_bookmark_view) {
58                 delete m_edit_bookmark_view;
59                 m_edit_bookmark_view = NULL;
60         }
61         if (m_new_folder_view) {
62                 delete m_new_folder_view;
63                 m_new_folder_view = NULL;
64         }
65         if (m_select_folder_view) {
66                 delete m_select_folder_view;
67                 m_select_folder_view = NULL;
68         }
69         if (m_history_layout) {
70                 delete m_history_layout;
71                 m_history_layout = NULL;
72         }
73         if (m_bookmark_db) {
74                 delete m_bookmark_db;
75                 m_bookmark_db = NULL;
76         }
77         if (m_history_db) {
78                 delete m_history_db;
79                 m_history_db = NULL;
80         }
81         if (m_multi_window_view) {
82                 delete m_multi_window_view;
83                 m_multi_window_view = NULL;
84         }
85 }
86
87
88 Eina_Bool Browser_Data_Manager::is_in_view_stack(view_stack_status view)
89 {
90         BROWSER_LOGD("m_stack_status = %d, view = %d, m_stack_status & view = %d",
91                 m_stack_status, view, m_stack_status & view);
92
93         if (m_stack_status & view)
94                 return EINA_TRUE;
95         else
96                 return EINA_FALSE;
97 }
98
99 void Browser_Data_Manager::set_browser_view(Browser_View *browser_view)
100 {
101         BROWSER_LOGD("[%s]", __func__);
102         m_browser_view = browser_view;
103         m_stack_status = m_stack_status | BR_BROWSER_VIEW;
104 }
105
106 Browser_Bookmark_View *Browser_Data_Manager::create_bookmark_view(void)
107 {
108         BROWSER_LOGD("[%s]", __func__);
109         if (m_bookmark_view)
110                 destroy_bookmark_view();
111
112         m_bookmark_view = new(nothrow) Browser_Bookmark_View;
113         if (!m_bookmark_view)
114                 BROWSER_LOGE("new Browser_Bookmark_View failed");
115         else
116                 m_stack_status = m_stack_status | BR_BOOKMARK_VIEW;
117
118         return m_bookmark_view;
119 }
120
121 void Browser_Data_Manager::destroy_bookmark_view(void)
122 {
123         BROWSER_LOGD("[%s]", __func__);
124         if (m_bookmark_view) {
125                 delete m_bookmark_view;
126                 m_bookmark_view = NULL;
127                 m_stack_status = m_stack_status - BR_BOOKMARK_VIEW;
128         }
129 }
130
131 Browser_Bookmark_DB *Browser_Data_Manager::create_bookmark_db(void)
132 {
133         BROWSER_LOGD("[%s]", __func__);
134         if (m_bookmark_db)
135                 destroy_bookmark_db();
136
137         m_bookmark_db = new(nothrow) Browser_Bookmark_DB;
138         if (!m_bookmark_db)
139                 BROWSER_LOGE("new Browser_Bookmark_DB failed");
140
141         return m_bookmark_db;
142 }
143
144 void Browser_Data_Manager::destroy_bookmark_db(void)
145 {
146         BROWSER_LOGD("[%s]", __func__);
147         if (m_bookmark_db) {
148                 delete m_bookmark_db;
149                 m_bookmark_db = NULL;
150         }
151 }
152
153 Browser_Add_To_Bookmark_View *Browser_Data_Manager::create_add_to_bookmark_view(string title,
154                                                                 string url, int current_folder_id)
155 {
156         BROWSER_LOGD("[%s]", __func__);
157         if (m_add_to_bookmark_view)
158                 destroy_add_to_bookmark_view();
159
160         m_add_to_bookmark_view = new(nothrow) Browser_Add_To_Bookmark_View(title, url,
161                                                                 EINA_FALSE, current_folder_id);
162         if (!m_add_to_bookmark_view)
163                 BROWSER_LOGE("new Browser_Add_To_Bookmark_View failed");
164         else
165                 m_stack_status = m_stack_status | BR_ADD_TO_BOOKMARK_VIEW;
166
167         return m_add_to_bookmark_view;
168 }
169
170 void Browser_Data_Manager::destroy_add_to_bookmark_view(void)
171 {
172         BROWSER_LOGD("[%s]", __func__);
173         if (m_add_to_bookmark_view) {
174                 delete m_add_to_bookmark_view;
175                 m_add_to_bookmark_view = NULL;
176                 m_stack_status = m_stack_status - BR_ADD_TO_BOOKMARK_VIEW;
177         }
178 }
179
180 Browser_Add_To_Bookmark_View *Browser_Data_Manager::create_edit_bookmark_view(string title,
181                                                                 string url, int current_folder_id)
182 {
183         BROWSER_LOGD("[%s]", __func__);
184         if (m_edit_bookmark_view)
185                 destroy_edit_bookmark_view();
186
187         m_edit_bookmark_view = new(nothrow) Browser_Add_To_Bookmark_View(title, url,
188                                                                 EINA_TRUE, current_folder_id);
189         if (!m_edit_bookmark_view)
190                 BROWSER_LOGE("new Browser_Add_To_Bookmark_View failed");
191         else
192                 m_stack_status = m_stack_status | BR_EDIT_BOOKMARK_VIEW;
193
194         return m_edit_bookmark_view;
195 }
196
197 void Browser_Data_Manager::destroy_edit_bookmark_view(void)
198 {
199         BROWSER_LOGD("[%s]", __func__);
200         if (m_edit_bookmark_view) {
201                 delete m_edit_bookmark_view;
202                 m_edit_bookmark_view = NULL;
203                 m_stack_status = m_stack_status - BR_EDIT_BOOKMARK_VIEW;
204         }
205 }
206
207 Browser_New_Folder_View *Browser_Data_Manager::create_new_folder_view(void)
208 {
209         BROWSER_LOGD("[%s]", __func__);
210         if (m_new_folder_view)
211                 destroy_new_folder_view();
212
213         m_new_folder_view = new(nothrow) Browser_New_Folder_View;
214         if (!m_new_folder_view)
215                 BROWSER_LOGE("new Browser_New_Folder_View failed");
216         else
217                 m_stack_status = m_stack_status | BR_NEW_FOLDER_VIEW;
218
219         return m_new_folder_view;
220 }
221
222 void Browser_Data_Manager::destroy_new_folder_view(void)
223 {
224         BROWSER_LOGD("[%s]", __func__);
225         if (m_new_folder_view) {
226                 delete m_new_folder_view;
227                 m_new_folder_view = NULL;
228                 m_stack_status = m_stack_status - BR_NEW_FOLDER_VIEW;
229         }
230 }
231
232 /* 'current_folder_id' is used to mark the current folder radio button in select folder view. */
233 Browser_Select_Folder_View *Browser_Data_Manager::create_select_folder_view(int current_folder_id)
234 {
235         BROWSER_LOGD("[%s]", __func__);
236         if (m_select_folder_view)
237                 destroy_select_folder_view();
238
239         m_select_folder_view = new(nothrow) Browser_Select_Folder_View(current_folder_id);
240         if (!m_select_folder_view)
241                 BROWSER_LOGE("new Browser_Select_Folder_View failed");
242         else
243                 m_stack_status = m_stack_status | BR_SELECT_FOLDER_VIEW;
244
245         return m_select_folder_view;
246 }
247
248 void Browser_Data_Manager::destroy_select_folder_view(void)
249 {
250         BROWSER_LOGD("[%s]", __func__);
251         if (m_select_folder_view) {
252                 delete m_select_folder_view;
253                 m_select_folder_view = NULL;
254                 m_stack_status = m_stack_status - BR_SELECT_FOLDER_VIEW;
255         }
256 }
257
258 Browser_Multi_Window_View* Browser_Data_Manager::create_multi_window_view(void)
259 {
260         BROWSER_LOGD("[%s]", __func__);
261         if (m_multi_window_view)
262                 destroy_multi_window_view();
263
264         m_multi_window_view = new(nothrow) Browser_Multi_Window_View;
265         if (!m_multi_window_view) {
266                 BROWSER_LOGE("new Browser_Multi_Window_View failed");
267                 return NULL;
268         } else
269                 m_stack_status = m_stack_status | BR_MULTI_WINDOW_VIEW;
270
271         return m_multi_window_view;
272 }
273
274 void Browser_Data_Manager::destroy_multi_window_view(void)
275 {
276         BROWSER_LOGD("[%s]", __func__);
277         if (m_multi_window_view) {
278                 delete m_multi_window_view;
279                 m_multi_window_view = NULL;
280                 m_stack_status = m_stack_status - BR_MULTI_WINDOW_VIEW;
281         }
282 }
283
284 Browser_History_Layout *Browser_Data_Manager::create_history_layout(void)
285 {
286         BROWSER_LOGD("[%s]", __func__);
287         if (m_history_layout)
288                 destroy_history_layout();
289
290         m_history_layout = new(nothrow) Browser_History_Layout;
291         if (!m_history_layout)
292                 BROWSER_LOGE("new Browser_History_Layout failed");
293
294         return m_history_layout;
295 }
296
297 void Browser_Data_Manager::destroy_history_layout(void)
298 {
299         BROWSER_LOGD("[%s]", __func__);
300         if (m_history_layout) {
301                 delete m_history_layout;
302                 m_history_layout = NULL;
303         }
304 }
305
306 Browser_History_DB *Browser_Data_Manager::create_history_db(void)
307 {
308         BROWSER_LOGD("[%s]", __func__);
309         if (m_history_db)
310                 destroy_history_db();
311
312         m_history_db = new(nothrow) Browser_History_DB;
313         if (!m_history_db)
314                 BROWSER_LOGE("new Browser_History_DB failed");
315
316         return m_history_db;
317 }
318
319 void Browser_Data_Manager::destroy_history_db(void)
320 {
321         BROWSER_LOGD("[%s]", __func__);
322         if (m_history_db) {
323                 delete m_history_db;
324                 m_history_db = NULL;
325         }
326 }
327