2 * Copyright 2012 Samsung Electronics Co., Ltd
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
8 * http://www.tizenopensource.org/license
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.
18 #include "email-composer.h"
19 #include "email-composer-util.h"
20 #include "email-composer-predictive-search.h"
21 #include "email-composer-recipient.h"
23 static void _composer_ps_list_sel(void *data, Evas_Object *obj, void *event_info);
24 static Eina_Bool _composer_ps_start(void *data);
25 static Eina_Bool _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_E type);
26 static void _composer_ps_show_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type);
27 static void _composer_ps_hide_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type);
29 EmailComposerUGD *g_ugd;
31 void composer_ps_request_search(EmailComposerUGD *ugd)
35 Eina_List *predict_list = NULL;
39 predict_list = composer_ps_search_contact(ugd, ugd->ps_keyword);
42 Evas_Object *mbe = NULL;
44 if (ugd->selected_entry == ugd->to_mbe_entry) {
46 _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_TO);
47 } else if (ugd->selected_entry == ugd->cc_mbe_entry) {
49 _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_CC);
50 } else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
52 _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_BCC);
55 _composer_ps_delete_list(ugd);
57 edje_object_signal_emit(_EDJ(ugd->c_layout), "back_content", "*");
59 elm_object_scroll_hold_pop(ugd->main_scroller);
64 /* Create Predictive search field */
65 _composer_recipient_create_ps_field(ugd->c_layout, ugd);
67 if (ugd->selected_entry == ugd->to_mbe_entry) {
68 _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_TO);
69 _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_TO);
70 } else if (ugd->selected_entry == ugd->cc_mbe_entry) {
71 _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_CC);
72 _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_CC);
73 } else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
74 _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_BCC);
75 _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_BCC);
78 elm_object_scroll_hold_push(ugd->main_scroller);
80 edje_object_signal_emit(_EDJ(ugd->c_layout), "go_content", "*");
82 if (ugd->contacts_list_info) {
83 composer_ps_delete_contacts_list(ugd->contacts_list_info);
84 ugd->contacts_list_info = eina_list_free(ugd->contacts_list_info);
87 ugd->contacts_list_info = predict_list;
89 _composer_ps_create_sublist(ugd);
95 static Eina_Bool _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_E type)
99 if (type == COMPOSER_RECIPIENT_TYPE_TO) {
100 elm_object_part_content_set(g_ugd->c_layout, "to_ps", g_ugd->ps_list);
101 edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_to_ps", "*");
102 } else if (type == COMPOSER_RECIPIENT_TYPE_CC) {
103 elm_object_part_content_set(g_ugd->c_layout, "cc_ps", g_ugd->ps_list);
104 edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_cc_ps", "*");
105 } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) {
106 elm_object_part_content_set(g_ugd->c_layout, "bcc_ps", g_ugd->ps_list);
107 edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_bcc_ps", "*");
113 Evas_Object *_composer_recipient_create_ps_field(Evas_Object *parent, EmailComposerUGD *ugd)
118 evas_object_del(ugd->ps_list);
124 list = elm_genlist_add(parent);
125 elm_object_theme_set(list, ugd->th);
126 evas_object_size_hint_align_set(list, EVAS_HINT_FILL, 0.0);
127 elm_genlist_homogeneous_set(list, EINA_TRUE);
128 elm_object_focus_allow_set(list, EINA_FALSE);
130 ugd->ps_itc_2.item_style = "email.2text.1icon"; /*"email/predictive/2text.8";*/
131 ugd->ps_itc_2.func.text_get = composer_ps_text_get;
132 ugd->ps_itc_2.func.content_get = composer_ps_icon_get;
133 ugd->ps_itc_2.func.state_get = NULL;
134 ugd->ps_itc_2.func.del = NULL;
136 ugd->ps_itc_1.item_style = "email.1text.1icon"; /*"email/predictive/1text.2";*/
137 ugd->ps_itc_1.func.text_get = composer_ps_text_get;
138 ugd->ps_itc_1.func.content_get = composer_ps_icon_get;
139 ugd->ps_itc_1.func.state_get = NULL;
140 ugd->ps_itc_1.func.del = NULL;
147 static Eina_Bool _composer_ps_start(void *data)
151 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
154 ecore_timer_del(ugd->ps_timer);
155 ugd->ps_timer = NULL;
158 if (ugd->selected_entry == ugd->cc_mbe_entry) {
159 ugd->b_cc_ps_open = true;
160 } else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
161 ugd->b_bcc_ps_open = true;
164 _composer_ps_delete_list(ugd);
166 /* Disable for fix ps problem */
167 composer_ps_request_search(ugd);
172 void _composer_ps_stop(EmailComposerUGD *ugd)
176 _composer_ps_del_timer(ugd);
178 Evas_Object *mbe = NULL;
180 if (ugd->selected_entry == ugd->to_mbe_entry) {
182 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_to_ps", "*");
185 evas_object_show(ugd->cc_ly);
186 elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly);
187 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*");
190 if (ugd->bcc_added) {
191 evas_object_show(ugd->bcc_ly);
192 elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly);
193 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*");
195 } else if (ugd->selected_entry == ugd->cc_mbe_entry) {
197 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_cc_ps", "*");
200 evas_object_show(ugd->to_ly);
201 elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly);
202 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*");
205 if (ugd->bcc_added) {
206 evas_object_show(ugd->bcc_ly);
207 elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly);
208 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*");
210 } else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
212 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_bcc_ps", "*");
215 evas_object_show(ugd->to_ly);
216 elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly);
217 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*");
221 evas_object_show(ugd->cc_ly);
222 elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly);
223 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*");
227 _composer_ps_delete_list(ugd);
229 edje_object_signal_emit(_EDJ(ugd->c_layout), "back_content", "*");
234 void _composer_ps_del_timer(EmailComposerUGD *ugd)
239 ecore_timer_del(ugd->ps_timer);
240 ugd->ps_timer = NULL;
244 void _composer_ps_add_timer(EmailComposerUGD *ugd)
248 _composer_ps_del_timer(ugd);
250 ugd->ps_timer = ecore_timer_add(0.1, _composer_ps_start, ugd);
253 void _composer_ps_del_scroll_timer(EmailComposerUGD *ugd)
258 ecore_timer_del(ugd->sc_timer);
259 ugd->sc_timer = NULL;
263 Eina_Bool _composer_ps_scroll_pop(void *data)
267 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
269 _composer_ps_del_scroll_timer(ugd);
271 elm_object_scroll_hold_pop(ugd->main_scroller);
276 Eina_List *composer_ps_search_contact(EmailComposerUGD *ugd, const char *search_word)
280 int ct_ret = CONTACTS_ERROR_NONE;
281 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL;
282 Eina_List *contacts_list = NULL;
283 contacts_list_h list = NULL;
285 ct_ret = email_get_contacts_list(CONTACTS_MATCH_CONTAINS, &list, search_word);
286 debug_log("email_get_contacts_record: list : %d", list);
289 debug_log("list is NULL");
290 contacts_list_destroy(list, true);
291 return contacts_list;
294 contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *)calloc(1, sizeof(EMAIL_CONTACT_LIST_INFO_S));
296 if (contacts_list_item == NULL){
297 debug_log("contacts_list_item is NULL");
298 return contacts_list;
301 ct_ret = email_get_contacts_list_info(list, contacts_list_item);
302 debug_log("email_get_contacts_list_info: contacts_list_item : %d", contacts_list_item);
304 if (g_strcmp0(contacts_list_item->display_name, "\n") && contacts_list_item->email_address &&
305 (strcasestr(contacts_list_item->display_name, search_word) || strcasestr(contacts_list_item->email_address, search_word))) {
306 contacts_list_item->ugd = ugd;
307 contacts_list = eina_list_append(contacts_list, contacts_list_item);
309 if (contacts_list_item) {
310 Eina_List *free_contacts_list = NULL; /* to use existing composer_ps_delete_contacts_list API, a temp list is used */
311 free_contacts_list = eina_list_append(free_contacts_list, contacts_list_item);
312 composer_ps_delete_contacts_list(free_contacts_list);
313 eina_list_free(free_contacts_list);
316 contacts_list_destroy(list, true);
318 return contacts_list;
321 char *composer_ps_text_get(void *data, Evas_Object *obj, const char *part)
323 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data;
324 EmailComposerUGD *ugd = contacts_list_item->ugd;
326 char *return_value = NULL;
329 if (g_strcmp0(part, "elm.text") == 0) {
330 _composer_change_text_to_textblock(contacts_list_item->email_address, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX);
332 return_value = g_strdup(output);
335 return_value = g_strdup(contacts_list_item->email_address);
336 } else if (g_strcmp0(part, "elm.text.1") == 0) {
337 _composer_change_text_to_textblock(contacts_list_item->display_name, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX);
339 return_value = g_strdup(output);
342 return_value = g_strdup(contacts_list_item->display_name);
343 } else if (g_strcmp0(part, "elm.text.2") == 0) {
344 _composer_change_text_to_textblock(contacts_list_item->email_address, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX);
346 return_value = g_strdup(output);
349 return_value = g_strdup(contacts_list_item->email_address);
355 Evas_Object *composer_ps_icon_get(void *data, Evas_Object *obj, const char *part)
359 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data;
361 Evas_Object *ic = elm_icon_add(obj);
363 if (!strncmp(part, "elm.icon", 8)) {
364 if (contacts_list_item->image_path) {
365 debug_log("contacts_list_item->image_path : %s", contacts_list_item->image_path);
366 elm_icon_file_set(ic, contacts_list_item->image_path, NULL);
368 char buf[MAX_PATH_LEN] = { 0, };
369 snprintf(buf, sizeof(buf), "%s/00_list_photo_default.png", COMPOSER_ICON_DIR);
370 debug_log("buf : %s", buf);
371 elm_icon_file_set(ic, buf, NULL);
374 evas_object_size_hint_aspect_set(ic, EVAS_ASPECT_CONTROL_VERTICAL, 1, 1);
375 elm_icon_resizable_set(ic, 1, 1);
376 evas_object_image_smooth_scale_set(ic, 1);
377 evas_object_show(ic);
385 void composer_ps_delete_contacts_list(Eina_List *predict_list)
389 Eina_List *lt = NULL;
390 Eina_List *l = predict_list;
392 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL;
393 EINA_LIST_FOREACH(l, lt, contacts_list_item) {
394 if (contacts_list_item) {
395 contacts_list_item->ugd = NULL;
396 g_free(contacts_list_item->display);
397 contacts_list_item->display = NULL;
398 g_free(contacts_list_item->email_address);
399 contacts_list_item->email_address = NULL;
400 g_free(contacts_list_item->image_path);
401 contacts_list_item->image_path = NULL;
407 void _composer_ps_create_sublist(void *data)
411 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
413 Eina_List *lt = NULL;
419 if (!ugd->ps_list || !ugd->contacts_list_info) {
420 debug_log("ps_list is %p, contacts_list_info is %p", ugd->ps_list, ugd->contacts_list_info);
424 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL;
426 elm_genlist_clear(ugd->ps_list);
428 contacts_list_item = eina_list_data_get(ugd->contacts_list_info);
429 l = ugd->contacts_list_info;
430 EINA_LIST_FOREACH(l, lt, contacts_list_item) {
431 if (g_strcmp0(contacts_list_item->display_name, "\n") && strlen(contacts_list_item->display_name)) {
432 elm_genlist_item_append(ugd->ps_list, &ugd->ps_itc_2, contacts_list_item, NULL, ELM_GENLIST_ITEM_NONE, _composer_ps_list_sel, ugd);
434 elm_genlist_item_append(ugd->ps_list, &ugd->ps_itc_1, contacts_list_item, NULL, ELM_GENLIST_ITEM_NONE, _composer_ps_list_sel, ugd);
440 static void _composer_ps_list_sel(void *data, Evas_Object *obj, void *event_info)
444 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
446 Elm_Object_Item *item = NULL;
448 EmailRecpInfo *ri = NULL;
449 EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL;
452 item = (Elm_Object_Item *) event_info;
455 debug_log("Item is NULL or Item is not Message item");
459 Evas_Object *mbe = NULL;
461 if (ugd->selected_entry == ugd->to_mbe_entry)
463 else if (ugd->selected_entry == ugd->cc_mbe_entry)
465 else if (ugd->selected_entry == ugd->bcc_mbe_entry)
468 elm_genlist_item_selected_set(item, EINA_FALSE);
470 contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) elm_object_item_data_get(item);
472 ri = (EmailRecpInfo *) calloc(1, sizeof(EmailRecpInfo));
475 ri->selected_email_idx = 0;
477 if (contacts_list_item->email_address)
478 snprintf(ri->email_list[0].email_addr, MAX_RECIPIENT_ADDRESS_LEN, "%s", contacts_list_item->email_address);
480 if (g_strcmp0(contacts_list_item->display_name, "\n") && strlen(contacts_list_item->display_name))
481 ri->display_name = g_strdup(contacts_list_item->display_name);
483 ri->display_name = NULL;
486 ri->is_contact_info = true;
487 ri->is_always_bcc = false;
488 ri->is_from_addr = false;
490 if (!_composer_is_valid_email(ri->email_list[0].email_addr)) {
491 if (ugd->composer_noti) {
492 evas_object_del(ugd->composer_noti);
493 ugd->composer_noti = NULL;
495 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"),
496 _("IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb);
498 elm_entry_entry_set(ugd->to_mbe_entry, "");
503 char msg[MAX_STR_LEN] = { 0, };
504 snprintf(msg, sizeof(msg), _("IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"), MAX_RECIPIENT_COUNT);
506 if (ugd->selected_entry == ugd->to_mbe_entry) {
507 if (_composer_check_recipient_is_duplicated(ugd, ugd->to_mbe, ri)) {
508 ugd->is_recipient_duplicated = TRUE;
509 if (ugd->composer_noti) {
510 evas_object_del(ugd->composer_noti);
511 ugd->composer_noti = NULL;
513 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"),
514 dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb);
516 if (_composer_check_popup_exist(ugd))
517 elm_object_focus_set(mbe, EINA_FALSE);
519 elm_entry_entry_set(ugd->to_mbe_entry, "");
522 } else if (ugd->to_recipients_cnt >= MAX_RECIPIENT_COUNT) {
523 if (ugd->composer_noti) {
524 evas_object_del(ugd->composer_noti);
525 ugd->composer_noti = NULL;
527 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg,
528 0, NULL, NULL, 1.0, _composer_noti_response_cb);
530 if (_composer_check_popup_exist(ugd))
531 elm_object_focus_set(mbe, EINA_FALSE);
533 elm_entry_entry_set(ugd->to_mbe_entry, "");
538 if (g_strcmp0(contacts_list_item->display_name, "\n") && strlen(contacts_list_item->display_name))
539 elm_multibuttonentry_item_append(ugd->to_mbe, contacts_list_item->display_name, NULL, ri);
541 elm_multibuttonentry_item_append(ugd->to_mbe, contacts_list_item->email_address, NULL, ri);
542 elm_entry_entry_set(ugd->to_mbe_entry, "");
543 } else if (ugd->selected_entry == ugd->cc_mbe_entry) {
544 if (_composer_check_recipient_is_duplicated(ugd, ugd->cc_mbe, ri)) {
545 ugd->is_recipient_duplicated = TRUE;
546 if (ugd->composer_noti) {
547 evas_object_del(ugd->composer_noti);
548 ugd->composer_noti = NULL;
550 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"),
551 dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb);
553 if (_composer_check_popup_exist(ugd))
554 elm_object_focus_set(mbe, EINA_FALSE);
556 elm_entry_entry_set(ugd->cc_mbe_entry, "");
559 } else if (ugd->cc_recipients_cnt >= MAX_RECIPIENT_COUNT) {
560 if (ugd->composer_noti) {
561 evas_object_del(ugd->composer_noti);
562 ugd->composer_noti = NULL;
564 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg,
565 0, NULL, NULL, 1.0, _composer_noti_response_cb);
567 if (_composer_check_popup_exist(ugd))
568 elm_object_focus_set(mbe, EINA_FALSE);
570 elm_entry_entry_set(ugd->to_mbe_entry, "");
575 if (g_strcmp0(contacts_list_item->display_name, "\n") && strlen(contacts_list_item->display_name))
576 elm_multibuttonentry_item_append(ugd->cc_mbe, contacts_list_item->display_name, NULL, ri);
578 elm_multibuttonentry_item_append(ugd->cc_mbe, contacts_list_item->email_address, NULL, ri);
579 elm_entry_entry_set(ugd->cc_mbe_entry, "");
580 } else if (ugd->selected_entry == ugd->bcc_mbe_entry) {
581 if (_composer_check_recipient_is_duplicated(ugd, ugd->bcc_mbe, ri)) {
582 ugd->is_recipient_duplicated = TRUE;
583 if (ugd->composer_noti) {
584 evas_object_del(ugd->composer_noti);
585 ugd->composer_noti = NULL;
587 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"),
588 dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb);
590 if (_composer_check_popup_exist(ugd))
591 elm_object_focus_set(mbe, EINA_FALSE);
593 elm_entry_entry_set(ugd->bcc_mbe_entry, "");
596 } else if (ugd->bcc_recipients_cnt >= MAX_RECIPIENT_COUNT) {
597 if (ugd->composer_noti) {
598 evas_object_del(ugd->composer_noti);
599 ugd->composer_noti = NULL;
601 ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg,
602 0, NULL, NULL, 1.0, _composer_noti_response_cb);
604 if (_composer_check_popup_exist(ugd))
605 elm_object_focus_set(mbe, EINA_FALSE);
607 elm_entry_entry_set(ugd->to_mbe_entry, "");
612 if (g_strcmp0(contacts_list_item->display_name, "\n") && strlen(contacts_list_item->display_name))
613 elm_multibuttonentry_item_append(ugd->bcc_mbe, contacts_list_item->display_name, NULL, ri);
615 elm_multibuttonentry_item_append(ugd->bcc_mbe, contacts_list_item->email_address, NULL, ri);
616 elm_entry_entry_set(ugd->bcc_mbe_entry, "");
628 _composer_ps_stop(ugd);
629 ugd->sc_timer = ecore_timer_add(0.5, _composer_ps_scroll_pop, ugd);
633 if (ri->display_name)
634 free(ri->display_name);
639 void _composer_ps_delete_list(void *data)
643 EmailComposerUGD *ugd = (EmailComposerUGD *)data;
646 elm_genlist_clear(ugd->ps_list);
648 if (ugd->contacts_list_info) {
649 composer_ps_delete_contacts_list(ugd->contacts_list_info);
650 ugd->contacts_list_info = eina_list_free(ugd->contacts_list_info);
654 elm_object_scroll_hold_pop(ugd->main_scroller);
657 static void _composer_ps_show_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type)
661 if (type == COMPOSER_RECIPIENT_TYPE_TO) {
662 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_to_ps", "*");
665 evas_object_show(ugd->from_ly);
666 elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly);
667 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from");
671 evas_object_show(ugd->cc_ly);
672 elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly);
673 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*");
676 if (ugd->bcc_added) {
677 evas_object_show(ugd->bcc_ly);
678 elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly);
679 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*");
681 } else if (type == COMPOSER_RECIPIENT_TYPE_CC) {
682 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_cc_ps", "*");
685 evas_object_show(ugd->from_ly);
686 elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly);
687 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from");
691 evas_object_show(ugd->to_ly);
692 elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly);
693 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*");
696 if (ugd->bcc_added) {
697 evas_object_show(ugd->bcc_ly);
698 elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly);
699 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*");
701 } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) {
702 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_bcc_ps", "*");
705 evas_object_show(ugd->from_ly);
706 elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly);
707 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from");
711 evas_object_show(ugd->to_ly);
712 elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly);
713 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*");
717 evas_object_show(ugd->cc_ly);
718 elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly);
719 edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*");
724 static void _composer_ps_hide_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type)
728 if (type == COMPOSER_RECIPIENT_TYPE_TO) {
730 evas_object_hide(ugd->from_ly);
731 elm_object_part_content_unset(ugd->c_layout, "from_field");
732 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from");
736 evas_object_hide(ugd->cc_ly);
737 elm_object_part_content_unset(ugd->c_layout, "cc_field");
738 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*");
741 if (ugd->bcc_added) {
742 evas_object_hide(ugd->bcc_ly);
743 elm_object_part_content_unset(ugd->c_layout, "bcc_field");
744 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*");
746 } else if (type == COMPOSER_RECIPIENT_TYPE_CC) {
748 evas_object_hide(ugd->from_ly);
749 elm_object_part_content_unset(ugd->c_layout, "from_field");
750 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from");
754 evas_object_hide(ugd->to_ly);
755 elm_object_part_content_unset(ugd->c_layout, "to_field");
756 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.to", "*");
759 if (ugd->bcc_added) {
760 evas_object_hide(ugd->bcc_ly);
761 elm_object_part_content_unset(ugd->c_layout, "bcc_field");
762 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*");
764 } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) {
766 evas_object_hide(ugd->from_ly);
767 elm_object_part_content_unset(ugd->c_layout, "from_field");
768 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from");
772 evas_object_hide(ugd->to_ly);
773 elm_object_part_content_unset(ugd->c_layout, "to_field");
774 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.to", "*");
778 evas_object_hide(ugd->cc_ly);
779 elm_object_part_content_unset(ugd->c_layout, "cc_field");
780 edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*");