2 This file is part of Telegram application for tizen
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
9 This library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
14 You should have received a copy of the GNU Lesser General Public
15 License along with this library; if not, write to the Free Software
16 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19 #include "contact_selection_view.h"
20 #include "group_chat_entry_view.h"
23 static Evas_Object* create_image_object_from_file(const char *icon_name, Evas_Object *parent)
25 Evas_Object *icon = elm_image_add(parent);
26 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
27 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
28 elm_image_file_set(icon, icon_name, NULL);
29 evas_object_show(icon);
33 void on_buddy_selected(void *data, Evas_Object *obj, void *event_info)
35 Elm_Object_Item *it = event_info;
36 elm_genlist_item_selected_set(it, EINA_FALSE);
37 Evas_Object *layout = elm_object_item_part_content_get(event_info, "elm.swallow.end");
38 Evas_Object *checkbox = elm_object_part_content_get(layout, "elm.swallow.content");
39 Eina_Bool checked = elm_check_state_get(checkbox);
41 elm_check_state_set(checkbox, checked);
44 appdata_s* ad = evas_object_data_get(obj, "app_data");
46 if (ad && ad->buddy_list && eina_list_count(ad->buddy_list) > 0) {
48 for (int i = 0 ; i < eina_list_count(ad->buddy_list) ; i++) {
49 user_data_with_pic_s *item = eina_list_nth(ad->buddy_list, i);
50 user_data_s* user = item->use_data;
51 user->is_selected = checked;
54 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, i+1);
56 elm_genlist_item_selected_set(list_item, EINA_FALSE);
57 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
58 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
59 elm_check_state_set(lcheckbox, checked);
63 user_data_with_pic_s *item = eina_list_nth(ad->buddy_list, id - 1);
64 user_data_s* user = item->use_data;
65 user->is_selected = checked;
68 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, 0);
70 elm_genlist_item_selected_set(list_item, EINA_FALSE);
71 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
72 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
73 elm_check_state_set(lcheckbox, EINA_FALSE);
76 Eina_Bool all_items_selected = EINA_TRUE;
77 for (int i = 0 ; i < eina_list_count(ad->buddy_list) ; i++) {
78 user_data_with_pic_s *item = eina_list_nth(ad->buddy_list, i);
79 user_data_s* user = item->use_data;
80 if (!user->is_selected) {
81 all_items_selected = EINA_FALSE;
85 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, 0);
87 elm_genlist_item_selected_set(list_item, EINA_FALSE);
88 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
89 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
90 elm_check_state_set(lcheckbox, all_items_selected);
97 char* on_buddy_name_get_cb(void *data, Evas_Object *obj, const char *part)
100 appdata_s* ad = evas_object_data_get(obj, "app_data");
101 Eina_List *list = evas_object_data_get(obj, "result_list");
104 list = ad->buddy_list;
107 if (list && eina_list_count(list) > 0) {
108 if (!strcmp(part, "elm.text")) {
110 char buf[512] = { 0, };
111 snprintf(buf, 512, "%s", i18n_get_text("IDS_TGRAM_MBODY_SELECT_ALL"));
115 user_data_with_pic_s* item = eina_list_nth(list, id - 1);
116 user_data_s* user = item->use_data;
118 if (user && user->print_name) {
119 char* user_name = replace(user->print_name, '_', " ");
120 char buf[512] = {'\0'};
121 snprintf(buf, 512, "<align=left><font_size=35><color=#000000>%s</color></font_size></align>", user_name);
131 void on_item_checkbox_sel_cb(void *data, Evas_Object *obj, void *event_info)
134 appdata_s* ad = evas_object_data_get(obj, "app_data");
135 Eina_Bool checked = elm_check_state_get(obj);
136 Evas_Object* buddy_gen_list = evas_object_data_get(obj, "buddy_gen_list");
137 Eina_List *list = evas_object_data_get(buddy_gen_list, "result_list");
140 list = ad->buddy_list;
142 if (ad && list && eina_list_count(list) > 0) {
144 for (int i = 0 ; i < eina_list_count(list) ; i++) {
145 user_data_with_pic_s *item = eina_list_nth(list, i);
146 user_data_s* user = item->use_data;
147 user->is_selected = checked;
149 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, i + 1);
151 elm_genlist_item_selected_set(list_item, EINA_FALSE);
152 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
153 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
154 elm_check_state_set(lcheckbox, checked);
158 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
159 user_data_s* user = item->use_data;
160 user->is_selected = checked;
163 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, 0);
165 elm_genlist_item_selected_set(list_item, EINA_FALSE);
166 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
167 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
168 elm_check_state_set(lcheckbox, EINA_FALSE);
171 Eina_Bool all_items_selected = EINA_TRUE;
172 for (int i = 0 ; i < eina_list_count(list) ; i++) {
173 user_data_with_pic_s *item = eina_list_nth(list, i);
174 user_data_s* user = item->use_data;
175 if (!user->is_selected) {
176 all_items_selected = EINA_FALSE;
180 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, 0);
182 elm_genlist_item_selected_set(list_item, EINA_FALSE);
183 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
184 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
185 elm_check_state_set(lcheckbox, all_items_selected);
192 Evas_Object* on_buddy_selection_part_content_get_cb(void *data, Evas_Object *obj, const char *part)
194 Evas_Object *eo = NULL;
200 ad = evas_object_data_get(obj, "app_data");
205 Eina_List *list = evas_object_data_get(obj, "result_list");
208 list = ad->buddy_list;
211 if (!strcmp(part, "elm.swallow.icon")) {
212 Evas_Object *image = NULL;
214 if (id == 0 && list && eina_list_count(list) > 0) {
218 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
219 user_data_s* user = item->use_data;
221 if (user->photo_path && strcmp(user->photo_path, "") != 0) {
222 image = create_image_object_from_file(user->photo_path, obj);
224 image = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_SINGLE_PIC), obj);
225 evas_object_color_set(image, 45, 165, 224, 255);
228 item->contact_icon = image;
229 evas_object_event_callback_add(item->contact_icon, EVAS_CALLBACK_DEL, buddy_icon_del_cb, item);
232 char edj_path[PATH_MAX] = {0, };
233 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
234 Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
235 elm_layout_file_set(user_pic_layout, edj_path, "search_circle_layout");
236 evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
237 evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
238 evas_object_show(user_pic_layout);
239 elm_object_part_content_set(user_pic_layout, "content", item->contact_icon);
241 eo = elm_layout_add(obj);
242 elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
243 elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
246 } else if (!strcmp(part, "elm.swallow.end")) {
247 if (id == 0 && list && eina_list_count(list) > 0) {
249 Eina_Bool all_items_selected = (Eina_Bool)evas_object_data_get(obj, "all_selected");
251 eo = elm_layout_add(obj);
252 elm_layout_theme_set(eo, "layout", "list/C/type.2", "default");
253 Evas_Object *check = elm_check_add(obj);
254 elm_check_state_set(check, all_items_selected);
255 elm_object_focus_set(check, EINA_FALSE);
256 evas_object_propagate_events_set(check, EINA_FALSE);
257 evas_object_data_set(check, "app_data", ad);
258 evas_object_data_set(check, "buddy_gen_list", obj);
259 evas_object_smart_callback_add(check, "changed", on_item_checkbox_sel_cb, data);
260 elm_layout_content_set(eo, "elm.swallow.content", check);
264 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
265 user_data_s* user = item->use_data;
267 eo = elm_layout_add(obj);
268 elm_layout_theme_set(eo, "layout", "list/C/type.2", "default");
269 Evas_Object *check = elm_check_add(obj);
270 elm_check_state_set(check, user->is_selected);
271 elm_check_state_pointer_set(check, &user->is_selected);
272 elm_object_focus_set(check, EINA_FALSE);
273 evas_object_propagate_events_set(check, EINA_FALSE);
274 evas_object_data_set(check, "app_data", ad);
275 evas_object_data_set(check, "buddy_gen_list", obj);
276 evas_object_smart_callback_add(check, "changed", on_item_checkbox_sel_cb, data);
277 elm_layout_content_set(eo, "elm.swallow.content", check);
285 void on_done_buton_clicked(void *data, Evas_Object *object, void *event_info)
287 int selected_item_count = 0;
288 appdata_s* ad = data;
289 if (ad && ad->buddy_list) {
290 for (int i = 0 ; i < eina_list_count(ad->buddy_list) ; i++) {
291 user_data_with_pic_s *item = eina_list_nth(ad->buddy_list, i);
292 user_data_s* user = item->use_data;
293 if (user->is_selected) {
294 selected_item_count++;
299 if (selected_item_count > 1) {
300 appdata_s* ad = data;
301 // elm_naviframe_item_pop(ad->nf);
302 // Load chat name entry view
303 launch_group_chat_name_entry_view(ad);
305 show_toast(ad, "Select at least 2 buddies.");
309 void on_cancel_buton_clicked(void *data, Evas_Object *object, void *event_info)
311 appdata_s* ad = data;
312 if (ad && ad->buddy_list) {
313 for (int i = 0 ; i < eina_list_count(ad->buddy_list) ; i++) {
314 user_data_with_pic_s *item = eina_list_nth(ad->buddy_list, i);
315 user_data_s* user = item->use_data;
316 user->is_selected = EINA_FALSE;
319 elm_naviframe_item_pop(ad->nf);
320 ad->current_app_state = TG_PEER_SEARCH_VIEW_STATE;
321 evas_object_show(ad->panel);
325 static char* _util_get_first_char(char *input_text)
327 int unicode_len = eina_unicode_utf8_get_len(input_text);
328 int str_len = strlen(input_text);
329 int lang_byte = str_len / unicode_len + (str_len % unicode_len > 0 ? 1 : 0);
331 first_char = strndup(input_text, lang_byte);
333 char *first_char = NULL;
336 unsigned char mask = 0x80;
339 while (*input_text & mask) {
344 count = count == 0 ? 1 : count;
345 first_char = strndup(input_text, count);
350 static void _update_index_item(void *data, void *item_data, int id, Eina_List *list)
352 appdata_s* ad = data;
356 user_data_with_pic_s* item = eina_list_nth(list, id-1);
357 user_data_s* user = item->use_data;
359 Evas_Object *index = evas_object_data_get(ad->nf, "fs_index");
362 char *index_text = NULL;
363 int unicode_len = eina_unicode_utf8_get_len(user->print_name);
364 int str_len = strlen(user->print_name);
365 int lang_byte = str_len / unicode_len + (str_len % unicode_len > 0 ? 1 : 0);
367 index_text = strndup(user->print_name, lang_byte);
370 char *index_text = _util_get_first_char(user->print_name);
372 Elm_Object_Item *it = elm_index_item_append(index, index_text, NULL, NULL);
374 elm_object_item_data_set(it, item_data);
379 static void _append_peer_item(Evas_Object *genlist, appdata_s *ad, Eina_List* item_list)
382 static Elm_Genlist_Item_Class itc;
383 Elm_Object_Item* item = NULL;
385 itc.item_style = "type1";
386 itc.func.text_get = on_buddy_name_get_cb;
387 itc.func.content_get = on_buddy_selection_part_content_get_cb;
388 itc.func.state_get = NULL;
391 int count = eina_list_count(item_list);
393 evas_object_data_set(genlist, "result_list", item_list);
396 for (i = 0; i < count+1; i++) {
397 item = elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, on_buddy_selected, (void*) i);
398 //_update_index_item(ad, item, i, item_list);
402 elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void*) i);
406 static void _on_search_entry_changed(void *data, Evas_Object *obj, void *event_info)
408 appdata_s* ad = data;
409 char* entry_text = NULL;
411 Evas_Object *buddy_list = evas_object_data_get(ad->nf, "buddy_list");
412 Evas_Object *main_layout = evas_object_data_get(ad->nf, "main_layout");
413 Evas_Object *index = evas_object_data_get(ad->nf, "fs_index");
415 user_data_with_pic_s *item;
416 user_data_s* user; // = item->use_data;
419 DBG("buddy_list is null");
423 elm_genlist_clear(buddy_list);
424 //elm_index_item_clear(index);
426 entry_text = trim(elm_entry_markup_to_utf8(elm_object_text_get(obj)));
428 Eina_List *result_list = NULL;
431 if (ucol_is_jamo(entry_text)) {
432 LOGD("entry_text is jamo, %s", entry_text);
433 EINA_LIST_FOREACH(ad->buddy_list, l, item) {
435 user = item->use_data;
436 result = ucol_compare_first_letters(user->print_name, entry_text);
438 result_list = eina_list_append(result_list, item);
442 LOGD("entry_text is not jamo, %s", entry_text);
443 EINA_LIST_FOREACH(ad->buddy_list, l, item) {
444 user = item->use_data;
446 if (ucol_search(user->print_name, entry_text) != -ENOENT) {
447 result_list = eina_list_append(result_list, item);
452 if ((entry_text == NULL || strlen(entry_text) == 0) && result_list == NULL) {
453 result_list = ad->buddy_list;
456 LOGD("count of result_list is %d", eina_list_count(result_list));
459 Evas_Object *fs_layout = evas_object_data_get(ad->nf, "fs_layout");
460 _append_peer_item(buddy_list, data, result_list);
461 Evas_Object *content = elm_object_part_content_unset(main_layout, "elm.swallow.content");
462 if (evas_object_data_get(ad->nf, "no_contents_layout") == content) {
463 evas_object_hide(content);
465 elm_object_part_content_set(main_layout, "elm.swallow.content", fs_layout);
468 Evas_Object *no_contents = evas_object_data_get(ad->nf, "no_contents_layout");
470 elm_object_part_content_unset(main_layout, "elm.swallow.content");
471 elm_object_part_content_set(main_layout, "elm.swallow.content", no_contents);
474 elm_index_level_go(index, 0);
475 elm_genlist_realized_items_update(buddy_list);
481 static void _on_search_entry_focused(void *data, Evas_Object *obj, void *event_info)
483 Evas_Object *layout = data;
484 if (elm_object_focus_get(layout)) {
485 elm_object_signal_emit(layout, "elm,state,focused", "");
487 elm_object_signal_emit(layout, "elm,state,unfocused", "");
491 static Evas_Object *create_searchbar(Evas_Object* parent, void* data)
493 char edj_path[PATH_MAX] = {0, };
494 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
496 Evas_Object* layout = elm_layout_add(parent);
497 elm_layout_file_set(layout, edj_path, "");
499 /* edit field layout */
500 Evas_Object* searchbar_layout = elm_layout_add(parent);
501 elm_layout_theme_set(searchbar_layout, "layout", "searchfield", "singleline");
502 evas_object_size_hint_align_set(searchbar_layout, EVAS_HINT_FILL, 0.0);
503 evas_object_size_hint_weight_set(searchbar_layout, EVAS_HINT_EXPAND, 0.0);
504 //evas_object_event_callback_add(searchbar_layout, EVAS_CALLBACK_DEL, _searchbar_layout_del_cb, NULL);
507 Evas_Object* searchbar_entry = elm_entry_add(searchbar_layout);
508 elm_entry_cursor_end_set(searchbar_entry);
509 evas_object_size_hint_weight_set(searchbar_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
510 evas_object_size_hint_align_set(searchbar_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
511 elm_entry_single_line_set(searchbar_entry, EINA_TRUE);
512 elm_entry_scrollable_set(searchbar_entry, EINA_FALSE);
513 elm_entry_cnp_mode_set(searchbar_entry, ELM_CNP_MODE_NO_IMAGE);
514 elm_entry_context_menu_disabled_set(searchbar_entry, EINA_TRUE);
515 elm_object_part_text_set(searchbar_entry, "elm.guide", i18n_get_text("IDS_TGRAM_NPBODY_SEARCH"));
516 elm_object_focus_set(searchbar_entry, EINA_FALSE);
518 limit_filter_data.max_char_count = 255;
519 elm_entry_markup_filter_append(searchbar_entry, elm_entry_filter_limit_size, &limit_filter_data);
522 evas_object_smart_callback_add(searchbar_entry, "changed", _on_search_entry_changed, data);
523 evas_object_smart_callback_add(searchbar_entry, "preedit,changed", _on_search_entry_changed, data);
524 evas_object_smart_callback_add(searchbar_entry, "focused", _on_search_entry_focused, searchbar_layout);
526 elm_object_part_content_set(searchbar_layout, "elm.swallow.content", searchbar_entry);
527 return searchbar_layout;
530 static void _index_selected_cb(void *data, Evas_Object *obj, void *event_info)
532 appdata_s* ad = data;
533 Evas_Object *buddy_list = evas_object_data_get(ad->nf, "buddy_list");
534 //Elm_Object_Item *gl_item = elm_genlist_first_item_get(search_list);
536 user_data_with_pic_s* gl_item = NULL;//eina_list_nth(ad->search_peer_list, 0);
538 //tg_peer_info_s* user = item->use_data;
539 Eina_List* list = ad->buddy_list;
543 EINA_LIST_FOREACH(list, l, gl_item) {
544 if (ucol_compare_first_letters(gl_item->use_data->print_name, elm_index_item_letter_get(event_info)) == 0) {
550 if (eina_list_count(list) == index) {
554 Elm_Object_Item *item = elm_genlist_nth_item_get(buddy_list, ++index);
555 elm_genlist_item_show(item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
558 static Evas_Object* create_fastscroll(appdata_s *ad)
560 Evas_Object *parent = ad->nf;
564 char buf[PATH_MAX] = {0, };
566 index = elm_index_add(parent);
567 elm_object_part_content_set(parent, "elm.swallow.fastscroll", index);
568 elm_index_autohide_disabled_set(index, EINA_TRUE);
569 elm_index_omit_enabled_set(index, EINA_TRUE);
571 /* 1. Special character & Numbers */
572 elm_index_item_append(index, "#", NULL, NULL);
574 /* 2. Local language */
575 str = i18n_get_text("IDS_COM_BODY_ABCDEFGHIJKLMNOPQRSTUVWXYZ");
580 eina_unicode_utf8_next_get(str, &i);
581 snprintf(buf, i - j + 1, "%s", str + j);
584 elm_index_item_append(index, buf, NULL, NULL);
586 elm_index_level_go(index, 0);
588 evas_object_smart_callback_add(index, "selected", _index_selected_cb, ad);
589 //evas_object_smart_callback_add(index, "changed", _index_changed_cb, NULL);
590 //evas_object_smart_callback_add(index, "language,changed", _index_language_changed_cb, NULL);
595 void launch_contact_selction_view(void *data)
597 appdata_s* ad = data;
598 ad->current_app_state = TG_BUDDY_LIST_SELECTION_STATE;
601 evas_object_hide(ad->panel);
602 elm_panel_hidden_set(ad->panel, EINA_TRUE);
605 elm_layout_theme_set(ad->layout, "layout", "application", "default");
608 Evas_Object* layout = elm_layout_add(ad->nf);
609 elm_layout_theme_set(layout, "layout", "application", "searchbar_base");
610 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
611 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
612 evas_object_show(layout);
614 Evas_Object* searchbar_layout = create_searchbar(layout, ad);
615 elm_object_part_content_set(layout, "searchbar", searchbar_layout);
617 Evas_Object* fs_layout = elm_layout_add(layout);
618 elm_layout_theme_set(fs_layout, "layout", "application", "fastscroll");
619 elm_object_part_content_set(layout, "elm.swallow.content", fs_layout);
621 Evas_Object* index = create_fastscroll(ad);
622 elm_object_part_content_set(fs_layout, "elm.swallow.fastscroll", index);
624 Evas_Object* buddy_gen_list = elm_genlist_add(ad->nf);
625 elm_list_mode_set(buddy_gen_list, ELM_LIST_COMPRESS);
627 // FIXME: Deprecated API
628 // elm_genlist_decorate_mode_set(buddy_gen_list, ELM_LIST_COMPRESS);
629 evas_object_size_hint_weight_set(buddy_gen_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
630 evas_object_size_hint_align_set(buddy_gen_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
632 evas_object_data_set(buddy_gen_list, "app_data", ad);
633 elm_object_part_content_set(fs_layout, "elm.swallow.content", buddy_gen_list);
635 Eina_Bool all_items_selected = EINA_FALSE;
636 evas_object_data_set(buddy_gen_list, "all_selected", (void *)((int)all_items_selected));
638 static Elm_Genlist_Item_Class itc;
640 itc.item_style = "type1";
641 itc.func.text_get = on_buddy_name_get_cb;
642 itc.func.content_get = on_buddy_selection_part_content_get_cb;
643 itc.func.state_get = NULL;
647 if (ad->buddy_list) {
648 size = eina_list_count(ad->buddy_list);
651 size = 1; // no items
654 for (int i = 0; i < size; i++) {
655 elm_genlist_item_append(buddy_gen_list, &itc, (void*)i, NULL, ELM_GENLIST_ITEM_NONE, on_buddy_selected, (void*)i);
658 evas_object_show(buddy_gen_list);
660 _append_peer_item(buddy_gen_list, ad, ad->buddy_list);
663 Evas_Object *nocontents = elm_layout_add(ad->nf);
664 elm_layout_theme_set(nocontents, "layout", "nocontents", "default");
665 evas_object_size_hint_weight_set(nocontents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
666 evas_object_size_hint_align_set(nocontents, EVAS_HINT_FILL, EVAS_HINT_FILL);
667 elm_object_part_text_set(nocontents, "elm.text", _("IDS_TGRAM_NPBODY_NO_RESULTS_FOUND_ABB"));
668 evas_object_data_set(ad->nf, "no_contents_layout", nocontents);
670 evas_object_data_set(ad->nf, "fs_layout", fs_layout);
671 evas_object_data_set(ad->nf, "fs_index", index);
672 evas_object_data_set(ad->nf, "main_layout", layout);
673 evas_object_data_set(ad->nf, "buddy_list", buddy_gen_list);
675 Evas_Object* done_btn = elm_button_add(ad->layout);
676 elm_object_style_set(done_btn, "naviframe/title_right");
677 evas_object_smart_callback_add(done_btn, "clicked", on_done_buton_clicked, ad);
678 elm_object_text_set(done_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_DONE_ABB"));
679 evas_object_show(done_btn);
681 Evas_Object* cancel_btn = elm_button_add(ad->layout);
682 elm_object_style_set(cancel_btn, "naviframe/title_left");
683 evas_object_smart_callback_add(cancel_btn, "clicked", on_cancel_buton_clicked, ad);
684 elm_object_text_set(cancel_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_CANCEL_ABB"));
685 evas_object_show(cancel_btn);
687 Elm_Object_Item* buddy_sel_nav_item = NULL;
688 buddy_sel_nav_item = elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_TMBODY_SELECT_CONTACTS_ABB"), NULL, NULL, layout, NULL);
689 elm_object_item_part_content_set(buddy_sel_nav_item, "title_right_btn", done_btn);
690 elm_object_item_part_content_set(buddy_sel_nav_item, "title_left_btn", cancel_btn);