[evolution] Make clutter mode even more appealing.



commit 0d51f6658348f8a8c33326f5ad11dad76d6d1642
Author: Srinivasa Ragavan <sragavan gnome org>
Date:   Tue Jul 20 20:55:16 2010 +0530

    Make clutter mode even more appealing.

 mail/e-mail-notebook-view.c |   39 ++++++++++++---------------------------
 mail/e-mail-paned-view.c    |   20 +-------------------
 mail/e-mail-reader.c        |   27 ++++++++++++++++++++++++++-
 mail/em-format-html.c       |    7 ++++++-
 mail/message-list.c         |    7 ++++---
 5 files changed, 49 insertions(+), 51 deletions(-)
---
diff --git a/mail/e-mail-notebook-view.c b/mail/e-mail-notebook-view.c
index 34ebd1d..d5f3109 100644
--- a/mail/e-mail-notebook-view.c
+++ b/mail/e-mail-notebook-view.c
@@ -71,37 +71,18 @@ static EMailViewClass *parent_class;
 static GType mail_notebook_view_type;
 
 #if HAVE_CLUTTER
-struct _anim_data {
-	EMailNotebookView *view;
-	int page;
-};
-
-static void
-start_tab_switch_cb (ClutterAnimation *animation,
-                     struct _anim_data *data)
-{
-	gtk_notebook_set_current_page (data->view->priv->book, data->page);
-	animation = clutter_actor_animate ((ClutterActor *)data->view->priv->actor, CLUTTER_EASE_IN_SINE, 150,
-       	                 	 	   "opacity", 255,
-       	                  		   NULL);
-	
-}
-
-
 static void
 mnv_set_current_tab (EMailNotebookView *view,
 		     int page)
 {
 	ClutterAnimation *animation;
-	struct _anim_data *data = g_new0 (struct _anim_data, 1);
-
-	data->view = view;
-	data->page = page;
 
-	animation = clutter_actor_animate ((ClutterActor *)view->priv->actor, CLUTTER_EASE_OUT_SINE, 150,
-       	                 	 	   "opacity", 0,
+	clutter_actor_set_opacity (view->priv->actor, 0);
+	gtk_notebook_set_current_page (view->priv->book, page);
+	animation = clutter_actor_animate ((ClutterActor *)view->priv->actor, CLUTTER_EASE_IN_SINE, 500,
+       	                 	 	   "opacity", 255,
        	                  		   NULL);
-	g_signal_connect_after (animation, "completed", G_CALLBACK(start_tab_switch_cb), data);
+
 }
 #endif
 
@@ -153,7 +134,6 @@ mnv_page_changed (GtkNotebook *book, GtkNotebookPage *page,
 	EMFolderTree *tree;
 	const char *uri = e_mail_reader_get_folder_uri (E_MAIL_READER(mview));
 
-				
 	g_object_get (sidebar, "folder-tree", &tree, NULL);
 	if (uri)
 		em_folder_tree_set_selected (tree, uri, FALSE);
@@ -744,6 +724,7 @@ mail_netbook_view_open_mail (EMailView *view, const char *uid, EMailNotebookView
 	EMailTab *tab;
 	ClutterActor *clone;
 	ClutterTimeline *timeline;
+	GtkWidget *mlist;
 
 	e_mail_tab_set_active (e_mail_tab_picker_get_tab (priv->tab_picker, 
 						e_mail_tab_picker_get_current_tab (priv->tab_picker)),
@@ -766,10 +747,11 @@ mail_netbook_view_open_mail (EMailView *view, const char *uid, EMailNotebookView
 				camel_message_info_subject(info)));
 
 #if HAVE_CLUTTER
+	mlist = e_mail_reader_get_message_list (E_MAIL_READER(pane));
 	mnv_set_current_tab (nview, page);
 	g_object_set_data ((GObject *)priv->current_view, "stage", priv->stage); 
-	g_object_set_data ((GObject *)preview, "stage", priv->stage); 
-	g_object_set_data ((GObject *)preview, "actor", priv->actor); 		
+	g_object_set_data ((GObject *)mlist, "stage", priv->stage); 
+	g_object_set_data ((GObject *)mlist, "preview-actor", priv->actor); 		
 #else	
 	gtk_notebook_set_current_page (priv->book, page);
 #endif
@@ -838,6 +820,9 @@ mail_notebook_view_set_folder (EMailReader *reader,
 	new_view = g_hash_table_lookup (priv->views, folder_uri);
 	if (new_view) {
 		int curr = emnv_get_page_num (E_MAIL_NOTEBOOK_VIEW (reader), new_view);
+
+		if (curr == e_mail_tab_picker_get_current_tab (priv->tab_picker))
+			return;
 #if HAVE_CLUTTER		
 		EMailTab *tab;
 
diff --git a/mail/e-mail-paned-view.c b/mail/e-mail-paned-view.c
index 57f0c00..6733e40 100644
--- a/mail/e-mail-paned-view.c
+++ b/mail/e-mail-paned-view.c
@@ -48,12 +48,6 @@
 #include "message-list.h"
 #include "e-mail-reader-utils.h"
 
-#if HAVE_CLUTTER
-#include <clutter/clutter.h>
-#include <mx/mx.h>
-#include <clutter-gtk/clutter-gtk.h>
-#endif
-
 #define E_SHELL_WINDOW_ACTION_GROUP_MAIL(window) \
 	E_SHELL_WINDOW_ACTION_GROUP ((window), "mail")
 
@@ -184,9 +178,7 @@ mail_paned_view_message_selected_cb (EMailPanedView *view,
 	const gchar *folder_uri;
 	const gchar *key;
 	gchar *group_name;
-#if HAVE_CLUTTER
-	ClutterActor *actor = g_object_get_data ((GObject *)view->priv->preview, "actor");
-#endif	
+
 	folder_uri = message_list->folder_uri;
 
 	/* This also gets triggered when selecting a store name on
@@ -210,16 +202,6 @@ mail_paned_view_message_selected_cb (EMailPanedView *view,
 
 	g_free (group_name);
 
-#if HAVE_CLUTTER	
-	if (actor) {
-  		clutter_actor_set_opacity (actor, 0);
-  		clutter_actor_animate (actor, CLUTTER_EASE_OUT_SINE, 150,
-       	        	          	"opacity", 255,
-       	                	  	NULL);
-	} 
-
-#endif
-	
 }
 
 static void
diff --git a/mail/e-mail-reader.c b/mail/e-mail-reader.c
index 849695d..40622ea 100644
--- a/mail/e-mail-reader.c
+++ b/mail/e-mail-reader.c
@@ -53,6 +53,13 @@
 #include "mail/mail-vfolder.h"
 #include "mail/message-list.h"
 
+
+#if HAVE_CLUTTER
+#include <clutter/clutter.h>
+#include <mx/mx.h>
+#include <clutter-gtk/clutter-gtk.h>
+#endif
+
 #define E_MAIL_READER_GET_PRIVATE(obj) \
 	((EMailReaderPrivate *) g_object_get_qdata \
 	(G_OBJECT (obj), quark_private))
@@ -672,13 +679,25 @@ action_mail_next_cb (GtkAction *action,
 	GtkWidget *message_list;
 	MessageListSelectDirection direction;
 	guint32 flags, mask;
-
+#if HAVE_CLUTTER
+	ClutterActor *actor;
+#endif
+	
 	direction = MESSAGE_LIST_SELECT_NEXT;
 	flags = 0;
 	mask  = 0;
 
 	message_list = e_mail_reader_get_message_list (reader);
+#if HAVE_CLUTTER
+	actor = g_object_get_data ((GObject *)message_list, "preview-actor");
+	if (actor) {
+  		clutter_actor_set_opacity (actor, 0);
+  		clutter_actor_animate (actor, CLUTTER_EASE_OUT_SINE, 500,
+       	        	          "opacity", 255,
+       	                	  NULL);
+	}
 
+#endif	
 	message_list_select (
 		MESSAGE_LIST (message_list), direction, flags, mask);
 }
@@ -2171,9 +2190,15 @@ mail_reader_message_selected_timeout_cb (EMailReader *reader)
 			gboolean store_async;
 			MailMsgDispatchFunc disp_func;
 
+			
 			string = g_strdup_printf (
 				_("Retrieving message '%s'"), cursor_uid);
+#if HAVE_CLUTTER
+		if (!e_shell_get_express_mode(e_shell_get_default()))
+			e_web_view_load_string (web_view, string);			
+#else			
 			e_web_view_load_string (web_view, string);
+#endif
 			g_free (string);
 
 			store_async = parent_store->flags & CAMEL_STORE_ASYNC;
diff --git a/mail/em-format-html.c b/mail/em-format-html.c
index 361f754..95e1572 100644
--- a/mail/em-format-html.c
+++ b/mail/em-format-html.c
@@ -50,6 +50,8 @@
 #include "e-util/e-extensible.h"
 #include "misc/e-web-view.h"
 
+#include "shell/e-shell.h"
+
 #include <gtkhtml/gtkhtml.h>
 #include <gtkhtml/gtkhtml-stream.h>
 
@@ -341,8 +343,11 @@ efh_format_timeout(struct _format_msg *m)
 		p->last_part = NULL;
 	} else {
 		efh->state = EM_FORMAT_HTML_STATE_RENDERING;
-
+#if HAVE_CLUTTER
+		if (p->last_part != m->message && !e_shell_get_express_mode(e_shell_get_default())) {		
+#else		
 		if (p->last_part != m->message) {
+#endif			
 			hstream = gtk_html_begin (GTK_HTML (web_view));
 			gtk_html_stream_printf (hstream, "<h5>%s</h5>", _("Formatting Message..."));
 			gtk_html_stream_close (hstream, GTK_HTML_STREAM_OK);
diff --git a/mail/message-list.c b/mail/message-list.c
index f19754a..96d2a68 100644
--- a/mail/message-list.c
+++ b/mail/message-list.c
@@ -4198,8 +4198,9 @@ message_list_set_search (MessageList *ml, const gchar *search)
 		ml->thread_tree = NULL;
 	}
 
-#if HAVE_CLUTTER	
-	clutter_timeline_start (ml->priv->timeline);
+#if HAVE_CLUTTER
+	if (ml->priv->timeline)
+		clutter_timeline_start (ml->priv->timeline);
 #endif
 
 	if (ml->frozen == 0)
@@ -4653,7 +4654,7 @@ regen_list_done (struct _regen_list_msg *m)
 	m->ml->priv->any_row_changed = FALSE;
 
 #if HAVE_CLUTTER
-	if (clutter_timeline_is_playing(m->ml->priv->timeline)) {
+	if (m->ml->priv->timeline && clutter_timeline_is_playing(m->ml->priv->timeline)) {
 		clutter_timeline_stop (m->ml->priv->timeline);
 	} else {
 		ClutterActor *pane = g_object_get_data ((GObject *)m->ml, "actor");



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