X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-progress-bar.c;h=289882ba3b179c99026a60657fb8c0758ce8759a;hp=869c6715be058de4cb076d1bbf09b29edb5be252;hb=f6d386ff93e929092ba105385a29d760aeba9ff7;hpb=e58236998a7130cf0fa09c3db7fc0f5697632732 diff --git a/src/widgets/modest-progress-bar.c b/src/widgets/modest-progress-bar.c index 869c671..289882b 100644 --- a/src/widgets/modest-progress-bar.c +++ b/src/widgets/modest-progress-bar.c @@ -65,6 +65,8 @@ static void modest_progress_bar_set_pulsating_mode (ModestProgressBar *self, const gchar* msg, gboolean is_pulsating); +static gchar *progress_string (ModestMailOperationTypeOperation op_type, guint done, guint total); + #define XALIGN 0.5 #define YALIGN 0.5 #define XSPACE 1 @@ -300,14 +302,19 @@ modest_progress_bar_remove_operation (ModestProgressObject *self, /* Update the current mail operation */ if (is_current) { - if (priv->observables) + if (priv->observables) { + gchar *msg; priv->current = ((ObservableData *) priv->observables->data)->mail_op; - else + msg = progress_string (modest_mail_operation_get_type_operation (MODEST_MAIL_OPERATION (priv->current)), 0, 0); + modest_progress_bar_set_pulsating_mode (me, msg, TRUE); + g_free (msg); + } else { priv->current = NULL; + modest_progress_bar_set_pulsating_mode (me, NULL, FALSE); + progressbar_clean (GTK_PROGRESS_BAR (priv->progress_bar)); + } /* Refresh the view */ - modest_progress_bar_set_pulsating_mode (me, NULL, FALSE); - progressbar_clean (GTK_PROGRESS_BAR (priv->progress_bar)); } /* free */ @@ -353,13 +360,46 @@ modest_progress_bar_cancel_all_operations (ModestProgressObject *self) modest_mail_operation_queue_cancel_all (modest_runtime_get_mail_operation_queue ()); } +static gchar * +progress_string (ModestMailOperationTypeOperation op_type, guint done, guint total) +{ + gboolean determined = FALSE; + + gchar *msg = NULL; + + determined = (done > 0 && total > 1) && + !(done == 1 && total == 100); + + switch (op_type) { + case MODEST_MAIL_OPERATION_TYPE_SEND_AND_RECEIVE: + case MODEST_MAIL_OPERATION_TYPE_RECEIVE: + if (determined) + msg = g_strdup_printf(_("mcen_me_receiving"), + done, total); + else + msg = g_strdup(_("mail_me_receiving")); + break; + case MODEST_MAIL_OPERATION_TYPE_SEND: + if (determined) + msg = g_strdup_printf(_("mcen_me_sending"), done, + total); + else + msg = g_strdup(_("mail_me_sending")); + break; + + default: + msg = g_strdup(""); + } + + return msg; +} + static void on_progress_changed (ModestMailOperation *mail_op, ModestMailOperationState *state, ModestProgressBar *self) { ModestProgressBarPrivate *priv; - gboolean determined = FALSE; priv = MODEST_PROGRESS_BAR_GET_PRIVATE (self); @@ -367,32 +407,7 @@ on_progress_changed (ModestMailOperation *mail_op, if (priv->current == mail_op) { gchar *msg = NULL; - determined = (state->done > 0 && state->total > 1) && - !(state->done == 1 && state->total == 100); - - switch (state->op_type) { - case MODEST_MAIL_OPERATION_TYPE_SEND_AND_RECEIVE: - case MODEST_MAIL_OPERATION_TYPE_RECEIVE: - if (determined) - msg = g_strdup_printf(_("mcen_me_receiving"), - state->done, state->total); - else - msg = g_strdup(_("mail_me_receiving")); - break; - case MODEST_MAIL_OPERATION_TYPE_SEND: - if (determined) - msg = g_strdup_printf(_("mcen_me_sending"), state->done, - state->total); - else - msg = g_strdup(_("mail_me_sending")); - break; - - case MODEST_MAIL_OPERATION_TYPE_OPEN: - msg = g_strdup(_("mail_me_opening")); - break; - default: - msg = g_strdup(""); - } + msg = progress_string (state->op_type, state->done, state->total); /* If we have byte information use it */ if ((state->bytes_done != 0) && (state->bytes_total != 0)) @@ -412,8 +427,10 @@ on_progress_changed (ModestMailOperation *mail_op, static gboolean progressbar_clean (GtkProgressBar *bar) { + gtk_progress_bar_set_fraction (bar, 0); gtk_progress_bar_set_text (bar, " "); + return FALSE; }