* fix some issues on progress-bar to show more pulses on
authorJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Mon, 6 Aug 2007 18:34:14 +0000 (18:34 +0000)
committerJavier Fernandez Garcia-Boente <jfernandez@igalia.com>
Mon, 6 Aug 2007 18:34:14 +0000 (18:34 +0000)
undetermined progress data.
* Define again a OPEN type mail-operation for cached messages.
* Fixes bug: NB#56201

pmo-trunk-r2940

src/maemo/modest-progress-bar-widget.c
src/maemo/modest-progress-bar-widget.h
src/modest-mail-operation.c

index 30c766d..b699351 100644 (file)
@@ -226,31 +226,25 @@ modest_progress_bar_add_operation (ModestProgressObject *self,
        ModestProgressBarWidget *me = NULL;
        ObservableData *data = NULL;
        ModestProgressBarWidgetPrivate *priv = NULL;
-       ModestMailOperationState *state = NULL;
        
        me = MODEST_PROGRESS_BAR_WIDGET (self);
        priv = MODEST_PROGRESS_BAR_WIDGET_GET_PRIVATE (me);
 
        data = g_malloc0 (sizeof (ObservableData));
        data->mail_op = g_object_ref (mail_op);
-       data->signal_handler = g_signal_connect (data->mail_op, 
+       data->signal_handler = g_signal_connect (data->mail_op,
                                                 "progress-changed",
                                                 G_CALLBACK (on_progress_changed),
                                                 me);
        /* Set curent operation */
-       if (priv->current == NULL) {
-               priv->current = mail_op;
-
-               priv->count = 0;
-
-               /* Call progress_change handler to initialize progress message */
-               state = g_malloc0(sizeof(ModestMailOperationState));
-               state->done = 0;
-               state->total = 0;
-               state->op_type = modest_mail_operation_get_type_operation (mail_op);
-               on_progress_changed (mail_op, state, me);
-               g_free(state);
-       }
+/*     if (priv->current == NULL) { */
+       priv->current = mail_op;
+       
+       priv->count = 0;
+       
+       /* Call progress_change handler to initialize progress message */
+       modest_progress_bar_widget_set_undetermined_progress (MODEST_PROGRESS_BAR_WIDGET(self), mail_op);
+/*     } */
 
        /* Add operation to obserbable objects list */
        priv->observables = g_slist_prepend (priv->observables, data);
@@ -406,8 +400,8 @@ on_progress_changed (ModestMailOperation  *mail_op,
                
                /* If we have byte information use it */
                if ((state->bytes_done != 0) && (state->bytes_total != 0))
-                       modest_progress_bar_widget_set_progress (self, msg, 
-                                                                state->bytes_done, 
+                       modest_progress_bar_widget_set_progress (self, msg,
+                                                                state->bytes_done,
                                                                 state->bytes_total);
                else
                        modest_progress_bar_widget_set_progress (self, msg,
@@ -485,3 +479,17 @@ modest_progress_bar_widget_set_progress (ModestProgressBarWidget *self,
        gtk_progress_bar_set_text (GTK_PROGRESS_BAR (priv->progress_bar), message);
 }
 
+
+void
+modest_progress_bar_widget_set_undetermined_progress (ModestProgressBarWidget *self,
+                                                     ModestMailOperation *mail_op)
+{
+       ModestMailOperationState *state = NULL;
+
+       state = g_malloc0(sizeof(ModestMailOperationState));
+       state->done = 0;
+       state->total = 0;
+       state->op_type = modest_mail_operation_get_type_operation (mail_op);
+       on_progress_changed (mail_op, state, self);
+       g_free(state);
+}
index a55dd5b..24b4d44 100644 (file)
@@ -74,6 +74,9 @@ void modest_progress_bar_widget_set_progress (ModestProgressBarWidget *self,
                                              gint done,
                                              gint total);
 
+void
+modest_progress_bar_widget_set_undetermined_progress (ModestProgressBarWidget *self,
+                                                     ModestMailOperation *mail_op);
 
 
 G_END_DECLS
index fef299d..1f1b3b4 100644 (file)
@@ -1947,6 +1947,12 @@ void modest_mail_operation_get_msg (ModestMailOperation *self,
        if (folder) {
                /* Get account and set it into mail_operation */
                priv->account = modest_tny_folder_get_account (TNY_FOLDER(folder));
+               
+               /* Check for cached messages */
+               if (tny_header_get_flags (header) & TNY_HEADER_FLAG_CACHED)
+                       priv->op_type = MODEST_MAIL_OPERATION_TYPE_OPEN;
+               else 
+                       priv->op_type = MODEST_MAIL_OPERATION_TYPE_RECEIVE;
 
                helper = g_slice_new0 (GetMsgAsyncHelper);
                helper->mail_op = self;
@@ -2148,6 +2154,12 @@ get_msgs_full_thread (gpointer thr_user_data)
                header = TNY_HEADER (tny_iterator_get_current (iter));
                folder = tny_header_get_folder (header);
                                
+               /* Check for cached messages */
+               if (tny_header_get_flags (header) & TNY_HEADER_FLAG_CACHED)
+                       priv->op_type = MODEST_MAIL_OPERATION_TYPE_OPEN;
+               else 
+                       priv->op_type = MODEST_MAIL_OPERATION_TYPE_RECEIVE;
+
                /* Get message from folder */
                if (folder) {
                        TnyMsg *msg;