a00b49912050d30862e280201c9ec66764ec4f35
[profile/ivi/org.tizen.browser.git] / src / browser-settings / browser-settings-main-view.cpp
1 /*\r
2  * Copyright 2012  Samsung Electronics Co., Ltd\r
3  *\r
4  * Licensed under the Flora License, Version 1.0 (the "License");\r
5  * you may not use this file except in compliance with the License.\r
6  * You may obtain a copy of the License at\r
7  *\r
8  *    http://www.tizenopensource.org/license\r
9  *\r
10  * Unless required by applicable law or agreed to in writing, software\r
11  * distributed under the License is distributed on an "AS IS" BASIS,\r
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
13  * See the License for the specific language governing permissions and\r
14  * limitations under the License.\r
15  *\r
16  */\r
17 \r
18 \r
19 #include "browser-view.h"\r
20 #include "browser-data-manager.h"\r
21 #include "browser-history-db.h"\r
22 #include "browser-settings-clear-data-view.h"\r
23 #include "browser-settings-edit-homepage-view.h"\r
24 #include "browser-settings-main-view.h"\r
25 #include "browser-settings-website-setting.h"\r
26 \r
27 #include "browser-geolocation-db.h"\r
28 \r
29 #include "browser-settings-user-agent-view.h"\r
30 \r
31 Browser_Settings_Main_View::Browser_Settings_Main_View(void)\r
32 :\r
33         m_genlist(NULL)\r
34         ,m_back_button(NULL)\r
35         ,m_homepage_radio_group(NULL)\r
36         ,m_edit_homepage_view(NULL)\r
37         ,m_default_view_level_radio_group(NULL)\r
38         ,m_auto_save_id_pass_radio_group(NULL)\r
39         ,m_run_javascript_check(NULL)\r
40         ,m_display_images_check(NULL)\r
41         ,m_accept_cookies_check(NULL)\r
42         ,m_enable_location_check(NULL)\r
43         ,m_clear_location_confirm_popup(NULL)\r
44         ,m_clear_cache_confirm_popup(NULL)\r
45         ,m_clear_history_confirm_popup(NULL)\r
46         ,m_clear_data_view(NULL)\r
47         ,m_block_popup_check(NULL)\r
48         ,m_reset_confirm_popup(NULL)\r
49         ,m_navi_it(NULL)\r
50         ,m_show_security_warnings_check(NULL)\r
51         ,m_clear_all_cookies_data_confirm_popup(NULL)\r
52         ,m_website_setting(NULL)\r
53         ,m_user_agent_view(NULL)\r
54 {\r
55         BROWSER_LOGD("[%s]", __func__);\r
56 }\r
57 \r
58 Browser_Settings_Main_View::~Browser_Settings_Main_View(void)\r
59 {\r
60         BROWSER_LOGD("[%s]", __func__);\r
61 \r
62         if (m_edit_homepage_view) {\r
63                 delete m_edit_homepage_view;\r
64                 m_edit_homepage_view = NULL;\r
65         }\r
66         if (m_clear_data_view) {\r
67                 delete m_clear_data_view;\r
68                 m_clear_data_view = NULL;\r
69         }\r
70         if (m_website_setting) {\r
71                 delete m_website_setting;\r
72                 m_website_setting = NULL;\r
73         }\r
74 \r
75         if (m_user_agent_view) {\r
76                 delete m_user_agent_view;\r
77                 m_user_agent_view = NULL;\r
78         }\r
79 \r
80         evas_object_smart_callback_del(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb);\r
81 }\r
82 \r
83 Eina_Bool Browser_Settings_Main_View::init(void)\r
84 {\r
85         BROWSER_LOGD("[%s]", __func__);\r
86         return _create_main_layout();\r
87 }\r
88 \r
89 void Browser_Settings_Main_View::__back_button_clicked_cb(void *data, Evas_Object* obj,\r
90                                                                         void* event_info)\r
91 {\r
92         BROWSER_LOGD("[%s]", __func__);\r
93 \r
94         if (elm_naviframe_bottom_item_get(m_navi_bar) != elm_naviframe_top_item_get(m_navi_bar))\r
95                 elm_naviframe_item_pop(m_navi_bar);\r
96 \r
97         m_data_manager->get_browser_view()->return_to_browser_view();\r
98 }\r
99 \r
100 void Browser_Settings_Main_View::__naviframe_pop_finished_cb(void *data , Evas_Object *obj, void *event_info)\r
101 {\r
102         BROWSER_LOGD("[%s]", __func__);\r
103         if (!data)\r
104                 return;\r
105 \r
106         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
107         Elm_Object_Item *it = (Elm_Object_Item *)event_info;\r
108 \r
109         if (main_view->m_navi_it != elm_naviframe_top_item_get(m_navi_bar))\r
110                 return;\r
111 \r
112         if (main_view->m_edit_homepage_view) {\r
113                 delete main_view->m_edit_homepage_view;\r
114                 main_view->m_edit_homepage_view = NULL;\r
115 \r
116                 /* If back from edit user homepage, update the url string. */\r
117                 char* homepage = NULL;\r
118                 if (br_preference_get_str(HOMEPAGE_KEY, &homepage) == false) {\r
119                         BROWSER_LOGE("failed to get %s preferenct\n", HOMEPAGE_KEY);\r
120                         return;\r
121                 }\r
122                 if (homepage) {\r
123                         if (!strncmp(homepage, USER_HOMEPAGE,\r
124                                                 strlen(USER_HOMEPAGE)))\r
125                                 elm_radio_value_set(main_view->m_homepage_radio_group, 2);\r
126 \r
127                         free(homepage);\r
128 \r
129                         elm_genlist_realized_items_update(main_view->m_genlist);\r
130                 }\r
131         }\r
132 \r
133         if (main_view->m_edit_homepage_view) {\r
134                 delete main_view->m_edit_homepage_view;\r
135                 main_view->m_edit_homepage_view = NULL;\r
136         }\r
137 \r
138         if (main_view->m_clear_data_view) {\r
139                 delete main_view->m_clear_data_view;\r
140                 main_view->m_clear_data_view = NULL;\r
141         }\r
142         if (main_view->m_user_agent_view) {\r
143                 delete main_view->m_user_agent_view;\r
144                 main_view->m_user_agent_view = NULL;\r
145         }\r
146 \r
147         BROWSER_LOGD("main_view->m_website_setting = %d", main_view->m_website_setting);\r
148         if (main_view->m_website_setting) {\r
149                 delete main_view->m_website_setting;\r
150                 main_view->m_website_setting = NULL;\r
151         }\r
152         /*Disable website setting menu when there is no such data */\r
153         Browser_Geolocation_DB *geo_db = main_view->get_data_manager()->get_geolocation_db();\r
154         if ((geo_db->get_geolocation_info_count()) == 0) {\r
155                 elm_object_item_disabled_set(main_view->m_website_setting_callback_data.it, EINA_TRUE);\r
156                 Ewk_Context *context = ewk_context_default_get();\r
157                 ewk_context_application_cache_origins_get(context, main_view->__application_cache_origin_get_cb, main_view);\r
158                 ewk_context_web_storage_origins_get(context, main_view->__web_storage_origin_get_cb, main_view);\r
159                 ewk_context_web_database_origins_get(context, main_view->__web_database_origin_get_cb, main_view);\r
160         }\r
161 }\r
162 \r
163 Eina_Bool Browser_Settings_Main_View::_create_main_layout(void)\r
164 {\r
165         BROWSER_LOGD("[%s]", __func__);\r
166 \r
167         m_genlist = _create_content_genlist();\r
168         if (!m_genlist) {\r
169                 BROWSER_LOGE("_create_content_genlist failed");\r
170                 return EINA_FALSE;\r
171         }\r
172 \r
173         evas_object_show(m_genlist);\r
174 \r
175         m_back_button = elm_button_add(m_genlist);\r
176         if (!m_back_button) {\r
177                 BROWSER_LOGE("elm_button_add failed");\r
178                 return EINA_FALSE;\r
179         }\r
180         elm_object_style_set(m_back_button, "browser/bookmark_controlbar_back");\r
181         evas_object_show(m_back_button);\r
182         evas_object_smart_callback_add(m_back_button, "clicked", __back_button_clicked_cb, this);\r
183 \r
184         m_homepage_radio_group = elm_radio_add(m_genlist);\r
185         if (!m_homepage_radio_group) {\r
186                 BROWSER_LOGE("elm_radio_add failed.");\r
187                 return EINA_FALSE;\r
188         }\r
189         elm_radio_state_value_set(m_homepage_radio_group, -1);\r
190 \r
191         m_default_view_level_radio_group = elm_radio_add(m_genlist);\r
192         if (!m_default_view_level_radio_group) {\r
193                 BROWSER_LOGE("elm_radio_add failed.");\r
194                 return EINA_FALSE;\r
195         }\r
196         elm_radio_state_value_set(m_default_view_level_radio_group, -1);\r
197 \r
198         m_auto_save_id_pass_radio_group = elm_radio_add(m_genlist);\r
199         if (!m_auto_save_id_pass_radio_group) {\r
200                 BROWSER_LOGE("elm_radio_add failed.");\r
201                 return EINA_FALSE;\r
202         }\r
203         elm_radio_state_value_set(m_auto_save_id_pass_radio_group, -1);\r
204         m_navi_it = elm_naviframe_item_push(m_navi_bar, BR_STRING_INTERNET,\r
205                                                         m_back_button, NULL, m_genlist, "browser_titlebar");\r
206 \r
207         evas_object_smart_callback_add(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb, this);\r
208 \r
209         return EINA_TRUE;\r
210 }\r
211 \r
212 Evas_Object *Browser_Settings_Main_View::__genlist_icon_get(void *data, Evas_Object *obj, const char *part)\r
213 {\r
214         if (!data)\r
215                 return NULL;\r
216 \r
217         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
218         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
219         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
220 \r
221         if (type == BR_HOMEPAGE_SUBMENU_RECENTLY_VISITED_SITE\r
222 #if defined(FEATURE_MOST_VISITED_SITES)\r
223             || type == BR_HOMEPAGE_SUBMENU_MOST_VISITED_SITES\r
224 #endif\r
225             || type == BR_HOMEPAGE_SUBMENU_USER_HOMEPAGE\r
226             || type == BR_HOMEPAGE_SUBMENU_CURRENT_PAGE\r
227             || type == BR_HOMEPAGE_SUBMENU_EMPTY_PAGE) {\r
228                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
229                         Evas_Object *radio_button = elm_radio_add(obj);\r
230                         if (radio_button) {\r
231 #if defined(FEATURE_MOST_VISITED_SITES)\r
232                                 if (type == BR_HOMEPAGE_SUBMENU_MOST_VISITED_SITES)\r
233                                         elm_radio_state_value_set(radio_button, 0);\r
234                                 else\r
235 #endif\r
236                                 if (type == BR_HOMEPAGE_SUBMENU_RECENTLY_VISITED_SITE)\r
237                                         elm_radio_state_value_set(radio_button, 1);\r
238                                 else if (type == BR_HOMEPAGE_SUBMENU_USER_HOMEPAGE)\r
239                                         elm_radio_state_value_set(radio_button, 2);\r
240                                 else if (type == BR_HOMEPAGE_SUBMENU_CURRENT_PAGE)\r
241                                         elm_radio_state_value_set(radio_button, 3);\r
242                                 else if (type == BR_HOMEPAGE_SUBMENU_EMPTY_PAGE)\r
243                                         elm_radio_state_value_set(radio_button, 4);\r
244 \r
245                                 elm_radio_group_add(radio_button, main_view->m_homepage_radio_group);\r
246                                 evas_object_propagate_events_set(radio_button, EINA_FALSE);\r
247 \r
248                                 evas_object_smart_callback_add(radio_button, "changed",\r
249                                                         __homepage_sub_item_clicked_cb, data);\r
250 \r
251                                 char* homepage = NULL;\r
252                                 if (br_preference_get_str(HOMEPAGE_KEY, &homepage) == false) {\r
253                                         BROWSER_LOGE("failed to get %s preference\n", HOMEPAGE_KEY);\r
254                                         return NULL;\r
255                                 }\r
256 \r
257                                 if (!homepage) {\r
258 #if defined(FEATURE_MOST_VISITED_SITES)\r
259                                         br_preference_set_str(HOMEPAGE_KEY, MOST_VISITED_SITES);\r
260                                         homepage = strdup(MOST_VISITED_SITES);\r
261 #else\r
262                                         br_preference_set_str(HOMEPAGE_KEY, USER_HOMEPAGE);\r
263                                         homepage = strdup(USER_HOMEPAGE);\r
264 #endif\r
265                                 }\r
266 \r
267                                 if (!homepage) {\r
268                                         BROWSER_LOGE("strdup failed");\r
269                                         return NULL;\r
270                                 }\r
271 \r
272 #if defined(FEATURE_MOST_VISITED_SITES)\r
273                                 if (!strncmp(homepage, MOST_VISITED_SITES,\r
274                                                         strlen(MOST_VISITED_SITES)))\r
275                                         elm_radio_value_set(main_view->m_homepage_radio_group, 0);\r
276                                 else\r
277 #endif\r
278                                 if (!strncmp(homepage, RECENTLY_VISITED_SITE,\r
279                                                         strlen(RECENTLY_VISITED_SITE)))\r
280                                         elm_radio_value_set(main_view->m_homepage_radio_group, 1);\r
281                                 else if (!strncmp(homepage, USER_HOMEPAGE,\r
282                                                         strlen(USER_HOMEPAGE)))\r
283                                         elm_radio_value_set(main_view->m_homepage_radio_group, 2);\r
284                                 else if (!strncmp(homepage, EMPTY_PAGE,\r
285                                                         strlen(EMPTY_PAGE)))\r
286                                         elm_radio_value_set(main_view->m_homepage_radio_group, 4);\r
287                                 else\r
288                                         elm_radio_value_set(main_view->m_homepage_radio_group, 3);\r
289 \r
290                                 free(homepage);\r
291                         }\r
292 \r
293                         return radio_button;\r
294                 }\r
295         } else if (type == BR_CONTENT_SUBMENU_FIT_TO_WIDTH\r
296              || type == BR_CONTENT_SUBMENU_READABLE) {\r
297                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
298                         Evas_Object *radio_button = elm_radio_add(obj);\r
299                         if (radio_button) {\r
300                                 if (type == BR_CONTENT_SUBMENU_FIT_TO_WIDTH)\r
301                                         elm_radio_state_value_set(radio_button, 0);\r
302                                 else\r
303                                         elm_radio_state_value_set(radio_button, 1);\r
304 \r
305                                 elm_radio_group_add(radio_button, main_view->m_default_view_level_radio_group);\r
306 \r
307                                 char *view_level = NULL;\r
308                                 if (br_preference_get_str(DEFAULT_VIEW_LEVEL_KEY, &view_level) == false) {\r
309                                         BROWSER_LOGE("failed to get %s prefernece", DEFAULT_VIEW_LEVEL_KEY);\r
310                                         return NULL;\r
311                                 }\r
312                                 if (!view_level) {\r
313                                         br_preference_set_str(DEFAULT_VIEW_LEVEL_KEY, READABLE);\r
314                                         view_level = strdup(BR_STRING_READABLE);\r
315                                 }\r
316                                 if (!view_level) {\r
317                                         BROWSER_LOGE("strdup failed");\r
318                                         return NULL;\r
319                                 }\r
320 \r
321                                 if (!strncmp(view_level, FIT_TO_WIDTH, strlen(FIT_TO_WIDTH)))\r
322                                         elm_radio_value_set(main_view->m_default_view_level_radio_group, 0);\r
323                                 else\r
324                                         elm_radio_value_set(main_view->m_default_view_level_radio_group, 1);\r
325 \r
326                                 free(view_level);\r
327                         }\r
328 \r
329                         return radio_button;\r
330                 }\r
331         } else if (type == BR_CONTENT_MENU_RUN_JAVASCRIPT) {\r
332                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
333                         main_view->m_run_javascript_check = elm_check_add(obj);\r
334                         if (main_view->m_run_javascript_check) {\r
335                                 elm_object_style_set(main_view->m_run_javascript_check, "on&off");\r
336                                 evas_object_smart_callback_add(main_view->m_run_javascript_check, "changed",\r
337                                                 __run_javascript_check_changed_cb, main_view->m_run_javascript_check);\r
338 \r
339                                 bool run_javascript = 1;\r
340                                 br_preference_get_bool(RUN_JAVASCRIPT_KEY, &run_javascript);\r
341                                 elm_check_state_set(main_view->m_run_javascript_check, run_javascript);\r
342                                 evas_object_propagate_events_set(main_view->m_run_javascript_check, EINA_FALSE);\r
343                         }\r
344                         return main_view->m_run_javascript_check;\r
345                 }\r
346         } else if (type == BR_CONTENT_MENU_DISPLAY_IMAGES) {\r
347                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
348                         main_view->m_display_images_check = elm_check_add(obj);\r
349                         if (main_view->m_display_images_check) {\r
350                                 elm_object_style_set(main_view->m_display_images_check, "on&off");\r
351                                 evas_object_smart_callback_add(main_view->m_display_images_check, "changed",\r
352                                                 __display_images_check_changed_cb, main_view->m_display_images_check);\r
353 \r
354                                 bool display_images = 1;\r
355                                 br_preference_get_bool(DISPLAY_IMAGES_KEY, &display_images);\r
356                                 elm_check_state_set(main_view->m_display_images_check, display_images);\r
357                                 evas_object_propagate_events_set(main_view->m_display_images_check, EINA_FALSE);\r
358                         }\r
359                         return main_view->m_display_images_check;\r
360                 }\r
361         } else if (type == BR_CONTENT_MENU_BLOCK_POPUP) {\r
362                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
363                         main_view->m_block_popup_check = elm_check_add(obj);\r
364                         if (main_view->m_block_popup_check) {\r
365                                 elm_object_style_set(main_view->m_block_popup_check, "on&off");\r
366                                 evas_object_smart_callback_add(main_view->m_block_popup_check, "changed",\r
367                                                 __block_popup_check_changed_cb, main_view->m_block_popup_check);\r
368 \r
369                                 bool block_popup = 1;\r
370                                 br_preference_get_bool(BLOCK_POPUP_KEY, &block_popup);\r
371                                 elm_check_state_set(main_view->m_block_popup_check, block_popup);\r
372                                 evas_object_propagate_events_set(main_view->m_block_popup_check, EINA_FALSE);\r
373                         }\r
374                         return main_view->m_block_popup_check;\r
375                 }\r
376         } else if (type == BR_PRIVATE_MENU_SHOW_SECURITY_WARNINGS) {\r
377                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
378                         main_view->m_show_security_warnings_check = elm_check_add(obj);\r
379                         if (main_view->m_show_security_warnings_check) {\r
380                                 elm_object_style_set(main_view->m_show_security_warnings_check, "on&off");\r
381                                 evas_object_smart_callback_add(main_view->m_show_security_warnings_check, "changed",\r
382                                                 __show_security_warnings_check_changed_cb, main_view->m_show_security_warnings_check);\r
383 \r
384                                 bool show_security_warnings = 1;\r
385                                 br_preference_get_bool(SHOW_SECURITY_WARNINGS_KEY, &show_security_warnings);\r
386                                 elm_check_state_set(main_view->m_show_security_warnings_check, show_security_warnings);\r
387                                 evas_object_propagate_events_set(main_view->m_show_security_warnings_check, EINA_FALSE);\r
388                         }\r
389                         return main_view->m_show_security_warnings_check;\r
390                 }\r
391         } else if (type == BR_PRIVACY_MENU_ACCEPT_COOKIES) {\r
392                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
393                         main_view->m_accept_cookies_check = elm_check_add(obj);\r
394                         if (main_view->m_accept_cookies_check) {\r
395                                 elm_object_style_set(main_view->m_accept_cookies_check, "on&off");\r
396                                 evas_object_smart_callback_add(main_view->m_accept_cookies_check, "changed",\r
397                                                 __accept_cookies_check_changed_cb, main_view->m_accept_cookies_check);\r
398 \r
399                                 bool accept_cookies = 1;\r
400                                 br_preference_get_bool(ACCEPT_COOKIES_KEY, &accept_cookies);\r
401                                 elm_check_state_set(main_view->m_accept_cookies_check, accept_cookies);\r
402                                 evas_object_propagate_events_set(main_view->m_accept_cookies_check, EINA_FALSE);\r
403                         }\r
404                         return main_view->m_accept_cookies_check;\r
405                 }\r
406         } else if (type == BR_PRIVACY_MENU_ENABLE_LOCATION) {\r
407                 if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {\r
408                         main_view->m_enable_location_check = elm_check_add(obj);\r
409                         if (main_view->m_enable_location_check) {\r
410                                 elm_object_style_set(main_view->m_enable_location_check, "on&off");\r
411                                 evas_object_smart_callback_add(main_view->m_enable_location_check, "changed",\r
412                                                 __enable_location_check_changed_cb, main_view);\r
413 \r
414                                 bool enable_location = 1;\r
415                                 br_preference_get_bool(ENABLE_LOCATION_KEY, &enable_location);\r
416                                 elm_check_state_set(main_view->m_enable_location_check, enable_location);\r
417                                 evas_object_propagate_events_set(main_view->m_enable_location_check, EINA_FALSE);\r
418                         }\r
419                         return main_view->m_enable_location_check;\r
420                 }\r
421         }\r
422         return NULL;\r
423 }\r
424 \r
425 void Browser_Settings_Main_View::__run_javascript_check_changed_cb(void *data,\r
426                                                         Evas_Object *obj, void *event_info)\r
427 {\r
428         BROWSER_LOGD("[%s]", __func__);\r
429         const char *key = RUN_JAVASCRIPT_KEY;\r
430         Eina_Bool state = elm_check_state_get((Evas_Object*)data);\r
431         br_preference_set_bool(key, state);\r
432 }\r
433 \r
434 void Browser_Settings_Main_View::__display_images_check_changed_cb(void *data,\r
435                                                         Evas_Object *obj, void *event_info)\r
436 {\r
437         BROWSER_LOGD("[%s]", __func__);\r
438         const char *key = DISPLAY_IMAGES_KEY;\r
439         Eina_Bool state = elm_check_state_get((Evas_Object*)data);\r
440         br_preference_set_bool(key, state);\r
441 }\r
442 \r
443 void Browser_Settings_Main_View::__block_popup_check_changed_cb(void *data,\r
444                                                         Evas_Object *obj, void *event_info)\r
445 {\r
446         BROWSER_LOGD("[%s]", __func__);\r
447         const char *key = BLOCK_POPUP_KEY;\r
448         Eina_Bool state = elm_check_state_get((Evas_Object*)data);\r
449         br_preference_set_bool(key, state);\r
450 }\r
451 \r
452 void Browser_Settings_Main_View::__show_security_warnings_check_changed_cb(void *data,\r
453                                                         Evas_Object *obj, void *event_info)\r
454 {\r
455         BROWSER_LOGD("[%s]", __func__);\r
456         const char *key = SHOW_SECURITY_WARNINGS_KEY;\r
457         Eina_Bool state = elm_check_state_get((Evas_Object*)data);\r
458         br_preference_set_bool(key, state);\r
459 }\r
460 \r
461 void Browser_Settings_Main_View::__accept_cookies_check_changed_cb(void *data,\r
462                                                         Evas_Object *obj, void *event_info)\r
463 {\r
464         BROWSER_LOGD("[%s]", __func__);\r
465         const char *key = ACCEPT_COOKIES_KEY;\r
466         Eina_Bool state = elm_check_state_get((Evas_Object*)data);\r
467         br_preference_set_bool(key, state);\r
468 }\r
469 \r
470 void Browser_Settings_Main_View::__enable_location_check_changed_cb(void *data,\r
471                                                         Evas_Object *obj, void *event_info)\r
472 {\r
473         BROWSER_LOGD("[%s]", __func__);\r
474 \r
475         if (!data) {\r
476                 BROWSER_LOGE("data is null");\r
477                 return;\r
478         }\r
479 \r
480         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
481         const char *key = ENABLE_LOCATION_KEY;\r
482 \r
483         Eina_Bool state = elm_check_state_get(obj);\r
484         br_preference_set_bool(key, state);\r
485 \r
486         elm_object_item_disabled_set(main_view->m_clear_location_access_callback_data.it, !state);\r
487 }\r
488 \r
489 char *Browser_Settings_Main_View::__genlist_label_get(void *data, Evas_Object *obj, const char *part)\r
490 {\r
491         if (!data)\r
492                 return NULL;\r
493 \r
494         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
495         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
496         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
497 \r
498         if (type == BR_HOMEPAGE_TITLE) {\r
499                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
500                         return strdup(BR_STRING_HOMEPAGE);\r
501         } else if (type == BR_HOMEPAGE_MENU) {\r
502                 if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
503                         return strdup(BR_STRING_HOMEPAGE);\r
504                 else if (!strncmp(part, "elm.text.2", strlen("elm.text.2"))) {\r
505                         char *homepage = NULL;\r
506                         if (br_preference_get_str(HOMEPAGE_KEY, &homepage) == false) {\r
507                                 BROWSER_LOGE("failed to get %s preference\n", HOMEPAGE_KEY);\r
508                                 return NULL;\r
509                         }\r
510                         BROWSER_LOGD("homepage = %s", homepage);\r
511                         if (homepage) {\r
512 #if defined(FEATURE_MOST_VISITED_SITES)\r
513                                 if (!strncmp(homepage, MOST_VISITED_SITES, strlen(MOST_VISITED_SITES))) {\r
514                                         free(homepage);\r
515                                         return strdup(BR_STRING_MOST_VISITED_SITES);\r
516                                 } else\r
517 #endif\r
518                                 if (!strncmp(homepage, RECENTLY_VISITED_SITE,\r
519                                                         strlen(RECENTLY_VISITED_SITE))) {\r
520                                         free(homepage);\r
521                                         return strdup(BR_STRING_RECENTLY_VISITED_SITE);\r
522                                 } else if (!strncmp(homepage, EMPTY_PAGE,\r
523                                         strlen(EMPTY_PAGE))) {\r
524                                         free(homepage);\r
525                                         return strdup(BR_STRING_BLANK_PAGE);\r
526                                 } else {\r
527                                         free(homepage);\r
528                                         return strdup(BR_STRING_USER_HOMEPAGE);\r
529                                 }\r
530                         }\r
531                         return NULL;\r
532                 }\r
533         }\r
534 #if defined(FEATURE_MOST_VISITED_SITES)\r
535         else if (type == BR_HOMEPAGE_SUBMENU_MOST_VISITED_SITES) {\r
536                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
537                         return strdup(BR_STRING_MOST_VISITED_SITES);\r
538         }\r
539 #endif\r
540         else if (type == BR_HOMEPAGE_SUBMENU_RECENTLY_VISITED_SITE) {\r
541                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
542                         return strdup(BR_STRING_RECENTLY_VISITED_SITE);\r
543         } else if (type == BR_HOMEPAGE_SUBMENU_USER_HOMEPAGE) {\r
544                 if (!strncmp(part, "elm.text", strlen("elm.text"))) {\r
545                         char *homepage = NULL;\r
546                         if (br_preference_get_str(USER_HOMEPAGE_KEY, &homepage) == false) {\r
547                                 BROWSER_LOGE("failed to get %s preference\n", USER_HOMEPAGE_KEY);\r
548                                 return NULL;\r
549                         }\r
550                         return homepage;\r
551                 }\r
552         } else if (type == BR_HOMEPAGE_SUBMENU_CURRENT_PAGE) {\r
553                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
554                         return strdup(BR_STRING_CURRENT_PAGE);\r
555         } else if (type == BR_HOMEPAGE_SUBMENU_EMPTY_PAGE) {\r
556                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
557                         return strdup(BR_STRING_BLANK_PAGE);\r
558         } else if (type == BR_CONTENT_MENU_DEFAULT_VIEW_LEVEL) {\r
559                 if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
560                         return strdup(BR_STRING_DEFAULT_VIEW_LEVEL);\r
561                 else if (!strncmp(part, "elm.text.2", strlen("elm.text.2"))) {\r
562                         char *view_level = NULL;\r
563                         if (br_preference_get_str(DEFAULT_VIEW_LEVEL_KEY, &view_level) == false) {\r
564                                 BROWSER_LOGE("failed to get %s preference\n", DEFAULT_VIEW_LEVEL_KEY);\r
565                                 return NULL;\r
566                         }\r
567                         if (view_level) {\r
568                                 if (!strncmp(view_level, FIT_TO_WIDTH, strlen(FIT_TO_WIDTH))) {\r
569                                         free(view_level);\r
570                                         return strdup(BR_STRING_FIT_TO_WIDTH);\r
571                                 } else {\r
572                                         free(view_level);\r
573                                         return strdup(BR_STRING_READABLE);\r
574                                 }\r
575                         }\r
576                         return NULL;\r
577                 }\r
578         } else if (type == BR_CONTENT_SUBMENU_FIT_TO_WIDTH) {\r
579                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
580                         return strdup(BR_STRING_FIT_TO_WIDTH);\r
581         } else if (type == BR_CONTENT_SUBMENU_READABLE) {\r
582                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
583                         return strdup(BR_STRING_READABLE);\r
584         } else if (type == BR_CONTENT_TITLE) {\r
585                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
586                         return strdup(BR_STRING_CONTENT_SETTINGS);\r
587         } else if (type == BR_CONTENT_MENU_RUN_JAVASCRIPT) {\r
588                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
589                         return strdup(BR_STRING_RUN_JAVASCRIPT);\r
590         } else if (type == BR_CONTENT_MENU_DISPLAY_IMAGES) {\r
591                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
592                         return strdup(BR_STRING_SHOW_IMAGES);\r
593         } else if (type == BR_CONTENT_MENU_BLOCK_POPUP) {\r
594                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
595                         return strdup(BR_STRING_BLOCK_POPUP);\r
596         } else if (type == BR_PRIVACY_TITLE) {\r
597                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
598                         return strdup(BR_STRING_PRIVACY_AND_SECURTY);\r
599         } else if (type == BR_PRIVATE_MENU_CLEAR_CACHE) {\r
600                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
601                         return strdup(BR_STRING_CLEAR_CACHE);\r
602         } else if (type == BR_PRIVATE_MENU_CLEAR_HISTORY) {\r
603                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
604                         return strdup(BR_STRING_CLEAR_HISTORY);\r
605         } else if (type == BR_PRIVATE_MENU_SHOW_SECURITY_WARNINGS) {\r
606                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
607                         return strdup(BR_STRING_SHOW_SECURITY_WARNINGS);\r
608         } else if (type == BR_PRIVACY_MENU_ACCEPT_COOKIES) {\r
609                 if (!strncmp(part, "elm.text.2", strlen("elm.text.2")))\r
610                         return strdup(BR_STRING_COOKIES);\r
611                 else if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
612                         return strdup(BR_STRING_ACCEPT_COOKIES);\r
613         } else if (type == BR_PRIVATE_MENU_CLEAR_ALL_COOKIE_DATA) {\r
614                 if (!strncmp(part, "elm.text.2", strlen("elm.text.2")))\r
615                         return strdup(BR_STRING_COOKIES);\r
616                 else if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
617                         return strdup(BR_STRING_CLEAR_ALL_COOKIE_DATA);\r
618         } else if (type == BR_PRIVACY_SUBMENU_ALWAYS_ASK) {\r
619                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
620                         return strdup(BR_STRING_ALWAYS_ASK);\r
621         } else if (type == BR_PRIVACY_SUBMENU_ALWAYS_ON) {\r
622                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
623                         return strdup(BR_STRING_ON);\r
624         } else if (type == BR_PRIVACY_SUBMENU_ALWAYS_OFF) {\r
625                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
626                         return strdup(BR_STRING_OFF);\r
627         } else if (type == BR_PRIVACY_MENU_CLEAR_PRIVATE_DATA) {\r
628                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
629                         return strdup(BR_STRING_DELETE_BROWSING_DATA);\r
630         } else if (type == BR_PRIVACY_MENU_ENABLE_LOCATION) {\r
631                 if (!strncmp(part, "elm.text.2", strlen("elm.text.2")))\r
632                         return strdup(BR_STRING_LOCATION);\r
633                 else if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
634                         return strdup(BR_STRING_ENABLE_LOCATION);\r
635         } else if (type == BR_PRIVACY_MENU_CLEAR_LOCATION_ACCESS) {\r
636                 if (!strncmp(part, "elm.text.2", strlen("elm.text.2")))\r
637                         return strdup(BR_STRING_LOCATION);\r
638                 else if (!strncmp(part, "elm.text.1", strlen("elm.text.1")))\r
639                         return strdup(BR_STRING_CLEAR_LOCATION_ACCESS);\r
640         } else if (type == BR_PRIVACY_WEBSITE_SETTING) {\r
641                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
642                         return strdup(BR_STRING_WEBSITE_SETTINGS);\r
643         } else if (type == BR_DEBUG_TITLE) {\r
644                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
645                         return strdup(BR_STRING_DEVELOPER_MODE);\r
646         } else if (type == BR_MENU_USER_AGENT) {\r
647                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
648                         return strdup(BR_STRING_USER_AGENT);\r
649         } else if (type == BR_MENU_RESET_TO_DEFAULT) {\r
650                 if (!strncmp(part, "elm.text", strlen("elm.text")))\r
651                         return strdup(BR_STRING_RESET_TO_DEFAULT);\r
652         }\r
653 \r
654         return NULL;\r
655 }\r
656 \r
657 void Browser_Settings_Main_View::__homepage_sub_item_clicked_cb(void *data, Evas_Object *obj,\r
658                                                                                         void *event_info)\r
659 {\r
660         if (!data)\r
661                 return;\r
662 \r
663         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
664         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
665         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
666 \r
667         int radio_value = 0;\r
668 #if defined(FEATURE_MOST_VISITED_SITES)\r
669         if (type == BR_HOMEPAGE_SUBMENU_MOST_VISITED_SITES)\r
670                 radio_value = 0;\r
671         else\r
672 #endif\r
673         if (type == BR_HOMEPAGE_SUBMENU_RECENTLY_VISITED_SITE)\r
674                 radio_value = 1;\r
675         else if (type == BR_HOMEPAGE_SUBMENU_USER_HOMEPAGE)\r
676                 radio_value = 2;\r
677         else if (type == BR_HOMEPAGE_SUBMENU_CURRENT_PAGE)\r
678                 radio_value = 3;\r
679         else if (type == BR_HOMEPAGE_SUBMENU_EMPTY_PAGE)\r
680                 radio_value = 4;\r
681 \r
682         elm_radio_value_set(main_view->m_homepage_radio_group, radio_value);\r
683 \r
684         if (radio_value == 3)\r
685                 elm_radio_value_set(main_view->m_homepage_radio_group, 2);\r
686 \r
687 #if defined(FEATURE_MOST_VISITED_SITES)\r
688         if (radio_value == 0)\r
689                 br_preference_set_str(HOMEPAGE_KEY, MOST_VISITED_SITES);\r
690         else\r
691 #endif\r
692         if (radio_value == 1)\r
693                 br_preference_set_str(HOMEPAGE_KEY, RECENTLY_VISITED_SITE);\r
694         else if (radio_value == 2) {\r
695                 main_view->m_edit_homepage_view = new(nothrow) Browser_Settings_Edit_Homepage_View(main_view);\r
696                 if (!main_view->m_edit_homepage_view) {\r
697                         BROWSER_LOGE("new Browser_Settings_Edit_Homepage_View failed");\r
698                         return;\r
699                 }\r
700                 if (!main_view->m_edit_homepage_view->init()) {\r
701                         BROWSER_LOGE("m_edit_homepage_view failed");\r
702                         delete main_view->m_edit_homepage_view;\r
703                         main_view->m_edit_homepage_view = NULL;\r
704                 }\r
705         } else if (radio_value == 3) {\r
706                 br_preference_set_str(USER_HOMEPAGE_KEY, m_data_manager->get_browser_view()->get_url().c_str());\r
707                 br_preference_set_str(HOMEPAGE_KEY, USER_HOMEPAGE);\r
708 \r
709                 elm_genlist_item_update(main_view->m_user_homepage_item_callback_data.it);\r
710         } else if (radio_value == 4) {\r
711                 br_preference_set_str(HOMEPAGE_KEY, EMPTY_PAGE);\r
712         }\r
713 \r
714         elm_genlist_item_update(main_view->m_homepage_item_callback_data.it);\r
715 \r
716         elm_genlist_item_selected_set(callback_data->it, EINA_FALSE);\r
717 }\r
718 \r
719 void Browser_Settings_Main_View::__default_view_level_sub_item_clicked_cb(void *data,\r
720                                                         Evas_Object *obj, void *event_info)\r
721 {\r
722         BROWSER_LOGD("[%s]", __func__);\r
723         if (!data)\r
724                 return;\r
725         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
726         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
727         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
728 \r
729         int radio_value = 0;\r
730         if (type == BR_CONTENT_SUBMENU_FIT_TO_WIDTH)\r
731                 radio_value = 0;\r
732         else if (type == BR_CONTENT_SUBMENU_READABLE)\r
733                 radio_value = 1;\r
734 \r
735         if (elm_radio_value_get(main_view->m_default_view_level_radio_group) != radio_value) {\r
736                 elm_radio_value_set(main_view->m_default_view_level_radio_group, radio_value);\r
737                 if (radio_value == 0)\r
738                         br_preference_set_str(DEFAULT_VIEW_LEVEL_KEY, FIT_TO_WIDTH);\r
739                 else\r
740                         br_preference_set_str(DEFAULT_VIEW_LEVEL_KEY, READABLE);\r
741 \r
742                 elm_genlist_item_update(main_view->m_defailt_view_level_item_callback_data.it);\r
743         }\r
744 \r
745         elm_genlist_item_selected_set(callback_data->it, EINA_FALSE);\r
746 }\r
747 \r
748 void Browser_Settings_Main_View::__expandable_icon_clicked_cb(void *data, Evas_Object *obj,\r
749                                                                                 void *event_info)\r
750 {\r
751         BROWSER_LOGD("[%s]", __func__);\r
752         if (!data)\r
753                 return;\r
754 \r
755         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
756         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
757         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
758         Elm_Object_Item *it = callback_data->it;\r
759 \r
760         Evas_Object *genlist = elm_object_item_widget_get(it);\r
761         Eina_Bool is_expanded = elm_genlist_item_expanded_get(it);\r
762         if (is_expanded) {\r
763                 elm_genlist_item_expanded_set(it, EINA_FALSE);\r
764                 elm_genlist_item_subitems_clear(it);\r
765 \r
766                 main_view->m_user_homepage_item_callback_data.it = NULL;\r
767         } else {\r
768                 elm_genlist_item_expanded_set(it, EINA_TRUE);\r
769                 if (it == main_view->m_homepage_item_callback_data.it) {\r
770                         BROWSER_LOGD("__expandable_icon_clicked_cb - homepage");\r
771                         /* If homepage menu. */\r
772                         main_view->m_current_page_item_callback_data.type = BR_HOMEPAGE_SUBMENU_CURRENT_PAGE;\r
773                         main_view->m_current_page_item_callback_data.user_data = main_view;\r
774                         main_view->m_current_page_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
775                                                                                 &(main_view->m_current_page_item_callback_data), it,\r
776                                                                                 ELM_GENLIST_ITEM_NONE, __homepage_sub_item_clicked_cb,\r
777                                                                                 &(main_view->m_current_page_item_callback_data));\r
778 \r
779                         main_view->m_empty_page_item_callback_data.type = BR_HOMEPAGE_SUBMENU_EMPTY_PAGE;\r
780                         main_view->m_empty_page_item_callback_data.user_data = main_view;\r
781                         main_view->m_empty_page_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
782                                                                                 &(main_view->m_empty_page_item_callback_data), it,\r
783                                                                                 ELM_GENLIST_ITEM_NONE, __homepage_sub_item_clicked_cb,\r
784                                                                                 &(main_view->m_empty_page_item_callback_data));\r
785 \r
786                         main_view->m_recently_visited_item_callback_data.type = BR_HOMEPAGE_SUBMENU_RECENTLY_VISITED_SITE;\r
787                         main_view->m_recently_visited_item_callback_data.user_data = main_view;\r
788                         main_view->m_recently_visited_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
789                                                                                 &(main_view->m_recently_visited_item_callback_data), it,\r
790                                                                                 ELM_GENLIST_ITEM_NONE, __homepage_sub_item_clicked_cb,\r
791                                                                                 &(main_view->m_recently_visited_item_callback_data));\r
792 \r
793 #if defined(FEATURE_MOST_VISITED_SITES)\r
794                         main_view->m_most_visited_item_callback_data.type = BR_HOMEPAGE_SUBMENU_MOST_VISITED_SITES;\r
795                         main_view->m_most_visited_item_callback_data.user_data = main_view;\r
796                         main_view->m_most_visited_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
797                                                                                 &(main_view->m_most_visited_item_callback_data), it,\r
798                                                                                 ELM_GENLIST_ITEM_NONE, __homepage_sub_item_clicked_cb,\r
799                                                                                 &(main_view->m_most_visited_item_callback_data));\r
800 #endif\r
801 \r
802                         main_view->m_user_homepage_item_callback_data.type = BR_HOMEPAGE_SUBMENU_USER_HOMEPAGE;\r
803                         main_view->m_user_homepage_item_callback_data.user_data = main_view;\r
804                         main_view->m_user_homepage_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
805                                                                                 &(main_view->m_user_homepage_item_callback_data), it,\r
806                                                                                 ELM_GENLIST_ITEM_NONE, __homepage_sub_item_clicked_cb,\r
807                                                                                 &(main_view->m_user_homepage_item_callback_data));\r
808 \r
809                         if (m_data_manager->get_browser_view()->get_url().empty())\r
810                                 elm_object_item_disabled_set(main_view->m_current_page_item_callback_data.it, EINA_TRUE);\r
811                 } else if (it == main_view->m_defailt_view_level_item_callback_data.it) {\r
812                         BROWSER_LOGD("__expandable_icon_clicked_cb - default view");\r
813                         main_view->m_fit_to_width_item_callback_data.type = BR_CONTENT_SUBMENU_FIT_TO_WIDTH;\r
814                         main_view->m_fit_to_width_item_callback_data.user_data = main_view;\r
815                         main_view->m_fit_to_width_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
816                                                                                 &(main_view->m_fit_to_width_item_callback_data), it,\r
817                                                                                 ELM_GENLIST_ITEM_NONE, __default_view_level_sub_item_clicked_cb,\r
818                                                                                 &(main_view->m_fit_to_width_item_callback_data));\r
819 \r
820                         main_view->m_readable_item_callback_data.type = BR_CONTENT_SUBMENU_READABLE;\r
821                         main_view->m_readable_item_callback_data.user_data = main_view;\r
822                         main_view->m_readable_item_callback_data.it = elm_genlist_item_append(genlist, &(main_view->m_radio_text_item_class),\r
823                                                                                 &(main_view->m_readable_item_callback_data), it,\r
824                                                                                 ELM_GENLIST_ITEM_NONE, __default_view_level_sub_item_clicked_cb,\r
825                                                                                 &(main_view->m_readable_item_callback_data));\r
826                 }\r
827         }\r
828 \r
829         elm_genlist_item_selected_set(it, EINA_FALSE);\r
830 }\r
831 \r
832 void Browser_Settings_Main_View::__on_off_check_clicked_cb(void *data, Evas_Object *obj,\r
833                                                                                 void *event_info)\r
834 {\r
835         BROWSER_LOGD("[%s]", __func__);\r
836         if (!data)\r
837                 return;\r
838 \r
839         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
840         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
841         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
842 \r
843         Eina_Bool state = EINA_TRUE;\r
844         if (type == BR_CONTENT_MENU_RUN_JAVASCRIPT) {\r
845                 state = elm_check_state_get(main_view->m_run_javascript_check);\r
846                 elm_check_state_set(main_view->m_run_javascript_check, !state);\r
847                 __run_javascript_check_changed_cb(main_view->m_run_javascript_check, NULL, NULL);\r
848         } else if (type == BR_CONTENT_MENU_DISPLAY_IMAGES) {\r
849                 state = elm_check_state_get(main_view->m_display_images_check);\r
850                 elm_check_state_set(main_view->m_display_images_check, !state);\r
851                 __display_images_check_changed_cb(main_view->m_display_images_check, NULL, NULL);\r
852         } else if (type == BR_CONTENT_MENU_BLOCK_POPUP) {\r
853                 state = elm_check_state_get(main_view->m_block_popup_check);\r
854                 elm_check_state_set(main_view->m_block_popup_check, !state);\r
855                 __block_popup_check_changed_cb(main_view->m_block_popup_check, NULL, NULL);\r
856         } else if (type == BR_PRIVATE_MENU_SHOW_SECURITY_WARNINGS) {\r
857                 state = elm_check_state_get(main_view->m_show_security_warnings_check);\r
858                 elm_check_state_set(main_view->m_show_security_warnings_check, !state);\r
859                 __show_security_warnings_check_changed_cb(main_view->m_show_security_warnings_check, NULL, NULL);\r
860         } else if (type == BR_PRIVACY_MENU_ACCEPT_COOKIES) {\r
861                 state = elm_check_state_get(main_view->m_accept_cookies_check);\r
862                 elm_check_state_set(main_view->m_accept_cookies_check, !state);\r
863                 __accept_cookies_check_changed_cb(main_view->m_accept_cookies_check, NULL, NULL);\r
864         } else if (type == BR_PRIVACY_MENU_ENABLE_LOCATION) {\r
865                 state = elm_check_state_get(main_view->m_enable_location_check);\r
866                 elm_check_state_set(main_view->m_enable_location_check, !state);\r
867                 __enable_location_check_changed_cb(main_view, main_view->m_enable_location_check, NULL);\r
868         }\r
869         elm_genlist_item_selected_set(callback_data->it, EINA_FALSE);\r
870 }\r
871 \r
872 Eina_Bool Browser_Settings_Main_View::_call_user_agent(void)\r
873 {\r
874         BROWSER_LOGD("[%s]", __func__);\r
875 \r
876         if (m_user_agent_view)\r
877                 delete m_user_agent_view;\r
878         m_user_agent_view = new(nothrow) Browser_Settings_User_Agent_View(this);\r
879         if (!m_user_agent_view) {\r
880                 BROWSER_LOGE("new Browser_Settings_User_Agent_View failed");\r
881                 return EINA_FALSE;\r
882         }\r
883         if (!m_user_agent_view->init()) {\r
884                 BROWSER_LOGE("m_user_agent_view->init failed");\r
885                 return EINA_FALSE;\r
886         }\r
887 \r
888         return EINA_TRUE;\r
889 }\r
890 \r
891 void Browser_Settings_Main_View::__genlist_item_clicked_cb(void *data, Evas_Object *obj,\r
892                                                                                 void *event_info)\r
893 {\r
894         BROWSER_LOGD("[%s]", __func__);\r
895         if (!data)\r
896                 return;\r
897 \r
898         genlist_callback_data *callback_data = (genlist_callback_data *)data;\r
899         Browser_Settings_Main_View::menu_type type = callback_data->type;\r
900         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)(callback_data->user_data);\r
901 \r
902         if (type == BR_PRIVACY_MENU_CLEAR_PRIVATE_DATA) {\r
903                 main_view->m_clear_data_view = new(nothrow) Browser_Settings_Clear_Data_View(main_view);\r
904                 if (!main_view->m_clear_data_view) {\r
905                         BROWSER_LOGE("new Browser_Settings_Clear_Data_View failed");\r
906                         return;\r
907                 }\r
908                 if (!main_view->m_clear_data_view->init()) {\r
909                         BROWSER_LOGE("m_clear_data_view->init failed");\r
910                         delete main_view->m_clear_data_view;\r
911                         main_view->m_clear_data_view = NULL;\r
912                         return;\r
913                 }\r
914         } else if (type == BR_PRIVATE_MENU_CLEAR_CACHE) {\r
915                 main_view->_show_clear_cache_confirm_popup();\r
916         } else if (type == BR_PRIVATE_MENU_CLEAR_HISTORY) {\r
917                 main_view->_show_clear_history_confirm_popup();\r
918         } else if (type == BR_PRIVATE_MENU_CLEAR_ALL_COOKIE_DATA) {\r
919                 main_view->_show_clear_all_cookie_data_confirm_popup();\r
920         } else if (type == BR_PRIVACY_WEBSITE_SETTING) {\r
921                 BROWSER_LOGD("Web sites setting");\r
922                 if (main_view->m_website_setting)\r
923                         delete main_view->m_website_setting;\r
924                 main_view->m_website_setting = new(nothrow) Browser_Settings_Website_Setting(main_view);\r
925                 if (!main_view->m_website_setting) {\r
926                         BROWSER_LOGE("new Browser_Settings_Website_Setting failed");\r
927                         return;\r
928                 }\r
929                 if (!main_view->m_website_setting->init()) {\r
930                         BROWSER_LOGE("m_website_setting->init failed");\r
931                         delete main_view->m_website_setting;\r
932                         main_view->m_website_setting = NULL;\r
933                         return;\r
934                 }\r
935         } else if (type == BR_MENU_USER_AGENT) {\r
936                 if (!main_view->_call_user_agent())\r
937                         BROWSER_LOGE("_call_user_agent failed");\r
938         } else if (type == BR_MENU_RESET_TO_DEFAULT) {\r
939                 main_view->_show_reset_confirm_popup();\r
940         } else if (type == BR_PRIVACY_MENU_CLEAR_LOCATION_ACCESS) {\r
941                 main_view->_show_clear_location_confirm_popup();\r
942         }\r
943 \r
944         elm_genlist_item_selected_set(callback_data->it, EINA_FALSE);\r
945 }\r
946 \r
947 void Browser_Settings_Main_View::_reset_settings(void)\r
948 {\r
949         BROWSER_LOGD("[%s]", __func__);\r
950 #if defined(FEATURE_MOST_VISITED_SITES)\r
951         br_preference_set_str(HOMEPAGE_KEY, MOST_VISITED_SITES);\r
952 #else\r
953         br_preference_set_str(HOMEPAGE_KEY, USER_HOMEPAGE);\r
954 #endif\r
955         br_preference_set_str(USER_HOMEPAGE_KEY, BROWSER_DEFAULT_USER_HOMEPAGE);\r
956         br_preference_set_str(DEFAULT_VIEW_LEVEL_KEY, FIT_TO_WIDTH);\r
957         br_preference_set_bool(RUN_JAVASCRIPT_KEY, true);\r
958         br_preference_set_bool(DISPLAY_IMAGES_KEY, true);\r
959         br_preference_set_bool(BLOCK_POPUP_KEY, true);\r
960         br_preference_set_bool(SHOW_SECURITY_WARNINGS_KEY, true);\r
961         br_preference_set_bool(ACCEPT_COOKIES_KEY, true);\r
962         if (vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SETTING_DEF_MEMORY_PHONE) < 0)\r
963                 BROWSER_LOGE("vconf_set_int(VCONFKEY_SETAPPL_DEFAULT_MEM_WAP_INT, SETTING_DEF_MEMORY_PHONE) failed");\r
964         if (vconf_set_str(USERAGENT_KEY, DEFAULT_USER_AGENT_STRING) < 0)\r
965                 BROWSER_LOGE("vconf_set_str(USERAGENT_KEY, DEFAULT_USER_AGENT_STRING) failed");\r
966 \r
967         elm_genlist_realized_items_update(m_genlist);\r
968 }\r
969 \r
970 void Browser_Settings_Main_View::__reset_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
971 {\r
972         BROWSER_LOGD("[%s]", __func__);\r
973         if (!data)\r
974                 return;\r
975 \r
976         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
977         if (main_view->m_reset_confirm_popup) {\r
978                 evas_object_del(main_view->m_reset_confirm_popup);\r
979                 main_view->m_reset_confirm_popup = NULL;\r
980         }\r
981 \r
982         main_view->_reset_settings();\r
983 }\r
984 \r
985 void Browser_Settings_Main_View::__cancel_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
986 {\r
987         BROWSER_LOGD("[%s]", __func__);\r
988         if (!data)\r
989                 return;\r
990 \r
991         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
992         if (main_view->m_reset_confirm_popup) {\r
993                 evas_object_del(main_view->m_reset_confirm_popup);\r
994                 main_view->m_reset_confirm_popup = NULL;\r
995         }\r
996 }\r
997 \r
998 void Browser_Settings_Main_View::__clear_cache_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
999 {\r
1000         BROWSER_LOGD("[%s]", __func__);\r
1001         if (!data)\r
1002                 return;\r
1003 \r
1004         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1005         if (main_view->m_clear_cache_confirm_popup) {\r
1006                 evas_object_del(main_view->m_clear_cache_confirm_popup);\r
1007                 main_view->m_clear_cache_confirm_popup = NULL;\r
1008         }\r
1009 \r
1010         /* Clear cache */\r
1011         Ewk_Context *ewk_context = ewk_context_default_get();\r
1012         ewk_context_cache_clear(ewk_context);\r
1013         ewk_context_web_indexed_database_delete_all(ewk_context);\r
1014         ewk_context_application_cache_delete_all(ewk_context);\r
1015         ewk_context_web_storage_delete_all(ewk_context);\r
1016         ewk_context_web_database_delete_all(ewk_context);\r
1017 \r
1018         main_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);\r
1019 }\r
1020 \r
1021 void Browser_Settings_Main_View::__cancel_clear_cache_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1022 {\r
1023         BROWSER_LOGD("[%s]", __func__);\r
1024         if (!data)\r
1025                 return;\r
1026 \r
1027         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1028         if (main_view->m_clear_cache_confirm_popup) {\r
1029                 evas_object_del(main_view->m_clear_cache_confirm_popup);\r
1030                 main_view->m_clear_cache_confirm_popup = NULL;\r
1031         }\r
1032 }\r
1033 \r
1034 void Browser_Settings_Main_View::__clear_history_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1035 {\r
1036         BROWSER_LOGD("[%s]", __func__);\r
1037         if (!data)\r
1038                 return;\r
1039 \r
1040         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1041         if (main_view->m_clear_history_confirm_popup) {\r
1042                 evas_object_del(main_view->m_clear_history_confirm_popup);\r
1043                 main_view->m_clear_history_confirm_popup = NULL;\r
1044         }\r
1045         /* Clear history */\r
1046         if (!main_view->m_data_manager->get_history_db()->clear_history())\r
1047                 BROWSER_LOGE("get_history_db()->clear_history() failed");\r
1048 \r
1049         main_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);\r
1050 }\r
1051 \r
1052 void Browser_Settings_Main_View::__cancel_clear_history_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1053 {\r
1054         BROWSER_LOGD("[%s]", __func__);\r
1055         if (!data)\r
1056                 return;\r
1057 \r
1058         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1059         if (main_view->m_clear_history_confirm_popup) {\r
1060                 evas_object_del(main_view->m_clear_history_confirm_popup);\r
1061                 main_view->m_clear_history_confirm_popup = NULL;\r
1062         }\r
1063 }\r
1064 \r
1065 void Browser_Settings_Main_View::__clear_all_cookie_data_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1066 {\r
1067         BROWSER_LOGD("[%s]", __func__);\r
1068         if (!data)\r
1069                 return;\r
1070 \r
1071         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1072         if (main_view->m_clear_all_cookies_data_confirm_popup) {\r
1073                 evas_object_del(main_view->m_clear_all_cookies_data_confirm_popup);\r
1074                 main_view->m_clear_all_cookies_data_confirm_popup = NULL;\r
1075         }\r
1076 \r
1077         Ewk_Context *ewk_context = ewk_context_default_get();\r
1078         ewk_context_cookies_clear(ewk_context);\r
1079 \r
1080         main_view->show_notify_popup(BR_STRING_DELETED, 3, EINA_TRUE);\r
1081 }\r
1082 \r
1083 void Browser_Settings_Main_View::__cancel_clear_all_cookie_data_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1084 {\r
1085         BROWSER_LOGD("[%s]", __func__);\r
1086         if (!data)\r
1087                 return;\r
1088 \r
1089         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1090         if (main_view->m_clear_all_cookies_data_confirm_popup) {\r
1091                 evas_object_del(main_view->m_clear_all_cookies_data_confirm_popup);\r
1092                 main_view->m_clear_all_cookies_data_confirm_popup = NULL;\r
1093         }\r
1094 }\r
1095 \r
1096 Eina_Bool Browser_Settings_Main_View::_show_reset_confirm_popup(void)\r
1097 {\r
1098         BROWSER_LOGD("[%s]", __func__);\r
1099         if (m_reset_confirm_popup)\r
1100                 evas_object_del(m_reset_confirm_popup);\r
1101 \r
1102         m_reset_confirm_popup = elm_popup_add(m_genlist);\r
1103         if (!m_reset_confirm_popup) {\r
1104                 BROWSER_LOGE("elm_popup_add failed");\r
1105                 return EINA_FALSE;\r
1106         }\r
1107 \r
1108         evas_object_size_hint_weight_set(m_reset_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1109 \r
1110         std::string confirm_msg = std::string(BR_STRING_RESET_ALL_SETTINGS_TO_DEFAULT_Q);\r
1111         elm_object_text_set(m_reset_confirm_popup, confirm_msg.c_str());\r
1112 \r
1113         Evas_Object *ok_button = elm_button_add(m_reset_confirm_popup);\r
1114         if (!ok_button) {\r
1115                 BROWSER_LOGE("elm_button_add failed");\r
1116                 return EINA_FALSE;\r
1117         }\r
1118         elm_object_text_set(ok_button, BR_STRING_YES);\r
1119         elm_object_part_content_set(m_reset_confirm_popup, "button1", ok_button);\r
1120         evas_object_smart_callback_add(ok_button, "clicked", __reset_confirm_response_cb, this);\r
1121 \r
1122         Evas_Object *cancel_button = elm_button_add(m_reset_confirm_popup);\r
1123         elm_object_text_set(cancel_button, BR_STRING_NO);\r
1124         elm_object_part_content_set(m_reset_confirm_popup, "button2", cancel_button);\r
1125         evas_object_smart_callback_add(cancel_button, "clicked", __cancel_confirm_response_cb, this);\r
1126 \r
1127         evas_object_show(m_reset_confirm_popup);\r
1128 \r
1129         return EINA_TRUE;\r
1130 }\r
1131 \r
1132 Eina_Bool Browser_Settings_Main_View::_show_clear_cache_confirm_popup(void)\r
1133 {\r
1134         BROWSER_LOGD("[%s]", __func__);\r
1135         if (m_clear_cache_confirm_popup)\r
1136                 evas_object_del(m_clear_cache_confirm_popup);\r
1137 \r
1138         m_clear_cache_confirm_popup = elm_popup_add(m_genlist);\r
1139         if (!m_clear_cache_confirm_popup) {\r
1140                 BROWSER_LOGE("elm_popup_add failed");\r
1141                 return EINA_FALSE;\r
1142         }\r
1143 \r
1144         evas_object_size_hint_weight_set(m_clear_cache_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1145 \r
1146         std::string confirm_msg = std::string(BR_STRING_CLEAR_ALL_CACHE_DATA_Q);\r
1147         elm_object_text_set(m_clear_cache_confirm_popup, confirm_msg.c_str());\r
1148 \r
1149         Evas_Object *ok_button = elm_button_add(m_clear_cache_confirm_popup);\r
1150         if (!ok_button) {\r
1151                 BROWSER_LOGE("elm_button_add failed");\r
1152                 return EINA_FALSE;\r
1153         }\r
1154         elm_object_text_set(ok_button, BR_STRING_YES);\r
1155         elm_object_part_content_set(m_clear_cache_confirm_popup, "button1", ok_button);\r
1156         evas_object_smart_callback_add(ok_button, "clicked", __clear_cache_confirm_response_cb, this);\r
1157 \r
1158         Evas_Object *cancel_button = elm_button_add(m_clear_cache_confirm_popup);\r
1159         elm_object_text_set(cancel_button, BR_STRING_NO);\r
1160         elm_object_part_content_set(m_clear_cache_confirm_popup, "button2", cancel_button);\r
1161         evas_object_smart_callback_add(cancel_button, "clicked", __cancel_clear_cache_confirm_response_cb, this);\r
1162 \r
1163         evas_object_show(m_clear_cache_confirm_popup);\r
1164 \r
1165         return EINA_TRUE;\r
1166 }\r
1167 \r
1168 Eina_Bool Browser_Settings_Main_View::_show_clear_history_confirm_popup(void)\r
1169 {\r
1170         BROWSER_LOGD("[%s]", __func__);\r
1171         if (m_clear_history_confirm_popup)\r
1172                 evas_object_del(m_clear_history_confirm_popup);\r
1173 \r
1174         m_clear_history_confirm_popup = elm_popup_add(m_genlist);\r
1175         if (!m_clear_history_confirm_popup) {\r
1176                 BROWSER_LOGE("elm_popup_add failed");\r
1177                 return EINA_FALSE;\r
1178         }\r
1179 \r
1180         evas_object_size_hint_weight_set(m_clear_history_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1181 \r
1182         std::string confirm_msg = std::string(BR_STRING_CLEAR_ALL_HISTORY_DATA_Q);\r
1183         elm_object_text_set(m_clear_history_confirm_popup, confirm_msg.c_str());\r
1184 \r
1185         Evas_Object *ok_button = elm_button_add(m_clear_history_confirm_popup);\r
1186         if (!ok_button) {\r
1187                 BROWSER_LOGE("elm_button_add failed");\r
1188                 return EINA_FALSE;\r
1189         }\r
1190         elm_object_text_set(ok_button, BR_STRING_YES);\r
1191         elm_object_part_content_set(m_clear_history_confirm_popup, "button1", ok_button);\r
1192         evas_object_smart_callback_add(ok_button, "clicked", __clear_history_confirm_response_cb, this);\r
1193 \r
1194         Evas_Object *cancel_button = elm_button_add(m_clear_history_confirm_popup);\r
1195         elm_object_text_set(cancel_button, BR_STRING_NO);\r
1196         elm_object_part_content_set(m_clear_history_confirm_popup, "button2", cancel_button);\r
1197         evas_object_smart_callback_add(cancel_button, "clicked", __cancel_clear_history_confirm_response_cb, this);\r
1198 \r
1199         evas_object_show(m_clear_history_confirm_popup);\r
1200 \r
1201         return EINA_TRUE;\r
1202 }\r
1203 \r
1204 Eina_Bool Browser_Settings_Main_View::_show_clear_all_cookie_data_confirm_popup(void)\r
1205 {\r
1206         BROWSER_LOGD("[%s]", __func__);\r
1207         if (m_clear_all_cookies_data_confirm_popup)\r
1208                 evas_object_del(m_clear_all_cookies_data_confirm_popup);\r
1209 \r
1210         m_clear_all_cookies_data_confirm_popup = elm_popup_add(m_genlist);\r
1211         if (!m_clear_all_cookies_data_confirm_popup) {\r
1212                 BROWSER_LOGE("elm_popup_add failed");\r
1213                 return EINA_FALSE;\r
1214         }\r
1215 \r
1216         evas_object_size_hint_weight_set(m_clear_all_cookies_data_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1217 \r
1218         std::string confirm_msg = std::string(BR_STRING_CLEAR_ALL_COOKIE_DATA_Q);\r
1219         elm_object_text_set(m_clear_all_cookies_data_confirm_popup, confirm_msg.c_str());\r
1220 \r
1221         Evas_Object *ok_button = elm_button_add(m_clear_all_cookies_data_confirm_popup);\r
1222         if (!ok_button) {\r
1223                 BROWSER_LOGE("elm_button_add failed");\r
1224                 return EINA_FALSE;\r
1225         }\r
1226         elm_object_text_set(ok_button, BR_STRING_YES);\r
1227         elm_object_part_content_set(m_clear_all_cookies_data_confirm_popup, "button1", ok_button);\r
1228         evas_object_smart_callback_add(ok_button, "clicked", __clear_all_cookie_data_confirm_response_cb, this);\r
1229 \r
1230         Evas_Object *cancel_button = elm_button_add(m_clear_all_cookies_data_confirm_popup);\r
1231         elm_object_text_set(cancel_button, BR_STRING_NO);\r
1232         elm_object_part_content_set(m_clear_all_cookies_data_confirm_popup, "button2", cancel_button);\r
1233         evas_object_smart_callback_add(cancel_button, "clicked", __cancel_clear_all_cookie_data_confirm_response_cb, this);\r
1234 \r
1235         evas_object_show(m_clear_all_cookies_data_confirm_popup);\r
1236 \r
1237         return EINA_TRUE;\r
1238 }\r
1239 \r
1240 void Browser_Settings_Main_View::__clear_location_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1241 {\r
1242         BROWSER_LOGD("[%s]", __func__);\r
1243         if (!data)\r
1244                 return;\r
1245 \r
1246         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1247         if (main_view->m_clear_location_confirm_popup) {\r
1248                 evas_object_del(main_view->m_clear_location_confirm_popup);\r
1249                 main_view->m_clear_location_confirm_popup = NULL;\r
1250         }\r
1251 \r
1252         //main_view->_clear_location_settings();\r
1253         Browser_Geolocation_DB *geo_db = main_view->get_data_manager()->get_geolocation_db();\r
1254         geo_db->remove_all_geolocation_data();\r
1255 }\r
1256 \r
1257 void Browser_Settings_Main_View::__clear_location_cancel_confirm_response_cb(void *data, Evas_Object *obj, void *event_info)\r
1258 {\r
1259         BROWSER_LOGD("[%s]", __func__);\r
1260         if (!data)\r
1261                 return;\r
1262 \r
1263         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)data;\r
1264         if (main_view->m_clear_location_confirm_popup) {\r
1265                 evas_object_del(main_view->m_clear_location_confirm_popup);\r
1266                 main_view->m_clear_location_confirm_popup = NULL;\r
1267         }\r
1268 }\r
1269 \r
1270 Eina_Bool Browser_Settings_Main_View::_show_clear_location_confirm_popup(void)\r
1271 {\r
1272         BROWSER_LOGD("[%s]", __func__);\r
1273         if (m_clear_location_confirm_popup)\r
1274                 evas_object_del(m_clear_location_confirm_popup);\r
1275 \r
1276         m_clear_location_confirm_popup = elm_popup_add(m_genlist);\r
1277         if (!m_clear_location_confirm_popup) {\r
1278                 BROWSER_LOGE("elm_popup_add failed");\r
1279                 return EINA_FALSE;\r
1280         }\r
1281 \r
1282         evas_object_size_hint_weight_set(m_clear_location_confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);\r
1283 \r
1284         std::string confirm_msg = std::string(BR_STRING_MSG_DELETE_WEBSITE_LOCATION_ACCESS_INFORMATION_Q);\r
1285         elm_object_text_set(m_clear_location_confirm_popup, confirm_msg.c_str());\r
1286 \r
1287         Evas_Object *ok_button = elm_button_add(m_clear_location_confirm_popup);\r
1288         if (!ok_button) {\r
1289                 BROWSER_LOGE("elm_button_add failed");\r
1290                 return EINA_FALSE;\r
1291         }\r
1292         elm_object_text_set(ok_button, BR_STRING_OK);\r
1293         elm_object_part_content_set(m_clear_location_confirm_popup, "button1", ok_button);\r
1294         evas_object_smart_callback_add(ok_button, "clicked", __clear_location_confirm_response_cb, this);\r
1295 \r
1296         Evas_Object *cancel_button = elm_button_add(m_clear_location_confirm_popup);\r
1297         if (!cancel_button) {\r
1298                 BROWSER_LOGE("elm_button_add failed");\r
1299                 return EINA_FALSE;\r
1300         }\r
1301         elm_object_text_set(cancel_button, BR_STRING_CANCEL);\r
1302         elm_object_part_content_set(m_clear_location_confirm_popup, "button2", cancel_button);\r
1303         evas_object_smart_callback_add(cancel_button, "clicked", __clear_location_cancel_confirm_response_cb, this);\r
1304 \r
1305         evas_object_show(m_clear_location_confirm_popup);\r
1306 \r
1307         return EINA_TRUE;\r
1308 }\r
1309 \r
1310 Evas_Object *Browser_Settings_Main_View::_create_content_genlist(void)\r
1311 {\r
1312         BROWSER_LOGD("[%s]", __func__);\r
1313         Evas_Object *genlist = NULL;\r
1314 \r
1315         genlist = elm_genlist_add(m_navi_bar);\r
1316         if (!genlist) {\r
1317                 BROWSER_LOGE("elm_genlist_add failed");\r
1318                 return NULL;\r
1319         }\r
1320         elm_object_style_set(genlist, "dialogue");\r
1321 \r
1322         m_radio_text_item_class.item_style = "dialogue/1text.1icon/expandable2";\r
1323         m_radio_text_item_class.func.text_get = __genlist_label_get;\r
1324         m_radio_text_item_class.func.content_get = __genlist_icon_get;\r
1325         m_radio_text_item_class.func.state_get = NULL;\r
1326         m_radio_text_item_class.func.del = NULL;\r
1327 \r
1328         m_category_title_item_class.item_style = "dialogue/title";\r
1329         m_category_title_item_class.func.text_get = __genlist_label_get;\r
1330         m_category_title_item_class.func.content_get = NULL;\r
1331         m_category_title_item_class.func.del = NULL;\r
1332         m_category_title_item_class.func.state_get = NULL;\r
1333 \r
1334         /* Homepage */\r
1335         m_homepage_title_callback_data.type = BR_HOMEPAGE_TITLE;\r
1336         m_homepage_title_callback_data.user_data = this;\r
1337         m_homepage_title_callback_data.it = elm_genlist_item_append(genlist, &m_category_title_item_class,\r
1338                                                 &m_homepage_title_callback_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
1339 \r
1340         elm_genlist_item_select_mode_set(m_homepage_title_callback_data.it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
1341 \r
1342         m_2_text_item_class.item_style = "dialogue/2text.3/expandable";\r
1343         m_2_text_item_class.func.text_get = __genlist_label_get;\r
1344         m_2_text_item_class.func.content_get = NULL;\r
1345         m_2_text_item_class.func.del = NULL;\r
1346         m_2_text_item_class.func.state_get = NULL;\r
1347 \r
1348         m_homepage_item_callback_data.type = BR_HOMEPAGE_MENU;\r
1349         m_homepage_item_callback_data.user_data = this;\r
1350         m_homepage_item_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_item_class,\r
1351                                                         &m_homepage_item_callback_data, NULL, ELM_GENLIST_ITEM_TREE,\r
1352                                                         __expandable_icon_clicked_cb, &m_homepage_item_callback_data);\r
1353 \r
1354         /* Content - Run JavaScript / Display Images */\r
1355         m_content_title_callback_data.type = BR_CONTENT_TITLE;\r
1356         m_content_title_callback_data.user_data = this;\r
1357         m_content_title_callback_data.it = elm_genlist_item_append(genlist, &m_category_title_item_class,\r
1358                                                 &m_content_title_callback_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
1359 \r
1360         elm_genlist_item_select_mode_set(m_content_title_callback_data.it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
1361 \r
1362 \r
1363         m_defailt_view_level_item_callback_data.type = BR_CONTENT_MENU_DEFAULT_VIEW_LEVEL;\r
1364         m_defailt_view_level_item_callback_data.user_data = this;\r
1365         m_defailt_view_level_item_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_item_class,\r
1366                                                 &m_defailt_view_level_item_callback_data, NULL, ELM_GENLIST_ITEM_TREE,\r
1367                                                 __expandable_icon_clicked_cb, &m_defailt_view_level_item_callback_data);\r
1368 \r
1369         m_1_text_1_icon_item_class.item_style = "dialogue/1text.1icon";\r
1370         m_1_text_1_icon_item_class.func.text_get = __genlist_label_get;\r
1371         m_1_text_1_icon_item_class.func.content_get = __genlist_icon_get;\r
1372         m_1_text_1_icon_item_class.func.state_get = NULL;\r
1373         m_1_text_1_icon_item_class.func.del = NULL;\r
1374 \r
1375         m_run_javascript_item_callback_data.type = BR_CONTENT_MENU_RUN_JAVASCRIPT;\r
1376         m_run_javascript_item_callback_data.user_data = this;\r
1377         m_run_javascript_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1378                                                 &m_run_javascript_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1379                                                 __on_off_check_clicked_cb, &m_run_javascript_item_callback_data);\r
1380 \r
1381         m_display_images_item_callback_data.type = BR_CONTENT_MENU_DISPLAY_IMAGES;\r
1382         m_display_images_item_callback_data.user_data = this;\r
1383         m_display_images_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1384                                                 &m_display_images_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1385                                                 __on_off_check_clicked_cb, &m_display_images_item_callback_data);\r
1386 \r
1387         m_block_popup_item_callback_data.type = BR_CONTENT_MENU_BLOCK_POPUP;\r
1388         m_block_popup_item_callback_data.user_data = this;\r
1389         m_block_popup_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1390                                                 &m_block_popup_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1391                                                 __on_off_check_clicked_cb, &m_block_popup_item_callback_data);\r
1392 \r
1393         /* Privacy - Accept cookies / Auto save ID, password / Clear private data */\r
1394         m_privacy_title_callback_data.type = BR_PRIVACY_TITLE;\r
1395         m_privacy_title_callback_data.user_data = this;\r
1396         m_privacy_title_callback_data.it = elm_genlist_item_append(genlist, &m_category_title_item_class,\r
1397                                                 &m_privacy_title_callback_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
1398 \r
1399         elm_genlist_item_select_mode_set(m_privacy_title_callback_data.it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
1400 \r
1401         m_clear_cache_item_callback_data.type = BR_PRIVATE_MENU_CLEAR_CACHE;\r
1402         m_clear_cache_item_callback_data.user_data = this;\r
1403         m_clear_cache_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1404                                                 &m_clear_cache_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1405                                                 __genlist_item_clicked_cb, &m_clear_cache_item_callback_data);\r
1406 \r
1407         m_clear_history_item_callback_data.type = BR_PRIVATE_MENU_CLEAR_HISTORY;\r
1408         m_clear_history_item_callback_data.user_data = this;\r
1409         m_clear_history_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1410                                                 &m_clear_history_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1411                                                 __genlist_item_clicked_cb, &m_clear_history_item_callback_data);\r
1412 \r
1413         m_show_security_warnings_item_callback_data.type = BR_PRIVATE_MENU_SHOW_SECURITY_WARNINGS;\r
1414         m_show_security_warnings_item_callback_data.user_data = this;\r
1415         m_show_security_warnings_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1416                                                 &m_show_security_warnings_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1417                                                 __on_off_check_clicked_cb, &m_show_security_warnings_item_callback_data);\r
1418 \r
1419         m_2_text_1_icon_item_class.item_style = "dialogue/2text.1icon.5";\r
1420         m_2_text_1_icon_item_class.func.text_get = __genlist_label_get;\r
1421         m_2_text_1_icon_item_class.func.content_get = __genlist_icon_get;\r
1422         m_2_text_1_icon_item_class.func.state_get = NULL;\r
1423         m_2_text_1_icon_item_class.func.del = NULL;\r
1424 \r
1425         m_accept_cookies_item_callback_data.type = BR_PRIVACY_MENU_ACCEPT_COOKIES;\r
1426         m_accept_cookies_item_callback_data.user_data = this;\r
1427         m_accept_cookies_item_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_1_icon_item_class,\r
1428                                                 &m_accept_cookies_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1429                                                 __on_off_check_clicked_cb, &m_accept_cookies_item_callback_data);\r
1430 \r
1431         m_2_text_3_item_class.item_style = "dialogue/2text.2";\r
1432         m_2_text_3_item_class.func.text_get = __genlist_label_get;\r
1433         m_2_text_3_item_class.func.content_get = __genlist_icon_get;\r
1434         m_2_text_3_item_class.func.state_get = NULL;\r
1435         m_2_text_3_item_class.func.del = NULL;\r
1436 \r
1437         m_clear_all_cookies_data_item_callback_data.type = BR_PRIVATE_MENU_CLEAR_ALL_COOKIE_DATA;\r
1438         m_clear_all_cookies_data_item_callback_data.user_data = this;\r
1439         m_clear_all_cookies_data_item_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_3_item_class,\r
1440                                                 &m_clear_all_cookies_data_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1441                                                 __genlist_item_clicked_cb, &m_clear_all_cookies_data_item_callback_data);\r
1442 \r
1443         m_1_text_item_class.item_style = "dialogue/1text";\r
1444         m_1_text_item_class.func.text_get = __genlist_label_get;\r
1445         m_1_text_item_class.func.content_get = NULL;\r
1446         m_1_text_item_class.func.state_get = NULL;\r
1447         m_1_text_item_class.func.del = NULL;\r
1448 \r
1449         m_enable_location_callback_data.type = BR_PRIVACY_MENU_ENABLE_LOCATION;\r
1450         m_enable_location_callback_data.user_data = this;\r
1451         m_enable_location_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_1_icon_item_class,\r
1452                                                 &m_enable_location_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1453                                                 __on_off_check_clicked_cb, &m_enable_location_callback_data);\r
1454 \r
1455         m_clear_location_access_callback_data.type = BR_PRIVACY_MENU_CLEAR_LOCATION_ACCESS;\r
1456         m_clear_location_access_callback_data.user_data = this;\r
1457         m_clear_location_access_callback_data.it = elm_genlist_item_append(genlist, &m_2_text_3_item_class,\r
1458                                                         &m_clear_location_access_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1459                                                         __genlist_item_clicked_cb, &m_clear_location_access_callback_data);\r
1460         bool enable_location = 1;\r
1461         br_preference_get_bool(ENABLE_LOCATION_KEY, &enable_location);\r
1462         if (!enable_location)\r
1463                 elm_object_item_disabled_set(m_clear_location_access_callback_data.it, EINA_TRUE);\r
1464 \r
1465         /* Others */\r
1466         m_seperator_item_class.item_style = "grouptitle.dialogue.seperator";\r
1467         m_seperator_item_class.func.text_get = NULL;\r
1468         m_seperator_item_class.func.content_get = NULL;\r
1469         m_seperator_item_class.func.state_get = NULL;\r
1470         m_seperator_item_class.func.del = NULL;\r
1471         Elm_Object_Item *it = elm_genlist_item_append(genlist, &m_seperator_item_class,\r
1472                                                 NULL, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
1473 \r
1474         elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
1475 \r
1476         m_website_setting_callback_data.type = BR_PRIVACY_WEBSITE_SETTING;\r
1477         m_website_setting_callback_data.user_data = this;\r
1478         m_website_setting_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_1_icon_item_class,\r
1479                                                         &m_website_setting_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1480                                                         __genlist_item_clicked_cb, &m_website_setting_callback_data);\r
1481 \r
1482         m_reset_item_callback_data.type = BR_MENU_RESET_TO_DEFAULT;\r
1483         m_reset_item_callback_data.user_data = this;\r
1484         m_reset_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_item_class,\r
1485                                                         &m_reset_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1486                                                         __genlist_item_clicked_cb, &m_reset_item_callback_data);\r
1487 \r
1488         /* Debug */\r
1489         m_debug_title_callback_data.type = BR_DEBUG_TITLE;\r
1490         m_debug_title_callback_data.user_data = this;\r
1491         m_debug_title_callback_data.it = elm_genlist_item_append(genlist, &m_category_title_item_class,\r
1492                                                 &m_debug_title_callback_data, NULL, ELM_GENLIST_ITEM_NONE, NULL, NULL);\r
1493 \r
1494         elm_genlist_item_select_mode_set(m_debug_title_callback_data.it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);\r
1495 \r
1496         m_user_agent_item_callback_data.type = BR_MENU_USER_AGENT;\r
1497         m_user_agent_item_callback_data.user_data = this;\r
1498         m_user_agent_item_callback_data.it = elm_genlist_item_append(genlist, &m_1_text_item_class,\r
1499                                                         &m_user_agent_item_callback_data, NULL, ELM_GENLIST_ITEM_NONE,\r
1500                                                         __genlist_item_clicked_cb, &m_user_agent_item_callback_data);\r
1501 \r
1502         return genlist;\r
1503 }\r
1504 \r
1505 void Browser_Settings_Main_View::__application_cache_origin_get_cb(Eina_List* origins, void* user_data)\r
1506 {\r
1507         BROWSER_LOGD("[%s]", __func__);\r
1508         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)user_data;\r
1509         int count = eina_list_count(origins);\r
1510 \r
1511         if (count > 0) {\r
1512                 if (main_view->m_website_setting_callback_data.it != NULL)\r
1513                         elm_object_item_disabled_set(main_view->m_website_setting_callback_data.it, EINA_FALSE);\r
1514         }\r
1515 }\r
1516 \r
1517 void Browser_Settings_Main_View::__web_storage_origin_get_cb(Eina_List* origins, void* user_data)\r
1518 {\r
1519         BROWSER_LOGD("[%s]", __func__);\r
1520         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)user_data;\r
1521         int count = eina_list_count(origins);\r
1522 \r
1523         if (count > 0) {\r
1524                 if (main_view->m_website_setting_callback_data.it != NULL)\r
1525                         elm_object_item_disabled_set(main_view->m_website_setting_callback_data.it, EINA_FALSE);\r
1526         }\r
1527 }\r
1528 \r
1529 void Browser_Settings_Main_View::__web_database_origin_get_cb(Eina_List* origins, void* user_data)\r
1530 {\r
1531         BROWSER_LOGD("[%s]", __func__);\r
1532         Browser_Settings_Main_View *main_view = (Browser_Settings_Main_View *)user_data;\r
1533         int count = eina_list_count(origins);\r
1534 \r
1535         if (count > 0) {\r
1536                 if (main_view->m_website_setting_callback_data.it != NULL)\r
1537                         elm_object_item_disabled_set(main_view->m_website_setting_callback_data.it, EINA_FALSE);\r
1538         }\r
1539 }\r
1540 \r