/* * Copyright 2012 Samsung Electronics Co., Ltd * * Licensed under the Flora License, Version 1.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.tizenopensource.org/license * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include "email-composer.h" #include "email-composer-util.h" #include "email-composer-predictive-search.h" #include "email-composer-recipient.h" static void _composer_ps_list_sel(void *data, Evas_Object *obj, void *event_info); static Eina_Bool _composer_ps_start(void *data); static Eina_Bool _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_E type); static void _composer_ps_show_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type); static void _composer_ps_hide_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type); EmailComposerUGD *g_ugd; void composer_ps_request_search(EmailComposerUGD *ugd) { debug_log(""); Eina_List *predict_list = NULL; g_ugd = ugd; predict_list = composer_ps_search_contact(ugd, ugd->ps_keyword); if (!predict_list) { Evas_Object *mbe = NULL; if (ugd->selected_entry == ugd->to_mbe_entry) { mbe = ugd->to_mbe; _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_TO); } else if (ugd->selected_entry == ugd->cc_mbe_entry) { mbe = ugd->cc_mbe; _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_CC); } else if (ugd->selected_entry == ugd->bcc_mbe_entry) { mbe = ugd->bcc_mbe; _composer_ps_show_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_BCC); } _composer_ps_delete_list(ugd); edje_object_signal_emit(_EDJ(ugd->c_layout), "back_content", "*"); elm_object_scroll_hold_pop(ugd->main_scroller); ugd->ps_on = false; } else { /* Create Predictive search field */ _composer_recipient_create_ps_field(ugd->c_layout, ugd); if (ugd->selected_entry == ugd->to_mbe_entry) { _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_TO); _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_TO); } else if (ugd->selected_entry == ugd->cc_mbe_entry) { _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_CC); _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_CC); } else if (ugd->selected_entry == ugd->bcc_mbe_entry) { _composer_ps_hide_recp_field(ugd, COMPOSER_RECIPIENT_TYPE_BCC); _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_BCC); } elm_object_scroll_hold_push(ugd->main_scroller); edje_object_signal_emit(_EDJ(ugd->c_layout), "go_content", "*"); if (ugd->contacts_list_info) { composer_ps_delete_contacts_list(ugd->contacts_list_info); ugd->contacts_list_info = eina_list_free(ugd->contacts_list_info); } ugd->contacts_list_info = predict_list; _composer_ps_create_sublist(ugd); ugd->ps_on = true; } } static Eina_Bool _composer_ps_set_list(COMPOSER_RECIPIENT_TYPE_E type) { debug_log(""); if (type == COMPOSER_RECIPIENT_TYPE_TO) { elm_object_part_content_set(g_ugd->c_layout, "to_ps", g_ugd->ps_list); edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_to_ps", "*"); } else if (type == COMPOSER_RECIPIENT_TYPE_CC) { elm_object_part_content_set(g_ugd->c_layout, "cc_ps", g_ugd->ps_list); edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_cc_ps", "*"); } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) { elm_object_part_content_set(g_ugd->c_layout, "bcc_ps", g_ugd->ps_list); edje_object_signal_emit(_EDJ(g_ugd->c_layout), "show_bcc_ps", "*"); } return EINA_FALSE; } Evas_Object *_composer_recipient_create_ps_field(Evas_Object *parent, EmailComposerUGD *ugd) { debug_log(""); if (ugd->ps_list) { evas_object_del(ugd->ps_list); ugd->ps_list = NULL; } Evas_Object *list; list = elm_genlist_add(parent); /*elm_object_theme_set(list, ugd->th);*/ evas_object_size_hint_align_set(list, EVAS_HINT_FILL, 0.0); elm_genlist_homogeneous_set(list, EINA_TRUE); elm_object_focus_allow_set(list, EINA_FALSE); ugd->ps_itc_2.item_style = "2text.8"; /*"email/predictive/2text.8";*/ ugd->ps_itc_2.func.text_get = composer_ps_text_get; ugd->ps_itc_2.func.content_get = NULL; ugd->ps_itc_2.func.state_get = NULL; ugd->ps_itc_2.func.del = NULL; ugd->ps_itc_1.item_style = "1text.2"; /*"email/predictive/1text.2";*/ ugd->ps_itc_1.func.text_get = composer_ps_text_get; ugd->ps_itc_1.func.content_get = NULL; ugd->ps_itc_1.func.state_get = NULL; ugd->ps_itc_1.func.del = NULL; ugd->ps_list = list; return list; } static Eina_Bool _composer_ps_start(void *data) { debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; if (ugd->ps_timer) { ecore_timer_del(ugd->ps_timer); ugd->ps_timer = NULL; } if (ugd->selected_entry == ugd->cc_mbe_entry) { ugd->b_cc_ps_open = true; } else if (ugd->selected_entry == ugd->bcc_mbe_entry) { ugd->b_bcc_ps_open = true; } _composer_ps_delete_list(ugd); /* Disable for fix ps problem */ composer_ps_request_search(ugd); return EINA_FALSE; } void _composer_ps_stop(EmailComposerUGD *ugd) { debug_log("Begin"); _composer_ps_del_timer(ugd); Evas_Object *mbe = NULL; if (ugd->selected_entry == ugd->to_mbe_entry) { mbe = ugd->to_mbe; edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_to_ps", "*"); if (ugd->cc_added) { evas_object_show(ugd->cc_ly); elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } if (ugd->bcc_added) { evas_object_show(ugd->bcc_ly); elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); } } else if (ugd->selected_entry == ugd->cc_mbe_entry) { mbe = ugd->cc_mbe; edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_cc_ps", "*"); if (ugd->to_ly) { evas_object_show(ugd->to_ly); elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); } if (ugd->bcc_added) { evas_object_show(ugd->bcc_ly); elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); } } else if (ugd->selected_entry == ugd->bcc_mbe_entry) { mbe = ugd->bcc_mbe; edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_bcc_ps", "*"); if (ugd->to_ly) { evas_object_show(ugd->to_ly); elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); } if (ugd->cc_added) { evas_object_show(ugd->cc_ly); elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } } _composer_ps_delete_list(ugd); edje_object_signal_emit(_EDJ(ugd->c_layout), "back_content", "*"); debug_log("End"); } void _composer_ps_del_timer(EmailComposerUGD *ugd) { debug_log(""); if (ugd->ps_timer) { ecore_timer_del(ugd->ps_timer); ugd->ps_timer = NULL; } } void _composer_ps_add_timer(EmailComposerUGD *ugd) { debug_log(""); _composer_ps_del_timer(ugd); ugd->ps_timer = ecore_timer_add(0.1, _composer_ps_start, ugd); } void _composer_ps_del_scroll_timer(EmailComposerUGD *ugd) { debug_log(""); if (ugd->sc_timer) { ecore_timer_del(ugd->sc_timer); ugd->sc_timer = NULL; } } Eina_Bool _composer_ps_scroll_pop(void *data) { debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; _composer_ps_del_scroll_timer(ugd); elm_object_scroll_hold_pop(ugd->main_scroller); return EINA_FALSE; } Eina_List *composer_ps_search_contact(EmailComposerUGD *ugd, const char *search_word) { debug_log(""); int ret = CTS_SUCCESS; CTSiter *iter = NULL; EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; Eina_List *contacts_list = NULL; contacts_svc_get_list(CTS_LIST_ALL_CONTACT_HAD_EMAIL, &iter); while (CTS_SUCCESS == contacts_svc_iter_next(iter)) { CTSvalue *contact = NULL; CTSvalue *email = NULL; const char *first, *last, *img_path, *email_addr; char *display = NULL; contact = contacts_svc_iter_get_info(iter); if (contact == NULL) break; int index = contacts_svc_value_get_int(contact, CTS_LIST_CONTACT_ID_INT); ret = contacts_svc_get_contact_value(CTS_GET_DEFAULT_EMAIL_VALUE, index, &email); if (ret != CTS_SUCCESS) goto LOOP_TAIL; contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) calloc(1, sizeof(EMAIL_CONTACT_LIST_INFO_S)); if (contacts_list_item != NULL) { contacts_list_item->ugd = ugd; contacts_list_item->index = index; display = g_strdup(contacts_svc_value_get_str(contact, CTS_LIST_CONTACT_DISPLAY_STR)); img_path = contacts_svc_value_get_str(contact, CTS_LIST_CONTACT_IMG_PATH_STR); contacts_list_item->image_path = g_strdup(img_path); email_addr = contacts_svc_value_get_str(email, CTS_EMAIL_VAL_ADDR_STR); contacts_list_item->email_address = g_strdup(email_addr); if (display) { //debug_log("display = %s", display); } else { first = contacts_svc_value_get_str(contact, CTS_LIST_CONTACT_FIRST_STR); last = contacts_svc_value_get_str(contact, CTS_LIST_CONTACT_LAST_STR); contacts_list_item->first_name = g_strdup(first); contacts_list_item->last_name = g_strdup(last); if (CTS_ORDER_NAME_FIRSTLAST == contacts_svc_get_order(CTS_ORDER_OF_DISPLAY)) { if (!first && !last) display = g_strdup(email_addr); else if (!first) display = g_strdup(last); else if (!last) display = g_strdup(first); else display = g_strconcat(first, " ", last, NULL); } else { if (!first && !last) display = g_strdup(email_addr); else if (!first) display = g_strdup(last); else if (!last) display = g_strdup(first); else display = g_strconcat(last, " ", first, NULL); } } if (display && contacts_list_item->email_address && (strcasestr(display, search_word) || strcasestr(contacts_list_item->email_address, search_word))) { strncpy(contacts_list_item->display_name, display, sizeof(contacts_list_item->display_name) - 1); contacts_list = eina_list_append(contacts_list, contacts_list_item); } else if (contacts_list_item) { Eina_List *free_contacts_list = NULL; /* to use existing composer_ps_delete_contacts_list API, a temp list is used */ free_contacts_list = eina_list_append(free_contacts_list, contacts_list_item); composer_ps_delete_contacts_list(free_contacts_list); free_contacts_list = eina_list_free(free_contacts_list); } } if (display) { g_free(display); display = NULL; } LOOP_TAIL: contacts_svc_value_free(contact); contacts_svc_value_free(email); } contacts_svc_iter_remove(iter); return contacts_list; } char *composer_ps_text_get(void *data, Evas_Object *obj, const char *part) { EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data; EmailComposerUGD *ugd = contacts_list_item->ugd; char *return_value = NULL; char *output = NULL; if (g_strcmp0(part, "elm.text") == 0) { _composer_change_text_to_textblock(contacts_list_item->email_address, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX); if (output) { return_value = g_strdup(output); free(output); } else return_value = g_strdup(contacts_list_item->email_address); } else if (g_strcmp0(part, "elm.text.1") == 0) { _composer_change_text_to_textblock(contacts_list_item->display_name, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX); if (output) { return_value = g_strdup(output); free(output); } else return_value = g_strdup(contacts_list_item->display_name); } else if (g_strcmp0(part, "elm.text.2") == 0) { _composer_change_text_to_textblock(contacts_list_item->email_address, &output, ugd->ps_keyword, COMPOSER_TEXT_PREFIX, COMPOSER_TEXT_POSTFIX); if (output) { return_value = g_strdup(output); free(output); } else return_value = g_strdup(contacts_list_item->email_address); } return return_value; } Evas_Object *composer_ps_icon_get(void *data, Evas_Object *obj, const char *part) { EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) data; Evas_Object *ic = elm_icon_add(obj); if (g_strcmp0(part, "swl.img") == 0) { if (contacts_list_item->image_path) { elm_icon_file_set(ic, contacts_list_item->image_path, NULL); } else { char buf[64] = { 0, }; snprintf(buf, sizeof(buf), "%s/00_list_photo_default.png", COMPOSER_ICON_DIR); elm_icon_file_set(ic, buf, NULL); } } elm_icon_resizable_set(ic, 1, 1); evas_object_image_smooth_scale_set(ic, 1); evas_object_show(ic); return ic; } void composer_ps_delete_contacts_list(Eina_List *predict_list) { debug_log("Begin"); Eina_List *lt = NULL; Eina_List *l = predict_list; EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; EINA_LIST_FOREACH(l, lt, contacts_list_item) { if (contacts_list_item) { g_free(contacts_list_item->first_name); contacts_list_item->first_name = NULL; g_free(contacts_list_item->last_name); contacts_list_item->last_name = NULL; g_free(contacts_list_item->email_address); contacts_list_item->email_address = NULL; g_free(contacts_list_item->image_path); contacts_list_item->image_path = NULL; } } debug_log("End"); } void _composer_ps_create_sublist(void *data) { debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; Eina_List *lt = NULL; Eina_List *l = NULL; /* prevent fix - 0824 */ if (ugd == NULL) return; if (!ugd->ps_list || !ugd->contacts_list_info) { debug_log("ps_list is %p, contacts_list_info is %p", ugd->ps_list, ugd->contacts_list_info); return; } EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; elm_genlist_clear(ugd->ps_list); contacts_list_item = eina_list_data_get(ugd->contacts_list_info); l = ugd->contacts_list_info; EINA_LIST_FOREACH(l, lt, contacts_list_item) { if (contacts_list_item->display_name && strlen(contacts_list_item->display_name)) { elm_genlist_item_append(ugd->ps_list, &ugd->ps_itc_2, contacts_list_item, NULL, ELM_GENLIST_ITEM_NONE, _composer_ps_list_sel, ugd); } else { elm_genlist_item_append(ugd->ps_list, &ugd->ps_itc_1, contacts_list_item, NULL, ELM_GENLIST_ITEM_NONE, _composer_ps_list_sel, ugd); } } } static void _composer_ps_list_sel(void *data, Evas_Object *obj, void *event_info) { debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; Elm_Object_Item *item = NULL; EmailRecpInfo *ri = NULL; EMAIL_CONTACT_LIST_INFO_S *contacts_list_item = NULL; int free_ri = 0; Elm_Object_Item *mbe_item; item = (Elm_Object_Item *) event_info; if (!item) { debug_log("Item is NULL or Item is not Message item"); return; } Evas_Object *mbe = NULL; if (ugd->selected_entry == ugd->to_mbe_entry) mbe = ugd->to_mbe; else if (ugd->selected_entry == ugd->cc_mbe_entry) mbe = ugd->cc_mbe; else if (ugd->selected_entry == ugd->bcc_mbe_entry) mbe = ugd->bcc_mbe; elm_genlist_item_selected_set(item, EINA_FALSE); contacts_list_item = (EMAIL_CONTACT_LIST_INFO_S *) elm_object_item_data_get(item); ri = (EmailRecpInfo *) calloc(1, sizeof(EmailRecpInfo)); if (ri != NULL) { ri->selected_email_idx = 0; if (contacts_list_item->email_address) snprintf(ri->email_list[0].email_addr, MAX_RECIPIENT_ADDRESS_LEN, "%s", contacts_list_item->email_address); if (contacts_list_item->display_name && strlen(contacts_list_item->display_name)) ri->display_name = g_strdup(contacts_list_item->display_name); else ri->display_name = NULL; ri->email_cnt = 1; ri->is_contact_info = true; ri->is_always_bcc = false; ri->is_from_addr = false; if (!_composer_is_valid_email(ri->email_list[0].email_addr)) { if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), _("IDS_EMAIL_POP_INVALID_EMAIL_ADDRESS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb); elm_entry_entry_set(ugd->to_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } char msg[MAX_STR_LEN] = { 0, }; snprintf(msg, sizeof(msg), _("IDS_EMAIL_POP_MAXIMUM_NUMBER_OF_RECIPIENTS_HPD_REACHED"), MAX_RECIPIENT_COUNT); if (ugd->selected_entry == ugd->to_mbe_entry) { if (_composer_check_recipient_is_duplicated(ugd, ugd->to_mbe, ri)) { ugd->is_recipient_duplicated = TRUE; if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->to_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } else if (ugd->to_recipients_cnt >= MAX_RECIPIENT_COUNT) { if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg, 0, NULL, NULL, 1.0, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->to_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } if (contacts_list_item->display_name && strlen(contacts_list_item->display_name)) mbe_item = elm_multibuttonentry_item_append(ugd->to_mbe, contacts_list_item->display_name, NULL, ri); else mbe_item = elm_multibuttonentry_item_append(ugd->to_mbe, contacts_list_item->email_address, NULL, ri); elm_entry_entry_set(ugd->to_mbe_entry, ""); } else if (ugd->selected_entry == ugd->cc_mbe_entry) { if (_composer_check_recipient_is_duplicated(ugd, ugd->cc_mbe, ri)) { ugd->is_recipient_duplicated = TRUE; if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->cc_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } else if (ugd->cc_recipients_cnt >= MAX_RECIPIENT_COUNT) { if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg, 0, NULL, NULL, 1.0, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->to_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } if (contacts_list_item->display_name && strlen(contacts_list_item->display_name)) mbe_item = elm_multibuttonentry_item_append(ugd->cc_mbe, contacts_list_item->display_name, NULL, ri); else mbe_item = elm_multibuttonentry_item_append(ugd->cc_mbe, contacts_list_item->email_address, NULL, ri); elm_entry_entry_set(ugd->cc_mbe_entry, ""); } else if (ugd->selected_entry == ugd->bcc_mbe_entry) { if (_composer_check_recipient_is_duplicated(ugd, ugd->bcc_mbe, ri)) { ugd->is_recipient_duplicated = TRUE; if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), dgettext("sys_string", "IDS_COM_POP_ALREDY_EXISTS"), 0, NULL, NULL, 1.5, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->bcc_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } else if (ugd->bcc_recipients_cnt >= MAX_RECIPIENT_COUNT) { if (ugd->composer_noti) { evas_object_del(ugd->composer_noti); ugd->composer_noti = NULL; } ugd->composer_noti = _composer_create_noti(ugd, false, dgettext("sys_string", "IDS_COM_POP_WARNING"), msg, 0, NULL, NULL, 1.0, _composer_noti_response_cb); if (_composer_check_popup_exist(ugd)) elm_object_focus_set(mbe, EINA_FALSE); elm_entry_entry_set(ugd->to_mbe_entry, ""); free_ri = 1; goto FINISH_OFF; } if (contacts_list_item->display_name && strlen(contacts_list_item->display_name)) mbe_item = elm_multibuttonentry_item_append(ugd->bcc_mbe, contacts_list_item->display_name, NULL, ri); else mbe_item = elm_multibuttonentry_item_append(ugd->bcc_mbe, contacts_list_item->email_address, NULL, ri); elm_entry_entry_set(ugd->bcc_mbe_entry, ""); } else { free_ri = 1; goto FINISH_OFF; } } else goto FINISH_OFF; FINISH_OFF: if (ugd->ps_list) { _composer_ps_stop(ugd); ugd->sc_timer = ecore_timer_add(0.5, _composer_ps_scroll_pop, ugd); } if (ri && free_ri) { if (ri->display_name) free(ri->display_name); free(ri); } } void _composer_ps_delete_list(void *data) { debug_log(""); EmailComposerUGD *ugd = (EmailComposerUGD *)data; if (ugd->ps_list) { elm_genlist_clear(ugd->ps_list); /*evas_object_del(ugd->ps_list); ugd->ps_list = NULL;*/ if (ugd->contacts_list_info) { composer_ps_delete_contacts_list(ugd->contacts_list_info); ugd->contacts_list_info = eina_list_free(ugd->contacts_list_info); } } elm_object_scroll_hold_pop(ugd->main_scroller); } static void _composer_ps_show_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type) { debug_log(""); if (type == COMPOSER_RECIPIENT_TYPE_TO) { edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_to_ps", "*"); if (ugd->from_ly) { evas_object_show(ugd->from_ly); elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from"); } if (ugd->cc_added) { evas_object_show(ugd->cc_ly); elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } if (ugd->bcc_added) { evas_object_show(ugd->bcc_ly); elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); } } else if (type == COMPOSER_RECIPIENT_TYPE_CC) { edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_cc_ps", "*"); if (ugd->from_ly) { evas_object_show(ugd->from_ly); elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from"); } if (ugd->to_ly) { evas_object_show(ugd->to_ly); elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); } if (ugd->bcc_added) { evas_object_show(ugd->bcc_ly); elm_object_part_content_set(ugd->c_layout, "bcc_field", ugd->bcc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.bcc", "*"); } } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) { edje_object_signal_emit(_EDJ(ugd->c_layout), "hide_bcc_ps", "*"); if (ugd->from_ly) { evas_object_show(ugd->from_ly); elm_object_part_content_set(ugd->c_layout, "from_field", ugd->from_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.from", "from"); } if (ugd->to_ly) { evas_object_show(ugd->to_ly); elm_object_part_content_set(ugd->c_layout, "to_field", ugd->to_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.to", "*"); } if (ugd->cc_added) { evas_object_show(ugd->cc_ly); elm_object_part_content_set(ugd->c_layout, "cc_field", ugd->cc_ly); edje_object_signal_emit(_EDJ(ugd->c_layout), "show.cc", "*"); } } /*if (ugd->webkit_ly) { evas_object_show(ugd->webkit_ly); elm_object_part_content_set(ugd->c_layout, "content_field", ugd->webkit_ly); }*/ } static void _composer_ps_hide_recp_field(EmailComposerUGD *ugd, COMPOSER_RECIPIENT_TYPE_E type) { debug_log(""); if (type == COMPOSER_RECIPIENT_TYPE_TO) { if (ugd->from_ly) { evas_object_hide(ugd->from_ly); elm_object_part_content_unset(ugd->c_layout, "from_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from"); } if (ugd->cc_added) { evas_object_hide(ugd->cc_ly); elm_object_part_content_unset(ugd->c_layout, "cc_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*"); } if (ugd->bcc_added) { evas_object_hide(ugd->bcc_ly); elm_object_part_content_unset(ugd->c_layout, "bcc_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); } } else if (type == COMPOSER_RECIPIENT_TYPE_CC) { if (ugd->from_ly) { evas_object_hide(ugd->from_ly); elm_object_part_content_unset(ugd->c_layout, "from_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from"); } if (ugd->to_ly) { evas_object_hide(ugd->to_ly); elm_object_part_content_unset(ugd->c_layout, "to_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.to", "*"); } if (ugd->bcc_added) { evas_object_hide(ugd->bcc_ly); elm_object_part_content_unset(ugd->c_layout, "bcc_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.bcc", "*"); } } else if (type == COMPOSER_RECIPIENT_TYPE_BCC) { if (ugd->from_ly) { evas_object_hide(ugd->from_ly); elm_object_part_content_unset(ugd->c_layout, "from_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.from", "from"); } if (ugd->to_ly) { evas_object_hide(ugd->to_ly); elm_object_part_content_unset(ugd->c_layout, "to_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.to", "*"); } if (ugd->cc_added) { evas_object_hide(ugd->cc_ly); elm_object_part_content_unset(ugd->c_layout, "cc_field"); edje_object_signal_emit(_EDJ(ugd->c_layout), "hide.cc", "*"); } } /*if (ugd->webkit_ly) { evas_object_hide(ugd->webkit_ly); elm_object_part_content_unset(ugd->c_layout, "content_field"); }*/ }