Modified webpage: now tinymail repository is in gitorious.
[modest] / src / widgets / modest-progress-bar.c
index 615e154..5e3e03b 100644 (file)
@@ -30,7 +30,6 @@
 #include <string.h>
 #include <glib/gi18n.h>
 #include <gtk/gtk.h>
-#include <widgets/modest-combo-box.h>
 #include "widgets/modest-progress-bar.h"
 #include "modest-tny-account.h"
 #include "modest-platform.h"
@@ -65,6 +64,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
@@ -180,7 +181,8 @@ modest_progress_bar_init (ModestProgressBar *self)
 
        /* Build GtkProgressBar */
        adj = (GtkAdjustment *) gtk_adjustment_new (0, LOWER, UPPER, 0, 0, 0);
-       priv->progress_bar = gtk_progress_bar_new_with_adjustment (adj);                
+       priv->progress_bar = gtk_progress_bar_new ();
+       g_object_set (priv->progress_bar, "adjustment", adj, NULL);
        req.width = 228;
        req.height = 64;
        gtk_progress_set_text_alignment (GTK_PROGRESS (priv->progress_bar), 0, 0.5);
@@ -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 */
@@ -343,23 +350,51 @@ modest_progress_bar_cancel_current_operation (ModestProgressObject *self)
 static void 
 modest_progress_bar_cancel_all_operations (ModestProgressObject *self)
 {
-       ModestProgressBar *me;
-       ModestProgressBarPrivate *priv;
-
-       me = MODEST_PROGRESS_BAR (self);
-       priv = MODEST_PROGRESS_BAR_GET_PRIVATE (me);
 
        /* Cancel all the mail operations */
        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,31 +402,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_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))
@@ -411,8 +422,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;
 }