From 2bbdbd9eb350e95bca883cfe87f2e26e54a55601 Mon Sep 17 00:00:00 2001 From: Kim Jinho Date: Fri, 25 Jan 2013 17:25:45 +0900 Subject: [PATCH] Fixed mail move issue --- mailbox/src/email-mailbox-controlbar.c | 68 +++++++++++++++++++--------------- mailbox/src/email-mailbox-item.c | 19 ++-------- mailbox/src/email-mailbox-list.c | 49 ++++++------------------ 3 files changed, 53 insertions(+), 83 deletions(-) diff --git a/mailbox/src/email-mailbox-controlbar.c b/mailbox/src/email-mailbox-controlbar.c index 40808a3..57fbecb 100755 --- a/mailbox/src/email-mailbox-controlbar.c +++ b/mailbox/src/email-mailbox-controlbar.c @@ -389,39 +389,41 @@ static void _more_toolbar_clicked_cb(void *data, Evas_Object *obj, void *event_i } } - if(mailbox_ugd->mode != EMAIL_MAILBOX_MODE_MAILBOX) { - for (i = 1; i < checked_count; i++) { - Eina_List *nth_list = eina_list_nth_list(list, i); - list_data *ld = eina_list_data_get(nth_list); - - if (first_account_type != GET_ACCOUNT_SERVER_TYPE(ld->account_id)) { - use_flag_opt = false; - break; + if(mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX) { + if(mailbox_ugd->mode != EMAIL_MAILBOX_MODE_MAILBOX) { + for (i = 1; i < checked_count; i++) { + Eina_List *nth_list = eina_list_nth_list(list, i); + list_data *ld = eina_list_data_get(nth_list); + + if (first_account_type != GET_ACCOUNT_SERVER_TYPE(ld->account_id)) { + use_flag_opt = false; + break; + } } } - } - if(use_flag_opt) { - use_popup = false; - for (i = 1; i < checked_count; i++) { - Eina_List *nth_list = eina_list_nth_list(list, i); - list_data *ld = eina_list_data_get(nth_list); + if(use_flag_opt) { + use_popup = false; + for (i = 1; i < checked_count; i++) { + Eina_List *nth_list = eina_list_nth_list(list, i); + list_data *ld = eina_list_data_get(nth_list); - if (ld->imp_sel != first_favourite_status) { - use_popup = true; - break; + if (ld->imp_sel != first_favourite_status) { + use_popup = true; + break; + } } - } - icon = elm_icon_add(mailbox_ugd->ctxpopup); - elm_image_file_set(icon, MAILBOX_MORE_OPTION_SET_FAVOURITE, NULL); - if(use_popup) { - elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set all as"), icon, _create_favourite_status_popup_cb, mailbox_ugd); - } else { - if (first_favourite_status) { - elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set as unfavourites"), icon, _set_as_unfavourite_mail_cb, mailbox_ugd); + icon = elm_icon_add(mailbox_ugd->ctxpopup); + elm_image_file_set(icon, MAILBOX_MORE_OPTION_SET_FAVOURITE, NULL); + if(use_popup) { + elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set all as"), icon, _create_favourite_status_popup_cb, mailbox_ugd); } else { - elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set as favourites"), icon, _set_as_favourite_mail_cb, mailbox_ugd); + if (first_favourite_status) { + elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set as unfavourites"), icon, _set_as_unfavourite_mail_cb, mailbox_ugd); + } else { + elm_ctxpopup_item_append(mailbox_ugd->ctxpopup, N_("Set as favourites"), icon, _set_as_favourite_mail_cb, mailbox_ugd); + } } } } @@ -778,9 +780,13 @@ static Evas_Object *create_edit_control_option_for_split_view(EmailMailboxUGD *m elm_object_item_part_content_set(mailbox_ugd->split_navi_it, "toolbar_button1", delete_btn); mailbox_ugd->split_lbtn = delete_btn; - move_btn = _create_toolbar_btn(mailbox_ugd->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), _move_mail_cb, mailbox_ugd); - elm_object_item_part_content_set(mailbox_ugd->split_navi_it, "toolbar_button2", move_btn); - mailbox_ugd->split_rbtn = move_btn; + if(mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX + && mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_DRAFT + && mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_SENTBOX) { + move_btn = _create_toolbar_btn(mailbox_ugd->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), _move_mail_cb, mailbox_ugd); + elm_object_item_part_content_set(mailbox_ugd->split_navi_it, "toolbar_button2", move_btn); + mailbox_ugd->split_rbtn = move_btn; + } return NULL; @@ -998,7 +1004,9 @@ static Evas_Object *create_edit_control_option(EmailMailboxUGD *mailbox_ugd) elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "toolbar_button1", delete_btn); mailbox_ugd->controlbar_lbtn = delete_btn; - if (!mailbox_ugd->isRotate) { + if(mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_OUTBOX + && mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_DRAFT + && mailbox_ugd->mailbox_type != EMAIL_MAILBOX_TYPE_SENTBOX) { move_btn = _create_toolbar_btn(mailbox_ugd->navi_bar, dgettext("sys_string", "IDS_COM_BODY_MOVE"), _move_mail_cb, mailbox_ugd); elm_object_item_part_content_set(mailbox_ugd->navibar_item[mailbox_ugd->previous_view], "toolbar_button2", move_btn); mailbox_ugd->controlbar_rbtn = move_btn; diff --git a/mailbox/src/email-mailbox-item.c b/mailbox/src/email-mailbox-item.c index 97fa363..91575ec 100755 --- a/mailbox/src/email-mailbox-item.c +++ b/mailbox/src/email-mailbox-item.c @@ -54,22 +54,9 @@ void mailbox_process_move_mail(EmailMailboxUGD *mailbox_ugd) mailbox_ugd->move_src_mailbox_id = ld->mailbox_id; } - debug_log("Thread... previous_view[%d]", mailbox_ugd->previous_view); - /* Get thread mail list */ - email_mail_list_item_t *mailbox_data = NULL; - int mail_list = 0; - int err = email_get_mail_list(ld->account_id, 0, ld->thread_id, - -1, /* start_index */ - -1, /* limit_count */ - _mailbox_conv_sort_type(mailbox_ugd->sort_type), &mailbox_data, &mail_list); - if( err != EMAIL_ERROR_NONE ) { - debug_warning("email_get_mail_list_ex - err(%d)", err); - } - int k = 0; - for( ; kselected_list = g_list_prepend(mailbox_ugd->selected_list, - GINT_TO_POINTER(mailbox_data[k].mail_id)); - FREE(mailbox_data); + debug_log("not Thread... previous_view[%d]", mailbox_ugd->previous_view); + int mail_id = ld->mail_id; + mailbox_ugd->selected_list = g_list_prepend(mailbox_ugd->selected_list, GINT_TO_POINTER(mail_id)); } diff --git a/mailbox/src/email-mailbox-list.c b/mailbox/src/email-mailbox-list.c index d6cefe4..15c8d28 100755 --- a/mailbox/src/email-mailbox-list.c +++ b/mailbox/src/email-mailbox-list.c @@ -3166,46 +3166,21 @@ void _worker_get_move_mail_list_cb(void* data, Ecore_Thread *thd) { if(vt != EMAIL_VIEW_EDIT && vt != EMAIL_VIEW_SEARCH) { - switch (folder_type) - { - case EMAIL_MAILBOX_TYPE_TRASH: - case EMAIL_MAILBOX_TYPE_SPAMBOX: - debug_log("size of mail_list : %d", g_list_length(mail_list)); - G_LIST_FOREACH(mail_list, cur, idx) { - debug_log("idx: [%d]", *idx); - ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]); - if(ld) { - delete_ret_t *ret = MEM_ALLOC(ret, 1); - if(!ret) return; - *ret = (delete_ret_t) {ld, *idx}; - CHECK_THREAD_BUSY(); - ecore_thread_feedback(thd, ret); - } - } - break; - - case EMAIL_MAILBOX_TYPE_SENTBOX: - G_LIST_FOREACH(mail_list, cur, idx) { - debug_log("idx: [%d]", *idx); - ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]); - if(ld) { - ld->mail_status = EMAIL_MAIL_STATUS_SENT; - delete_ret_t *ret = MEM_ALLOC(ret, 1); - if(!ret) return; - *ret = (delete_ret_t) {ld, *idx}; - CHECK_THREAD_BUSY(); - ecore_thread_feedback(thd, ret); - } - } - break; - default : - /* Do Nothing */ - goto CLEANUP; + G_LIST_FOREACH(mail_list, cur, idx) { + ld = _find_mailinfo_by_mailid(*idx, mailbox_ugd->list_data[vt]); + if(ld) { + //mailbox_delete_mail_item_from_list(mailbox_ugd, ld); + delete_ret_t *ret = MEM_ALLOC(ret, 1); + if(!ret) return; + *ret = (delete_ret_t) {ld, *idx}; + CHECK_THREAD_BUSY(); + ecore_thread_feedback(thd, ret); + debug_log("Mail(%d) found in this view(%d)", *idx, vt); + } } - } else { - /* Do Nothing */ + debug_log("Nothing to move: mode(%d), view(%d), acc(%d)", mailbox_ugd->mode, vt, mailbox_ugd->account_id); goto CLEANUP; } } -- 2.7.4