From: Javier Fernandez Garcia-Boente Date: Mon, 9 Jul 2007 10:37:14 +0000 (+0000) Subject: * Some changes to cancel sending operation X-Git-Tag: git_migration_finished~2896 X-Git-Url: http://git.maemo.org/git/?p=modest;a=commitdiff_plain;h=51599182dd639c256fea10a3648db2c42baa677b * Some changes to cancel sending operation using ModestTnySendQueue. pmo-trunk-r2642 --- diff --git a/src/modest-tny-send-queue.c b/src/modest-tny-send-queue.c index 17a7b25..76f95328 100644 --- a/src/modest-tny-send-queue.c +++ b/src/modest-tny-send-queue.c @@ -115,6 +115,10 @@ modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove, GError **err) { ModestTnySendQueuePrivate *priv; SendInfo *info; + TnyIterator *iter = NULL; + TnyFolder *outbox = NULL; + TnyList *headers = tny_simple_list_new (); + TnyHeader *header = NULL; priv = MODEST_TNY_SEND_QUEUE_GET_PRIVATE (self); if(priv->current != NULL) @@ -130,7 +134,19 @@ modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove, GError **err) } /* Set flags to supend sending operaiton (if removed, this is not necessary) */ - if (!remove) { + if (!remove) { + outbox = modest_tny_send_queue_get_outbox (TNY_SEND_QUEUE(self)); + tny_folder_get_headers (outbox, headers, TRUE, err); + if (err != NULL) goto frees; + iter = tny_list_create_iterator (headers); + while (!tny_iterator_is_done (iter)) { + header = TNY_HEADER (tny_iterator_get_current (iter)); + tny_header_unset_flags (header, TNY_HEADER_FLAG_PRIORITY); + tny_header_set_flags (header, TNY_HEADER_FLAG_SUSPENDED_PRIORITY); + tny_iterator_next (iter); + g_object_unref (header); + } + g_queue_foreach (priv->queue, (GFunc)modest_tny_send_queue_info_free, NULL); g_queue_free (priv->queue); priv->queue = g_queue_new(); @@ -138,6 +154,14 @@ modest_tny_send_queue_cancel (TnySendQueue *self, gboolean remove, GError **err) /* Dont call super class implementaiton, becasue camel removes messages from outbox */ TNY_CAMEL_SEND_QUEUE_CLASS(parent_class)->cancel_func (self, remove, err); /* FIXME */ + + frees: + if (headers != NULL) + g_object_unref (G_OBJECT (headers)); + if (outbox != NULL) + g_object_unref (G_OBJECT (outbox)); + if (iter != NULL) + g_object_unref (iter); } static void @@ -206,7 +230,8 @@ _add_message (ModestTnySendQueue *self, TnyHeader *header) case MODEST_TNY_SEND_QUEUE_UNKNONW: case MODEST_TNY_SEND_QUEUE_SUSPENDED: case MODEST_TNY_SEND_QUEUE_FAILED: - tny_header_unset_flags (header, TNY_HEADER_FLAG_PRIORITY); + if (status != MODEST_TNY_SEND_QUEUE_SUSPENDED) + tny_header_unset_flags (header, TNY_HEADER_FLAG_PRIORITY); existing = modest_tny_send_queue_lookup_info (MODEST_TNY_SEND_QUEUE(self), msg_uid); if(existing != NULL) return; @@ -405,8 +430,12 @@ modest_tny_send_queue_try_to_send (ModestTnySendQueue* self) tny_camel_send_queue_flush (TNY_CAMEL_SEND_QUEUE(self)); frees: - g_object_unref (G_OBJECT (headers)); - g_object_unref (G_OBJECT (outbox)); + if (headers != NULL) + g_object_unref (G_OBJECT (headers)); + if (outbox != NULL) + g_object_unref (G_OBJECT (outbox)); + if (iter != NULL) + g_object_unref (iter); } gboolean diff --git a/src/modest-ui-dimming-rules.c b/src/modest-ui-dimming-rules.c index fed9240..04ab770 100644 --- a/src/modest-ui-dimming-rules.c +++ b/src/modest-ui-dimming-rules.c @@ -1023,7 +1023,7 @@ modest_ui_dimming_rules_on_cancel_sending (ModestWindow *win, gpointer user_data } if (!dimmed) { dimmed = !_sending_in_progress (win); - if (dimmed) + if (dimmed) modest_dimming_rule_set_notification (rule, ""); } diff --git a/src/widgets/modest-header-view-render.c b/src/widgets/modest-header-view-render.c index 9301faf..e0b128d 100644 --- a/src/widgets/modest-header-view-render.c +++ b/src/widgets/modest-header-view-render.c @@ -58,7 +58,7 @@ get_status_of_uid (TnyHeader *header) ModestTnySendQueueStatus queue_status = MODEST_TNY_SEND_QUEUE_SUSPENDED; gchar *msg_uid = NULL; - msg_uid = modest_tny_send_queue_get_msg_id (header); + msg_uid = modest_tny_send_queue_get_msg_id (header); cache_mgr = modest_runtime_get_cache_mgr (); send_queue_cache = modest_cache_mgr_get_cache (cache_mgr, MODEST_CACHE_MGR_CACHE_TYPE_SEND_QUEUE); @@ -335,20 +335,15 @@ _modest_header_view_compact_header_cell_data (GtkTreeViewColumn *column, GtkCe ModestTnySendQueueStatus status = MODEST_TNY_SEND_QUEUE_WAITING; const gchar *status_str = ""; if (msg_header != NULL) { - /* TODO: ask send queue for msg sending status */ -/* status = get_status_of_uid (tny_header_get_message_id (msg_header)); */ status = get_status_of_uid (msg_header); if (status == MODEST_TNY_SEND_QUEUE_SUSPENDED) { tny_header_unset_flags (msg_header, TNY_HEADER_FLAG_PRIORITY); tny_header_set_flags (msg_header, TNY_HEADER_FLAG_SUSPENDED_PRIORITY); - } + } /* if (prior_flags == TNY_HEADER_FLAG_SUSPENDED_PRIORITY) */ /* status = MODEST_TNY_SEND_QUEUE_SUSPENDED; */ } status_str = get_status_string (status); - /* TODO: for now we set the status to waiting always, we need a way to - * retrieve the current send status of a message */ -/* status_str = get_status_string (MODEST_TNY_SEND_QUEUE_WAITING); */ display_date = g_strdup_printf("%s", status_str); g_object_set (G_OBJECT (date_or_status_cell), "markup", display_date,