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