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"
21 #include "tg_db_wrapper.h"
24 static Evas_Object* create_image_object_from_file(const char *icon_name, Evas_Object *parent)
26 Evas_Object *icon = elm_image_add(parent);
27 evas_object_size_hint_weight_set(icon, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
28 evas_object_size_hint_align_set(icon, EVAS_HINT_FILL, EVAS_HINT_FILL);
29 elm_image_file_set(icon, icon_name, NULL);
30 evas_object_show(icon);
34 void on_buddy_selected(void *data, Evas_Object *obj, void *event_info)
36 Elm_Object_Item *it = event_info;
37 elm_genlist_item_selected_set(it, EINA_FALSE);
38 Evas_Object *layout = elm_object_item_part_content_get(event_info, "elm.swallow.end");
39 Evas_Object *checkbox = elm_object_part_content_get(layout, "elm.swallow.content");
40 Eina_Bool checked = elm_check_state_get(checkbox);
42 elm_check_state_set(checkbox, checked);
45 appdata_s* ad = evas_object_data_get(obj, "app_data");
47 if (ad && ad->known_buddy_list && eina_list_count(ad->known_buddy_list) > 0) {
49 for (int i = 0 ; i < eina_list_count(ad->known_buddy_list) ; i++) {
50 user_data_with_pic_s *item = eina_list_nth(ad->known_buddy_list, i);
51 user_data_s* user = item->use_data;
52 user->is_selected = checked;
55 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, i+1);
57 elm_genlist_item_selected_set(list_item, EINA_FALSE);
58 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
59 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
60 elm_check_state_set(lcheckbox, checked);
64 user_data_with_pic_s *item = eina_list_nth(ad->known_buddy_list, id - 1);
65 user_data_s* user = item->use_data;
66 user->is_selected = checked;
69 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, 0);
71 elm_genlist_item_selected_set(list_item, EINA_FALSE);
72 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
73 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
74 elm_check_state_set(lcheckbox, EINA_FALSE);
77 Eina_Bool all_items_selected = EINA_TRUE;
80 user_data_with_pic_s *item = NULL;
81 EINA_LIST_FOREACH(ad->known_buddy_list, l, item) {
84 user_data_s* user = item->use_data;
85 if (!user->is_selected) {
86 all_items_selected = EINA_FALSE;
90 Elm_Object_Item* list_item = elm_genlist_nth_item_get(obj, 0);
92 elm_genlist_item_selected_set(list_item, EINA_FALSE);
93 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
94 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
95 elm_check_state_set(lcheckbox, all_items_selected);
102 char* on_buddy_name_get_cb(void *data, Evas_Object *obj, const char *part)
105 appdata_s* ad = evas_object_data_get(obj, "app_data");
106 Eina_List *list = evas_object_data_get(obj, "result_list");
109 list = ad->known_buddy_list;
112 if (list && eina_list_count(list) > 0) {
113 if (!strcmp(part, "elm.text")) {
115 char buf[512] = { 0, };
116 snprintf(buf, 512, "%s", i18n_get_text("IDS_TGRAM_MBODY_SELECT_ALL"));
120 user_data_with_pic_s* item = eina_list_nth(list, id - 1);
121 user_data_s* user = item->use_data;
123 if (user && user->print_name) {
124 char* user_name = replace(user->print_name, '_', " ");
125 char buf[512] = {'\0'};
126 snprintf(buf, 512, "<align=left><font_size=35><color=#000000>%s</color></font_size></align>", user_name);
136 void on_item_checkbox_sel_cb(void *data, Evas_Object *obj, void *event_info)
139 appdata_s* ad = evas_object_data_get(obj, "app_data");
140 Eina_Bool checked = elm_check_state_get(obj);
141 Evas_Object* buddy_gen_list = evas_object_data_get(obj, "buddy_gen_list");
142 Eina_List *list = evas_object_data_get(buddy_gen_list, "result_list");
145 list = ad->known_buddy_list;
147 if (ad && list && eina_list_count(list) > 0) {
149 for (int i = 0 ; i < eina_list_count(list) ; i++) {
150 user_data_with_pic_s *item = eina_list_nth(list, i);
151 user_data_s* user = item->use_data;
152 user->is_selected = checked;
154 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, i + 1);
156 elm_genlist_item_selected_set(list_item, EINA_FALSE);
157 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
158 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
159 elm_check_state_set(lcheckbox, checked);
163 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
164 user_data_s* user = item->use_data;
165 user->is_selected = checked;
168 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, 0);
170 elm_genlist_item_selected_set(list_item, EINA_FALSE);
171 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
172 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
173 elm_check_state_set(lcheckbox, EINA_FALSE);
176 Eina_Bool all_items_selected = EINA_TRUE;
178 user_data_with_pic_s *item = NULL;
179 EINA_LIST_FOREACH(list, l, item) {
182 user_data_s* user = item->use_data;
183 if (!user->is_selected) {
184 all_items_selected = EINA_FALSE;
188 Elm_Object_Item* list_item = elm_genlist_nth_item_get(buddy_gen_list, 0);
190 elm_genlist_item_selected_set(list_item, EINA_FALSE);
191 Evas_Object *llayout = elm_object_item_part_content_get(list_item, "elm.swallow.end");
192 Evas_Object *lcheckbox = elm_object_part_content_get(llayout, "elm.swallow.content");
193 elm_check_state_set(lcheckbox, all_items_selected);
200 Evas_Object* on_buddy_selection_part_content_get_cb(void *data, Evas_Object *obj, const char *part)
202 Evas_Object *eo = NULL;
208 ad = evas_object_data_get(obj, "app_data");
213 Eina_List *list = evas_object_data_get(obj, "result_list");
216 list = ad->known_buddy_list;
219 if (!strcmp(part, "elm.swallow.icon")) {
220 Evas_Object *image = NULL;
222 if (id == 0 && list && eina_list_count(list) > 0) {
226 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
227 user_data_s* user = item->use_data;
229 if (user->photo_path && strcmp(user->photo_path, "") != 0) {
230 image = create_image_object_from_file(user->photo_path, obj);
232 image = create_image_object_from_file(ui_utils_get_resource(DEFAULT_LIST_THUMB_SINGLE_PIC), obj);
233 evas_object_color_set(image, 45, 165, 224, 255);
236 item->contact_icon = image;
237 //evas_object_event_callback_add(item->contact_icon, EVAS_CALLBACK_DEL, buddy_icon_del_cb, item);
240 char edj_path[PATH_MAX] = {0, };
241 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
242 Evas_Object* user_pic_layout = elm_layout_add(ad->nf);
243 elm_layout_file_set(user_pic_layout, edj_path, "search_circle_layout");
244 evas_object_size_hint_weight_set(user_pic_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
245 evas_object_size_hint_align_set(user_pic_layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
246 evas_object_show(user_pic_layout);
247 elm_object_part_content_set(user_pic_layout, "content", item->contact_icon);
249 eo = elm_layout_add(obj);
250 elm_layout_theme_set(eo, "layout", "list/B/type.2", "default");
251 elm_layout_content_set(eo, "elm.swallow.content", user_pic_layout);
254 } else if (!strcmp(part, "elm.swallow.end")) {
255 if (id == 0 && list && eina_list_count(list) > 0) {
257 Eina_Bool all_items_selected = (Eina_Bool)evas_object_data_get(obj, "all_selected");
259 eo = elm_layout_add(obj);
260 elm_layout_theme_set(eo, "layout", "list/C/type.2", "default");
261 Evas_Object *check = elm_check_add(obj);
262 elm_check_state_set(check, all_items_selected);
263 elm_object_focus_set(check, EINA_FALSE);
264 evas_object_propagate_events_set(check, EINA_FALSE);
265 evas_object_data_set(check, "app_data", ad);
266 evas_object_data_set(check, "buddy_gen_list", obj);
267 evas_object_smart_callback_add(check, "changed", on_item_checkbox_sel_cb, data);
268 elm_layout_content_set(eo, "elm.swallow.content", check);
272 user_data_with_pic_s *item = eina_list_nth(list, id - 1);
273 user_data_s* user = item->use_data;
275 eo = elm_layout_add(obj);
276 elm_layout_theme_set(eo, "layout", "list/C/type.2", "default");
277 Evas_Object *check = elm_check_add(obj);
278 elm_check_state_set(check, user->is_selected);
279 elm_check_state_pointer_set(check, &user->is_selected);
280 elm_object_focus_set(check, EINA_FALSE);
281 evas_object_propagate_events_set(check, EINA_FALSE);
282 evas_object_data_set(check, "app_data", ad);
283 evas_object_data_set(check, "buddy_gen_list", obj);
284 evas_object_smart_callback_add(check, "changed", on_item_checkbox_sel_cb, data);
285 elm_layout_content_set(eo, "elm.swallow.content", check);
293 void on_done_buton_clicked(void *data, Evas_Object *object, void *event_info)
295 int selected_item_count = 0;
296 appdata_s* ad = data;
297 if (ad && ad->known_buddy_list) {
298 for (int i = 0 ; i < eina_list_count(ad->known_buddy_list) ; i++) {
299 user_data_with_pic_s *item = eina_list_nth(ad->known_buddy_list, i);
300 user_data_s* user = item->use_data;
301 if (user->is_selected) {
302 selected_item_count++;
307 if (selected_item_count > 1) {
308 appdata_s* ad = data;
309 // elm_naviframe_item_pop(ad->nf);
310 // Load chat name entry view
311 launch_group_chat_name_entry_view(ad);
313 show_toast(ad, "Select at least 2 buddies.");
317 void on_cancel_buton_clicked(void *data, Evas_Object *object, void *event_info)
319 appdata_s* ad = data;
320 if (ad && ad->known_buddy_list) {
321 for (int i = 0 ; i < eina_list_count(ad->known_buddy_list) ; i++) {
322 user_data_with_pic_s *item = eina_list_nth(ad->known_buddy_list, i);
323 user_data_s* user = item->use_data;
324 user->is_selected = EINA_FALSE;
327 elm_naviframe_item_pop(ad->nf);
328 ad->current_app_state = TG_PEER_SEARCH_VIEW_STATE;
329 evas_object_show(ad->panel);
333 static char* _util_get_first_char(char *input_text)
335 int unicode_len = eina_unicode_utf8_get_len(input_text);
336 int str_len = strlen(input_text);
337 int lang_byte = str_len / unicode_len + (str_len % unicode_len > 0 ? 1 : 0);
339 first_char = strndup(input_text, lang_byte);
341 char *first_char = NULL;
344 unsigned char mask = 0x80;
347 while (*input_text & mask) {
352 count = count == 0 ? 1 : count;
353 first_char = strndup(input_text, count);
358 static void _update_index_item(void *data, void *item_data, int id, Eina_List *list)
360 appdata_s* ad = data;
364 user_data_with_pic_s* item = eina_list_nth(list, id-1);
365 user_data_s* user = item->use_data;
367 Evas_Object *index = evas_object_data_get(ad->nf, "fs_index");
370 char *index_text = NULL;
371 int unicode_len = eina_unicode_utf8_get_len(user->print_name);
372 int str_len = strlen(user->print_name);
373 int lang_byte = str_len / unicode_len + (str_len % unicode_len > 0 ? 1 : 0);
375 index_text = strndup(user->print_name, lang_byte);
378 char *index_text = _util_get_first_char(user->print_name);
380 Elm_Object_Item *it = elm_index_item_append(index, index_text, NULL, NULL);
382 elm_object_item_data_set(it, item_data);
387 static void _append_peer_item(Evas_Object *genlist, appdata_s *ad, Eina_List *item_list)
390 static Elm_Genlist_Item_Class itc;
391 Elm_Object_Item* item = NULL;
393 itc.item_style = "type1";
394 itc.func.text_get = on_buddy_name_get_cb;
395 itc.func.content_get = on_buddy_selection_part_content_get_cb;
396 itc.func.state_get = NULL;
399 int count = eina_list_count(item_list);
401 evas_object_data_set(genlist, "result_list", item_list);
404 for (i = 0; i < count+1; i++) {
405 item = elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, on_buddy_selected, (void*) i);
406 //_update_index_item(ad, item, i, item_list);
410 elm_genlist_item_append(genlist, &itc, (void *) i, NULL, ELM_GENLIST_ITEM_NONE, NULL, (void*) i);
414 static void _on_search_entry_changed(void *data, Evas_Object *obj, void *event_info)
416 appdata_s* ad = data;
417 char* entry_text = NULL;
419 Evas_Object *buddy_list = evas_object_data_get(ad->nf, "buddy_list");
420 Evas_Object *main_layout = evas_object_data_get(ad->nf, "main_layout");
421 Evas_Object *index = evas_object_data_get(ad->nf, "fs_index");
423 user_data_with_pic_s *item;
424 user_data_s* user; // = item->use_data;
427 DBG("buddy_list is null");
431 elm_genlist_clear(buddy_list);
432 //elm_index_item_clear(index);
434 entry_text = trim(elm_entry_markup_to_utf8(elm_object_text_get(obj)));
436 Eina_List *result_list = NULL;
439 if (ucol_is_jamo(entry_text)) {
440 LOGD("entry_text is jamo, %s", entry_text);
441 EINA_LIST_FOREACH(ad->known_buddy_list, l, item) {
443 user = item->use_data;
444 result = ucol_compare_first_letters(user->print_name, entry_text);
446 result_list = eina_list_append(result_list, item);
450 LOGD("entry_text is not jamo, %s", entry_text);
451 EINA_LIST_FOREACH(ad->known_buddy_list, l, item) {
452 user = item->use_data;
454 if (ucol_search(user->print_name, entry_text) != -ENOENT) {
455 result_list = eina_list_append(result_list, item);
460 if ((entry_text == NULL || strlen(entry_text) == 0) && result_list == NULL) {
461 result_list = ad->known_buddy_list;
464 LOGD("count of result_list is %d", eina_list_count(result_list));
467 Evas_Object *fs_layout = evas_object_data_get(ad->nf, "fs_layout");
468 _append_peer_item(buddy_list, data, result_list);
469 Evas_Object *content = elm_object_part_content_unset(main_layout, "elm.swallow.content");
470 if (evas_object_data_get(ad->nf, "no_contents_layout") == content) {
471 evas_object_hide(content);
473 elm_object_part_content_set(main_layout, "elm.swallow.content", fs_layout);
476 Evas_Object *no_contents = evas_object_data_get(ad->nf, "no_contents_layout");
478 elm_object_part_content_unset(main_layout, "elm.swallow.content");
479 elm_object_part_content_set(main_layout, "elm.swallow.content", no_contents);
482 elm_index_level_go(index, 0);
483 elm_genlist_realized_items_update(buddy_list);
489 static void _on_search_entry_focused(void *data, Evas_Object *obj, void *event_info)
491 Evas_Object *layout = data;
492 if (elm_object_focus_get(layout)) {
493 elm_object_signal_emit(layout, "elm,state,focused", "");
495 elm_object_signal_emit(layout, "elm,state,unfocused", "");
499 static Evas_Object *create_searchbar(Evas_Object* parent, void* data)
501 char edj_path[PATH_MAX] = {0, };
502 app_get_resource(TELEGRAM_INIT_VIEW_EDJ, edj_path, (int)PATH_MAX);
504 Evas_Object* layout = elm_layout_add(parent);
505 elm_layout_file_set(layout, edj_path, "");
507 /* edit field layout */
508 Evas_Object* searchbar_layout = elm_layout_add(parent);
509 elm_layout_theme_set(searchbar_layout, "layout", "searchfield", "singleline");
510 evas_object_size_hint_align_set(searchbar_layout, EVAS_HINT_FILL, 0.0);
511 evas_object_size_hint_weight_set(searchbar_layout, EVAS_HINT_EXPAND, 0.0);
512 //evas_object_event_callback_add(searchbar_layout, EVAS_CALLBACK_DEL, _searchbar_layout_del_cb, NULL);
515 Evas_Object* searchbar_entry = elm_entry_add(searchbar_layout);
516 elm_entry_cursor_end_set(searchbar_entry);
517 evas_object_size_hint_weight_set(searchbar_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
518 evas_object_size_hint_align_set(searchbar_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
519 elm_entry_single_line_set(searchbar_entry, EINA_TRUE);
520 elm_entry_scrollable_set(searchbar_entry, EINA_FALSE);
521 elm_entry_cnp_mode_set(searchbar_entry, ELM_CNP_MODE_NO_IMAGE);
522 elm_entry_context_menu_disabled_set(searchbar_entry, EINA_TRUE);
523 elm_object_part_text_set(searchbar_entry, "elm.guide", i18n_get_text("IDS_TGRAM_NPBODY_SEARCH"));
524 elm_object_focus_set(searchbar_entry, EINA_FALSE);
526 limit_filter_data.max_char_count = 255;
527 elm_entry_markup_filter_append(searchbar_entry, elm_entry_filter_limit_size, &limit_filter_data);
530 evas_object_smart_callback_add(searchbar_entry, "changed", _on_search_entry_changed, data);
531 evas_object_smart_callback_add(searchbar_entry, "preedit,changed", _on_search_entry_changed, data);
532 evas_object_smart_callback_add(searchbar_entry, "focused", _on_search_entry_focused, searchbar_layout);
534 elm_object_part_content_set(searchbar_layout, "elm.swallow.content", searchbar_entry);
535 return searchbar_layout;
538 static void _index_selected_cb(void *data, Evas_Object *obj, void *event_info)
540 appdata_s* ad = data;
541 Evas_Object *buddy_list = evas_object_data_get(ad->nf, "buddy_list");
542 //Elm_Object_Item *gl_item = elm_genlist_first_item_get(search_list);
544 user_data_with_pic_s* gl_item = NULL;//eina_list_nth(ad->search_peer_list, 0);
546 //tg_peer_info_s* user = item->use_data;
547 Eina_List *list = ad->known_buddy_list;
551 EINA_LIST_FOREACH(list, l, gl_item) {
552 if (ucol_compare_first_letters(gl_item->use_data->print_name, elm_index_item_letter_get(event_info)) == 0) {
558 if (eina_list_count(list) == index) {
562 Elm_Object_Item *item = elm_genlist_nth_item_get(buddy_list, ++index);
563 elm_genlist_item_show(item, ELM_GENLIST_ITEM_SCROLLTO_TOP);
566 static Evas_Object* create_fastscroll(appdata_s *ad)
568 Evas_Object *parent = ad->nf;
572 char buf[PATH_MAX] = {0, };
574 index = elm_index_add(parent);
575 elm_object_part_content_set(parent, "elm.swallow.fastscroll", index);
576 elm_index_autohide_disabled_set(index, EINA_TRUE);
577 elm_index_omit_enabled_set(index, EINA_TRUE);
579 /* 1. Special character & Numbers */
580 elm_index_item_append(index, "#", NULL, NULL);
582 /* 2. Local language */
583 str = i18n_get_text("IDS_COM_BODY_ABCDEFGHIJKLMNOPQRSTUVWXYZ");
588 eina_unicode_utf8_next_get(str, &i);
589 snprintf(buf, i - j + 1, "%s", str + j);
592 elm_index_item_append(index, buf, NULL, NULL);
594 elm_index_level_go(index, 0);
596 evas_object_smart_callback_add(index, "selected", _index_selected_cb, ad);
597 //evas_object_smart_callback_add(index, "changed", _index_changed_cb, NULL);
598 //evas_object_smart_callback_add(index, "language,changed", _index_language_changed_cb, NULL);
603 void free_known_buddylist(appdata_s *ad)
605 user_data_with_pic_s* item = NULL;
606 EINA_LIST_FREE(ad->known_buddy_list, item) {
611 user_data_s* user_data = item->use_data;
613 if (user_data->print_name) {
614 free(user_data->print_name);
615 user_data->print_name = NULL;
618 if (user_data->photo_path) {
619 free(user_data->photo_path);
620 user_data->photo_path = NULL;
623 if (user_data->first_name) {
624 free(user_data->first_name);
625 user_data->first_name = NULL;
628 if (user_data->last_name) {
629 free(user_data->last_name);
630 user_data->last_name = NULL;
633 if (user_data->phone) {
634 free(user_data->phone);
635 user_data->phone = NULL;
637 if (user_data->real_first_name) {
638 free(user_data->real_first_name);
639 user_data->real_first_name = NULL;
642 if (user_data->real_last_name) {
643 free(user_data->real_last_name);
644 user_data->real_last_name = NULL;
647 if (user_data->username) {
648 free(user_data->username);
649 user_data->username = NULL;
654 ad->known_buddy_list = NULL;
657 void launch_contact_selction_view(void *data)
659 appdata_s* ad = data;
660 ad->current_app_state = TG_BUDDY_LIST_SELECTION_STATE;
661 free_known_buddylist(ad);
662 ad->known_buddy_list = load_buddy_data_by_name(ad->user_id.id, NULL);
664 evas_object_hide(ad->panel);
665 elm_panel_hidden_set(ad->panel, EINA_TRUE);
668 elm_layout_theme_set(ad->layout, "layout", "application", "default");
671 Evas_Object* layout = elm_layout_add(ad->nf);
672 elm_layout_theme_set(layout, "layout", "application", "searchbar_base");
673 evas_object_size_hint_weight_set(layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
674 evas_object_size_hint_align_set(layout, EVAS_HINT_FILL, EVAS_HINT_FILL);
675 evas_object_show(layout);
677 Evas_Object* searchbar_layout = create_searchbar(layout, ad);
678 elm_object_part_content_set(layout, "searchbar", searchbar_layout);
680 Evas_Object* fs_layout = elm_layout_add(layout);
681 elm_layout_theme_set(fs_layout, "layout", "application", "fastscroll");
682 elm_object_part_content_set(layout, "elm.swallow.content", fs_layout);
684 Evas_Object* index = create_fastscroll(ad);
685 elm_object_part_content_set(fs_layout, "elm.swallow.fastscroll", index);
687 Evas_Object* buddy_gen_list = elm_genlist_add(ad->nf);
688 elm_list_mode_set(buddy_gen_list, ELM_LIST_COMPRESS);
690 // FIXME: Deprecated API
691 // elm_genlist_decorate_mode_set(buddy_gen_list, ELM_LIST_COMPRESS);
692 evas_object_size_hint_weight_set(buddy_gen_list, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
693 evas_object_size_hint_align_set(buddy_gen_list, EVAS_HINT_FILL, EVAS_HINT_FILL);
695 evas_object_data_set(buddy_gen_list, "app_data", ad);
696 elm_object_part_content_set(fs_layout, "elm.swallow.content", buddy_gen_list);
698 Eina_Bool all_items_selected = EINA_FALSE;
699 evas_object_data_set(buddy_gen_list, "all_selected", (void *)((int)all_items_selected));
701 evas_object_show(buddy_gen_list);
703 _append_peer_item(buddy_gen_list, ad, ad->known_buddy_list);
706 Evas_Object *nocontents = elm_layout_add(ad->nf);
707 elm_layout_theme_set(nocontents, "layout", "nocontents", "default");
708 evas_object_size_hint_weight_set(nocontents, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
709 evas_object_size_hint_align_set(nocontents, EVAS_HINT_FILL, EVAS_HINT_FILL);
710 elm_object_part_text_set(nocontents, "elm.text", _("IDS_TGRAM_NPBODY_NO_RESULTS_FOUND_ABB"));
711 evas_object_data_set(ad->nf, "no_contents_layout", nocontents);
713 evas_object_data_set(ad->nf, "fs_layout", fs_layout);
714 evas_object_data_set(ad->nf, "fs_index", index);
715 evas_object_data_set(ad->nf, "main_layout", layout);
716 evas_object_data_set(ad->nf, "buddy_list", buddy_gen_list);
718 Evas_Object* done_btn = elm_button_add(ad->layout);
719 elm_object_style_set(done_btn, "naviframe/title_right");
720 evas_object_smart_callback_add(done_btn, "clicked", on_done_buton_clicked, ad);
721 elm_object_text_set(done_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_DONE_ABB"));
722 evas_object_show(done_btn);
724 Evas_Object* cancel_btn = elm_button_add(ad->layout);
725 elm_object_style_set(cancel_btn, "naviframe/title_left");
726 evas_object_smart_callback_add(cancel_btn, "clicked", on_cancel_buton_clicked, ad);
727 elm_object_text_set(cancel_btn, i18n_get_text("IDS_TGRAM_ACBUTTON_CANCEL_ABB"));
728 evas_object_show(cancel_btn);
730 Elm_Object_Item* buddy_sel_nav_item = NULL;
731 buddy_sel_nav_item = elm_naviframe_item_push(ad->nf, i18n_get_text("IDS_TGRAM_TMBODY_SELECT_CONTACTS_ABB"), NULL, NULL, layout, NULL);
732 elm_object_item_part_content_set(buddy_sel_nav_item, "title_right_btn", done_btn);
733 elm_object_item_part_content_set(buddy_sel_nav_item, "title_left_btn", cancel_btn);