[anjal] Spinner on checkmail to indicate mails downloaded.



commit a95679ede2e829b8470f998958c75e8938d57145
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Mon Mar 30 23:00:24 2009 +0530

    Spinner on checkmail to indicate mails downloaded.
---
 src/mail-shell.c |   17 +++++++++++++++--
 src/mail-view.c  |   29 ++++++++++++++++++++++++++---
 2 files changed, 41 insertions(+), 5 deletions(-)

diff --git a/src/mail-shell.c b/src/mail-shell.c
index 608269d..61bacb6 100644
--- a/src/mail-shell.c
+++ b/src/mail-shell.c
@@ -258,8 +258,21 @@ mail_shell_construct (MailShell *shell)
 	gtk_box_pack_start ((GtkBox *)priv->top_bar, priv->new_mail, FALSE, FALSE, 0);
 	gtk_widget_show (priv->new_mail);
 	
-	priv->check_mail = gtk_button_new_with_mnemonic (_("Check email"));
-	gtk_button_set_image ((GtkButton *)priv->check_mail, gtk_image_new_from_icon_name("mail-send-receive", GTK_ICON_SIZE_BUTTON));
+	priv->check_mail = gtk_button_new ();
+	box = gtk_hbox_new (FALSE, 0);
+	tmp = e_spinner_new_spinning_small_shown();
+	gtk_widget_hide(tmp);
+	g_object_set_data (priv->check_mail, "spinner", tmp);
+	gtk_box_pack_start ((GtkBox *)box, tmp, FALSE, FALSE, 0);
+	tmp = gtk_image_new_from_icon_name("mail-send-receive", GTK_ICON_SIZE_BUTTON);
+	gtk_widget_show(tmp);
+	g_object_set_data (priv->check_mail, "icon", tmp);
+	gtk_box_pack_start ((GtkBox *)box, tmp, FALSE, FALSE, 0);
+	tmp = gtk_label_new_with_mnemonic (_("Check _email"));
+	gtk_widget_show(tmp);
+	gtk_box_pack_start ((GtkBox *)box, tmp, FALSE, FALSE, 2);
+	gtk_container_add (priv->check_mail, box);
+	gtk_widget_show(box);
 	gtk_box_pack_start ((GtkBox *)priv->top_bar, priv->check_mail, FALSE, FALSE, 0);
 	gtk_widget_show (priv->check_mail);
 	g_signal_connect (priv->check_mail, "clicked", G_CALLBACK(ms_check_mail), shell);
diff --git a/src/mail-view.c b/src/mail-view.c
index e7d4d7f..75c3b2e 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -433,6 +433,27 @@ mail_view_set_sort_by  (MailView *mv, GtkWidget *button)
 	 mv->sort_by = button;;
 }
 
+static void
+mv_spinner_show (MailView *mv, gboolean show)
+{
+	 GtkWidget *spinner = g_object_get_data (mv->check_mail, "spinner");
+	 GtkWidget *icon = g_object_get_data (mv->check_mail, "icon");
+
+	 if(show) {
+		  gtk_widget_show (spinner);
+		  gtk_widget_hide(icon);
+	 } else {
+		  gtk_widget_show (icon);
+		  gtk_widget_hide(spinner);		  
+	 }
+}
+
+static void
+mv_spinner_done (CamelFolder *f, MailView *mv)
+{
+	 mv_spinner_show (mv, FALSE);
+}
+
 void
 mail_view_check_mail(MailView *mv)
 {
@@ -441,9 +462,11 @@ mail_view_check_mail(MailView *mv)
 	 if (child->type == MAIL_VIEW_FOLDER) {
 		  mail_folder_view_check_mail (child);
 		  CamelFolder *folder;
-
-		  if ((folder = em_folder_tree_get_selected_folder (mv->tree)) != NULL)
-			   mail_refresh_folder(folder, NULL, NULL);
+		  
+		  if ((folder = em_folder_tree_get_selected_folder (mv->tree)) != NULL) {
+			   mv_spinner_show (mv, TRUE);
+			   mail_refresh_folder(folder, mv_spinner_done, mv);
+		  }
 	 }
 	 
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]