5d90fd3d58e23145dbdd1c9bef39151020da467e
[profile/ivi/org.tizen.browser.git] / src / browser-bookmark / browser-add-to-bookmark-view.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 #include "browser-bookmark-db.h"
20 #include "browser-bookmark-view.h"
21 #include "browser-view.h"
22 #include "browser-select-folder-view.h"
23
24 Browser_Add_To_Bookmark_View::Browser_Add_To_Bookmark_View(string title, string url,
25                                                         Eina_Bool is_edit_mode, int current_folder_id)
26 :
27         m_genlist(NULL)
28         ,m_conformant(NULL)
29         ,m_title_cancel_button(NULL)
30         ,m_title_done_button(NULL)
31         ,m_title_edit_field(NULL)
32         ,m_url_edit_field(NULL)
33         ,m_is_edit_mode(is_edit_mode)
34         ,m_folder_id_to_save(current_folder_id)
35         ,m_current_folder_id(current_folder_id)
36         ,m_navi_it(NULL)
37 {
38         BROWSER_LOGD("[%s]", __func__);
39         m_title = title;
40         m_url = url;
41 }
42
43 Browser_Add_To_Bookmark_View::~Browser_Add_To_Bookmark_View(void)
44 {
45         BROWSER_LOGD("[%s]", __func__);
46
47         /* If browser view -> add to bookmark, then back to browser view. */
48         if (!m_data_manager->is_in_view_stack(BR_BOOKMARK_VIEW))
49                 m_data_manager->destroy_bookmark_db();
50
51         evas_object_smart_callback_del(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb);
52 }
53
54 Eina_Bool Browser_Add_To_Bookmark_View::init(void)
55 {
56         BROWSER_LOGD("[%s]", __func__);
57
58         /* If the bookmark view is in view stack, bookmark view -> edit bookmark item. */
59         /* Otherwise, this case is browser view -> add to bookmark, then create the bookmar db */
60         if (!m_data_manager->is_in_view_stack(BR_BOOKMARK_VIEW)) {
61                 if (!m_data_manager->create_bookmark_db()) {
62                         BROWSER_LOGE("m_data_manager->create_bookmark_db() failed");
63                         return EINA_FALSE;
64                 }
65         }
66
67         return _create_main_layout();
68 }
69
70 void Browser_Add_To_Bookmark_View::return_to_add_to_bookmark_view(int changed_folder_id)
71 {       
72         BROWSER_LOGD("[%s]", __func__);
73
74         /* If changed_folder_id is -1, just cancel the folder view. */
75         if (changed_folder_id != -1) {
76                 m_folder_id_to_save = changed_folder_id;
77                 Elm_Object_Item *folder_it = elm_genlist_last_item_get(m_genlist);
78                 if (folder_it)
79                         elm_genlist_item_update(folder_it);
80         }
81 }
82
83
84 void Browser_Add_To_Bookmark_View::__title_entry_changed_cb(void *data, Evas_Object *obj, void *eventInfo)
85 {
86         BROWSER_LOGD("[%s]", __func__);
87         if (!data)
88                 return;
89
90         Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
91         const char *title = elm_entry_entry_get(br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field));
92         const char *url = elm_entry_entry_get(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field));
93
94         Eina_Bool only_has_space = EINA_FALSE;
95         int space_count = 0;
96         if (title && strlen(title)) {
97                 for (int i = 0 ; i < strlen(title) ; i++) {
98                         if (title[i] == ' ')
99                                 space_count++;
100                 }
101                 if (space_count == strlen(title))
102                         only_has_space = EINA_TRUE;
103         }
104
105         space_count = 0;
106         if (url && strlen(url)) {
107                 for (int i = 0 ; i < strlen(url) ; i++) {
108                         if (url[i] == ' ')
109                                 space_count++;
110                 }
111                 if (space_count == strlen(url))
112                         only_has_space = EINA_TRUE;
113         }
114
115         char *text = elm_entry_markup_to_utf8(elm_entry_entry_get(obj));
116         if (!text || strlen(text) == 0 || !title || strlen(title) == 0
117             || !url || strlen(url) == 0 || only_has_space)
118                 elm_object_disabled_set(add_to_bookmark_view->m_title_done_button, EINA_TRUE);
119         else
120                 elm_object_disabled_set(add_to_bookmark_view->m_title_done_button, EINA_FALSE);
121
122         if (text)
123                 free(text);
124 }
125
126 char *Browser_Add_To_Bookmark_View::__genlist_label_get_cb(void *data, Evas_Object *obj, const char *part)
127 {
128         BROWSER_LOGD("[%s]", __func__);
129         if (!data || !part)
130                 return NULL;
131
132         if (!strncmp(part, "elm.text.1", strlen("elm.text.1"))) {
133                 Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
134                 Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
135                 int folder_id = add_to_bookmark_view->m_folder_id_to_save;
136
137                 if (add_to_bookmark_view->m_folder_id_to_save == BROWSER_BOOKMARK_MAIN_FOLDER_ID)
138                         return strdup(BR_STRING_BOOKMARKS);
139                 else {
140                         string default_folder_name = bookmark_db->get_folder_name_by_id(folder_id);
141                         return strdup(default_folder_name.c_str());
142                 }
143         } else if (!strncmp(part, "elm.text.2", strlen("elm.text.2")))
144                 return strdup(BR_STRING_FOLDER);
145
146         return NULL;
147 }
148
149 Evas_Object *Browser_Add_To_Bookmark_View::__genlist_icon_get_cb(void *data, Evas_Object *obj, const char *part)
150 {
151         BROWSER_LOGD("[%s]", part);
152         if (!data || !part)
153                 return NULL;
154
155         genlist_item_param *param = (genlist_item_param *)data;
156         field_type type = param->type;
157         Browser_Add_To_Bookmark_View *add_to_bookmark_view = param->add_to_bookmark_view;
158         string title = add_to_bookmark_view->m_title;
159         string url = add_to_bookmark_view->m_url;
160
161         if (!strncmp(part, "elm.icon", strlen("elm.icon"))) {
162                 if (type == TITLE_EDIT_FIELD) {
163                         add_to_bookmark_view->m_title_edit_field = br_elm_editfield_add(obj, EINA_TRUE);
164                         if (!add_to_bookmark_view->m_title_edit_field)
165                                 return NULL;
166                         br_elm_editfield_entry_single_line_set(add_to_bookmark_view->m_title_edit_field, EINA_TRUE);
167                         br_elm_editfield_guide_text_set(add_to_bookmark_view->m_title_edit_field, BR_STRING_ENTER_BOOKMARK_NAME);
168                         br_elm_editfield_label_set(add_to_bookmark_view->m_title_edit_field, BR_STRING_TITLE);
169
170                         evas_object_smart_callback_add(br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field),
171                                                         "changed", __title_entry_changed_cb, add_to_bookmark_view);
172
173                         if (!add_to_bookmark_view->m_input_title.empty()) {
174                                 elm_entry_entry_set(br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field),
175                                                                         add_to_bookmark_view->m_input_title.c_str());
176                                 add_to_bookmark_view->m_input_title.clear();
177                         } else {
178                                 char *mark_up = elm_entry_utf8_to_markup(title.c_str());
179                                 if (!mark_up) {
180                                         BROWSER_LOGE("elm_entry_utf8_to_markup failed");
181                                         return NULL;
182                                 }
183                                 elm_entry_entry_set(br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field), mark_up);
184
185                                 if (mark_up)
186                                         free(mark_up);
187                         }
188
189                         return add_to_bookmark_view->m_title_edit_field;
190                 } else {
191                         add_to_bookmark_view->m_url_edit_field = br_elm_editfield_add(obj, EINA_TRUE);
192                         if (!add_to_bookmark_view->m_url_edit_field)
193                                 return NULL;
194                         br_elm_editfield_entry_single_line_set(add_to_bookmark_view->m_url_edit_field, EINA_TRUE);
195                         br_elm_editfield_label_set(add_to_bookmark_view->m_url_edit_field, BR_STRING_URL);
196                         elm_entry_input_panel_layout_set(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field),
197                                                         ELM_INPUT_PANEL_LAYOUT_URL);
198
199                         evas_object_smart_callback_add(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field),
200                                                         "changed", __title_entry_changed_cb, add_to_bookmark_view);
201
202                         if (!add_to_bookmark_view->m_input_url.empty()) {
203                                 elm_entry_entry_set(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field),
204                                                                         add_to_bookmark_view->m_input_url.c_str());
205                                 add_to_bookmark_view->m_input_url.clear();
206                         } else {
207                                 if (url.empty())
208                                         url = "http://";
209                                 char *mark_up = elm_entry_utf8_to_markup(url.c_str());
210                                 if (!mark_up) {
211                                         BROWSER_LOGE("elm_entry_utf8_to_markup failed");
212                                         return NULL;
213                                 }
214                                 elm_entry_entry_set(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field), mark_up);
215                                 if (mark_up)
216                                         free(mark_up);
217                         }
218
219                         return add_to_bookmark_view->m_url_edit_field;
220                 }
221         }
222
223         return NULL;
224 }
225
226 Evas_Object *Browser_Add_To_Bookmark_View::_create_content_genlist(void)
227 {
228         BROWSER_LOGD("[%s]", __func__);
229         Evas_Object *genlist = elm_genlist_add(m_conformant);
230         if (!genlist) {
231                 BROWSER_LOGE("elm_genlist_add failed");
232                 return NULL;
233         }
234
235         m_edit_field_item_class.item_style = "dialogue/1icon";
236         m_edit_field_item_class.func.text_get = NULL;
237         m_edit_field_item_class.func.content_get = __genlist_icon_get_cb;
238         m_edit_field_item_class.func.state_get = NULL;
239         m_edit_field_item_class.func.del = NULL;
240
241         m_title_param.type = TITLE_EDIT_FIELD;
242         m_title_param.add_to_bookmark_view = this;
243         elm_genlist_item_append(genlist, &m_edit_field_item_class, &m_title_param, NULL,
244                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
245
246         m_seperator_item_class.item_style = "dialogue/seperator";
247         m_seperator_item_class.func.text_get = NULL;
248         m_seperator_item_class.func.del = NULL;
249         m_seperator_item_class.func.content_get = NULL;
250         m_seperator_item_class.func.state_get = NULL;
251         Elm_Object_Item *it = elm_genlist_item_append(genlist, &m_seperator_item_class, NULL, NULL,
252                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
253         elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
254
255         m_url_param.type = URL_EDIT_FIELD;
256         m_url_param.add_to_bookmark_view = this;
257         elm_genlist_item_append(genlist, &m_edit_field_item_class, &m_url_param, NULL,
258                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
259
260         it = elm_genlist_item_append(genlist, &m_seperator_item_class, NULL, NULL,
261                                                                 ELM_GENLIST_ITEM_NONE, NULL, NULL);
262
263         elm_genlist_item_select_mode_set(it, ELM_OBJECT_SELECT_MODE_DISPLAY_ONLY);
264
265         m_folder_item_class.item_style = "dialogue/2text.2";
266         m_folder_item_class.func.text_get = __genlist_label_get_cb;
267         m_folder_item_class.func.content_get = NULL;
268         m_folder_item_class.func.state_get = NULL;
269         m_folder_item_class.func.del = NULL;
270
271         elm_genlist_item_append(genlist, &m_folder_item_class, this, NULL, ELM_GENLIST_ITEM_NONE,
272                                                                 _select_folder_clicked_cb, this);
273
274         evas_object_show(genlist);
275
276         return genlist;
277 }
278
279 void Browser_Add_To_Bookmark_View::_select_folder_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
280 {
281         BROWSER_LOGD("[%s]", __func__);
282         if (!data)
283                 return;
284
285         Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
286         if (!m_data_manager->create_select_folder_view(add_to_bookmark_view->m_folder_id_to_save)) {
287                 BROWSER_LOGE("m_data_manager->create_select_folder_view failed");
288                 return;
289         }
290
291         if (!m_data_manager->get_select_folder_view()->init()) {
292                 BROWSER_LOGE("get_select_folder_view()->init failed");
293                 m_data_manager->destroy_select_folder_view();
294         }
295
296         Elm_Object_Item *it = elm_genlist_selected_item_get(obj);
297         elm_genlist_item_selected_set(it, EINA_FALSE);
298
299         add_to_bookmark_view->m_input_title = std::string(elm_entry_entry_get(br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field)));
300         add_to_bookmark_view->m_input_url = std::string(elm_entry_entry_get(br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field)));
301 }
302
303 void Browser_Add_To_Bookmark_View::__cancel_button_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
304 {
305         BROWSER_LOGD("[%s]", __func__);
306         if (!data)
307                 return;
308
309         Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
310         Evas_Object *navi_bar = add_to_bookmark_view->m_navi_bar;
311
312         if (elm_naviframe_bottom_item_get(navi_bar) != elm_naviframe_top_item_get(navi_bar))
313                 elm_naviframe_item_pop(navi_bar);
314
315         if (m_data_manager->is_in_view_stack(BR_ADD_TO_BOOKMARK_VIEW)) {
316                 /* Set the title if enter the add to bookmark while loading. */
317                 m_data_manager->get_browser_view()->return_to_browser_view();
318         }
319
320         if (m_data_manager->is_in_view_stack(BR_BOOKMARK_VIEW) && m_data_manager->get_bookmark_view())
321                 /* boomark view -> edit one bookmark item, then cancel. */              
322                 m_data_manager->get_bookmark_view()->return_to_bookmark_view();
323 }
324
325 /* bookmark -> edit -> edit each bookmark item then bookmark edit view -> done */
326 Eina_Bool Browser_Add_To_Bookmark_View::_modify_bookmark_item(const char *title, const char *url)
327 {       
328         int bookmark_id = 0;
329         int ret = EINA_TRUE;
330         Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
331         ret = bookmark_db->get_bookmark_id_by_title_url(m_current_folder_id, m_title.c_str(), m_url.c_str(), &bookmark_id);
332         if (!ret)
333                 return EINA_FALSE;
334         ret = bookmark_db->modify_bookmark(bookmark_id, m_folder_id_to_save, title, url);
335         if (!ret)
336                 return EINA_FALSE;
337
338         Browser_Bookmark_DB::bookmark_item *item = NULL;
339
340         Browser_Bookmark_View *bookmark_view = m_data_manager->get_bookmark_view();
341         Elm_Object_Item *bookmark_edit_it = bookmark_view->m_current_genlist_item_to_edit;
342         item = (Browser_Bookmark_DB::bookmark_item *)elm_object_item_data_get(bookmark_edit_it);
343
344         item->title = title;
345         item->url = url;
346         elm_object_item_data_set(bookmark_edit_it, item);
347
348         if (m_current_folder_id != m_folder_id_to_save) {
349                 if (m_folder_id_to_save == BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
350                         /* If the bookmark item in sub folder is moved to main folder,
351                           * remove it from sub folder and append it to main folder. */
352                         for(int i = 0 ; i < bookmark_view->m_sub_folder_list.size() ; i++) {
353                                 if (bookmark_view->m_sub_folder_list[i] == item) {
354                                         bookmark_view->m_sub_folder_list.erase(bookmark_view->m_sub_folder_list.begin() + i);
355                                         break;
356                                 }
357                         }
358
359                         /* If the bookmark is empty page, destroy the empty layout to show the bookmark list. */
360                         if (bookmark_view->m_main_folder_list.size() == 0)
361                                 bookmark_view->_show_empty_content_layout(EINA_TRUE);
362                         else
363                                 bookmark_view->_show_empty_content_layout(EINA_FALSE);
364                 } else if (m_current_folder_id == BROWSER_BOOKMARK_MAIN_FOLDER_ID) {
365                         /* Move one bookmark item from main folder to sub folder. */
366                         for(int i = 0 ; i < bookmark_view->m_main_folder_list.size() ; i++) {
367                                 if (bookmark_view->m_main_folder_list[i] == item) {
368                                         delete bookmark_view->m_main_folder_list[i];
369                                         bookmark_view->m_main_folder_list.erase(bookmark_view->m_main_folder_list.begin() + i);
370                                         break;
371                                 }
372                         }
373                 } else {
374                         /* If the bookmark item in sub folder is moved to another sub folder,
375                           * just remove the item from the genlist and delete the malloced item.*/
376                         for(int i = 0 ; i < bookmark_view->m_sub_folder_list.size() ; i++) {
377                                 if (bookmark_view->m_sub_folder_list[i] == item) {
378                                         delete item;
379                                         bookmark_view->m_sub_folder_list.erase(bookmark_view->m_sub_folder_list.begin() + i);
380                                         break;
381                                 }
382                         }
383                 }
384
385                 elm_object_item_del(bookmark_edit_it);
386         }
387
388         return EINA_TRUE;
389 }
390
391 Eina_Bool Browser_Add_To_Bookmark_View::_save_bookmark_item(const char *title, const char *url)
392 {
393         BROWSER_LOGD("[%s]", __func__);
394         return m_data_manager->get_bookmark_db()->save_bookmark(m_folder_id_to_save, title, url);
395 }
396
397 void Browser_Add_To_Bookmark_View::__done_button_clicked_cb(void *data, Evas_Object *obj, void *eventInfo)
398 {
399         BROWSER_LOGD("[%s]", __func__);
400         if (!data)
401                 return;
402
403         Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
404         Evas_Object *navi_bar = add_to_bookmark_view->m_navi_bar;
405         Evas_Object *url_edit_field_entry = br_elm_editfield_entry_get(add_to_bookmark_view->m_url_edit_field);
406         char *url = elm_entry_markup_to_utf8(elm_entry_entry_get(url_edit_field_entry));
407         Evas_Object *title_edit_field_entry = br_elm_editfield_entry_get(add_to_bookmark_view->m_title_edit_field);
408         char *title = elm_entry_markup_to_utf8(elm_entry_entry_get(title_edit_field_entry));
409
410         if (!url || strlen(url) == 0) {
411                 add_to_bookmark_view->show_msg_popup(BR_STRING_ENTER_URL);
412                 return;
413         }
414         if (!title || strlen(title) == 0) {
415                 add_to_bookmark_view->show_msg_popup(BR_STRING_ENTER_TITLE);
416                 return;
417         }
418
419         add_to_bookmark_view->_done_button_clicked(title, url);
420
421         if (url)
422                 free(url);
423         if (title)
424                 free(title);
425 }
426
427 void Browser_Add_To_Bookmark_View::_done_button_clicked(const char *title, const char* url)
428 {
429         Browser_Bookmark_DB *bookmark_db = m_data_manager->get_bookmark_db();
430         Eina_Bool is_duplicate = bookmark_db->is_duplicated(m_folder_id_to_save, title, url);
431         if (!is_duplicate) {
432                 if (bookmark_db->is_full()) {
433                         show_msg_popup(BR_STRING_WARNING,
434                                         BR_STRING_WARNING_OVER_BOOKMARK_LIMIT, 5);
435                         return;
436                 } else {
437                         int ret = EINA_TRUE;
438                         if (!m_is_edit_mode)
439                                 ret = _save_bookmark_item(title, url);
440                         else
441                                 ret = _modify_bookmark_item(title, url);
442
443                         if (!ret) {
444                                 show_msg_popup(BR_STRING_FAILED);
445                                 return;
446                         } else {
447                                 if (elm_naviframe_bottom_item_get(m_navi_bar) != elm_naviframe_top_item_get(m_navi_bar))
448                                         elm_naviframe_item_pop(m_navi_bar);
449
450                                 if (!m_data_manager->is_in_view_stack(BR_BOOKMARK_VIEW)) {
451 #if defined(FEATURE_MOST_VISITED_SITES)
452                                         /* Set the title if enter the add to bookmark while loading. */
453                                         if (m_data_manager->get_browser_view()->is_most_visited_sites_running())
454                                                 m_data_manager->get_browser_view()->return_to_browser_view(EINA_TRUE);
455                                         else
456 #endif
457                                                 m_data_manager->get_browser_view()->return_to_browser_view();
458
459 #if defined(FEATURE_MOST_VISITED_SITES)
460                                         if (m_data_manager->get_browser_view()->is_most_visited_sites_running())
461                                                 m_data_manager->get_browser_view()->show_notify_popup(BR_STRING_SAVED, 3,
462                                                                                                         EINA_TRUE);
463                                         else
464 #endif
465                                                 m_data_manager->get_browser_view()->show_notify_popup(BR_STRING_SAVED, 3);
466                                 } else {
467                                         int added_bookmark_id = -1;
468                                         bookmark_db->get_bookmark_id_by_title_url(m_folder_id_to_save, title,
469                                                                 url, &added_bookmark_id);
470                                         BROWSER_LOGD("added_bookmark_id=%d", added_bookmark_id);
471                                                 /* History view -> slide one item -> add to bookmark, then done. */
472                                         m_data_manager->get_bookmark_view()->return_to_bookmark_view(added_bookmark_id);
473
474                                         m_data_manager->get_browser_view()->show_notify_popup(BR_STRING_SAVED, 3, EINA_TRUE);
475                                 }
476                         }
477                 }
478         } else
479                 show_msg_popup(BR_STRING_ALREADY_EXISTS);
480 }
481 void Browser_Add_To_Bookmark_View::__naviframe_pop_finished_cb(void *data , Evas_Object *obj, void *event_info)
482 {
483         BROWSER_LOGD("[%s]", __func__);
484         if (!data)
485                 return;
486
487         Browser_Add_To_Bookmark_View *add_to_bookmark_view = (Browser_Add_To_Bookmark_View *)data;
488         Elm_Object_Item *it = (Elm_Object_Item *)event_info;
489
490         if (add_to_bookmark_view->m_navi_it != elm_naviframe_top_item_get(m_navi_bar))
491                 return;
492
493         m_data_manager->destroy_select_folder_view();
494 }
495
496 Eina_Bool Browser_Add_To_Bookmark_View::_create_main_layout(void)
497 {
498         BROWSER_LOGD("[%s]", __func__);
499         elm_win_conformant_set(m_win, EINA_TRUE);
500         m_conformant = elm_conformant_add(m_win);
501         if (!m_conformant) {
502                 BROWSER_LOGE("elm_conformant_add failed");
503                 return EINA_FALSE;
504         }
505         elm_object_style_set(m_conformant, "internal_layout");
506         evas_object_size_hint_weight_set(m_conformant, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
507         evas_object_show(m_conformant);
508
509         m_genlist = _create_content_genlist();
510         if (!m_genlist) {
511                 BROWSER_LOGE("_create_content_genlist failed");
512                 return EINA_FALSE;
513         }
514
515         elm_object_content_set(m_conformant, m_genlist);
516         if (m_is_edit_mode)
517                 m_navi_it = elm_naviframe_item_push(m_navi_bar, BR_STRING_EDIT_BOOKMARK, NULL,
518                                                                 NULL, m_conformant, "browser_titlebar");
519         else
520                 m_navi_it = elm_naviframe_item_push(m_navi_bar, BR_STRING_ADD_TO_BOOKMARKS, NULL,
521                                                                 NULL, m_conformant, "browser_titlebar");
522
523         elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_PREV_BTN, NULL);
524
525         evas_object_smart_callback_add(m_navi_bar, "transition,finished", __naviframe_pop_finished_cb, this);
526
527         m_title_cancel_button = elm_button_add(m_conformant);
528         if (!m_title_cancel_button) {
529                 BROWSER_LOGE("elm_button_add failed!");
530                 return EINA_FALSE;
531         }
532         elm_object_style_set(m_title_cancel_button, "browser/title_button");
533         elm_object_text_set(m_title_cancel_button, BR_STRING_CANCEL);
534         evas_object_smart_callback_add(m_title_cancel_button, "clicked", __cancel_button_clicked_cb, this);
535
536         elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_TITLE_LEFT_BTN, m_title_cancel_button);
537         evas_object_show(m_title_cancel_button);
538
539         m_title_done_button = elm_button_add(m_conformant);
540         if (!m_title_done_button) {
541                 BROWSER_LOGE("elm_button_add failed!");
542                 return EINA_FALSE;
543         }
544         elm_object_style_set(m_title_done_button, "browser/title_button");
545         elm_object_text_set(m_title_done_button, BR_STRING_DONE);
546         evas_object_smart_callback_add(m_title_done_button, "clicked", __done_button_clicked_cb, this);
547
548         elm_object_item_part_content_set(m_navi_it, ELM_NAVIFRAME_ITEM_TITLE_RIGHT_BTN, m_title_done_button);
549         evas_object_show(m_title_done_button);
550
551         return EINA_TRUE;
552 }
553