Description: Support evolution 3.0 and 3.1
 The patch was adapted to change the .gob files where appropriate
 rather than the generated C.
Origin: http://pkgs.fedoraproject.org/gitweb/?p=mail-notification.git;a=blob;f=mail-notification-5.4-evolution-3-0-support.patch

--- mail-notification-5.4.dfsg.1.orig/jbsrc/lib/src/extras/jb-evolution-plugin.c
+++ mail-notification-5.4.dfsg.1/jbsrc/lib/src/extras/jb-evolution-plugin.c
@@ -41,7 +41,7 @@
   if (! minversion)
     minversion = "2.12";
 
-  packages = g_strdup_printf("evolution-plugin >= %s", minversion);
+  packages = g_strdup_printf("evolution-plugin-3.0 >= %s", minversion);
   result = jb_check_packages("Evolution", "evolution-plugin", packages);
   g_free(packages);
 
@@ -53,7 +53,7 @@
       char *plugindir;
 
       jb_message_checking("for the Evolution plugin directory");
-      plugindir = jb_get_package_variable("evolution-plugin", "plugindir");
+      plugindir = jb_get_package_variable("evolution-plugin-3.0", "plugindir");
       jb_message_result_string(plugindir ? plugindir : "not found");
 
       if (! plugindir)
--- mail-notification-5.4.dfsg.1.orig/src/mn-evolution-folder-tree-server.gob
+++ mail-notification-5.4.dfsg.1/src/mn-evolution-folder-tree-server.gob
@@ -19,6 +19,10 @@
 
 %privateheader{
 #include <gtk/gtk.h>
+#include <libedataserver/eds-version.h>
+#if EDS_CHECK_VERSION(2,91,0)
+#include <mail/e-mail-session.h>
+#endif
 %}
 
 %{
@@ -27,6 +31,12 @@
 #if !EDS_CHECK_VERSION(2,29,0)
 #include <mail/mail-component.h>
 #endif
+#if EDS_CHECK_VERSION(3,1,0)
+#include <mail/e-mail-folder-utils.h>
+#include <mail/e-mail-browser.h>
+#include <mail/e-mail-reader.h>
+#include <shell/e-shell.h>
+#endif
 #include <mail/em-folder-tree.h>
 #include "mn-evolution-plugin.h"
 #include "mn-evolution.h"
@@ -42,6 +52,7 @@
 
   private GtkWidget *plug;
   private GtkWidget *tree;	/* plug's child, destroyed with it */
+  private EMailSession *session;
 
   property STRING uri
     set
@@ -62,7 +73,16 @@
 
   constructor (self)
   {
-#if EDS_CHECK_VERSION(2,29,0)
+#if EDS_CHECK_VERSION(3,1,0)
+    EShell *shell = e_shell_get_default();
+    EShellBackend *shell_backend = e_shell_get_backend_by_name(shell, "mail");
+    GtkWidget *browser = e_mail_browser_new(E_MAIL_BACKEND(shell_backend));
+    EAlertSink *alert_sink = e_mail_reader_get_alert_sink(E_MAIL_READER(browser));
+    selfp->tree = em_folder_tree_new(E_MAIL_BACKEND(shell_backend), alert_sink);
+#elif EDS_CHECK_VERSION(2,91,0)
+    selfp->session = e_mail_session_new();
+    selfp->tree = em_folder_tree_new(selfp->session);
+#elif EDS_CHECK_VERSION(2,29,0)
     selfp->tree = em_folder_tree_new();
 #else
     EMFolderTreeModel *model;
@@ -78,13 +98,24 @@
     g_signal_connect(selfp->plug, "destroy", G_CALLBACK(self_plug_destroy_h), self);
 
     g_object_connect(selfp->tree,
+#if EDS_CHECK_VERSION(3,1,0)
+		     "signal::folder-selected", self_selected_31_h, self,
+		     "signal::folder-activated", self_activated_31_h, self,
+#else
 		     "signal::folder-selected", self_selected_h, self,
 		     "signal::folder-activated", self_activated_h, self,
+#endif
 		     NULL);
   }
 
   finalize (self)
   {
+#if EDS_CHECK_VERSION(2,91,0)
+    if (selfp->session) {
+      g_object_unref(selfp->session);
+      selfp->session = NULL;
+    }
+#endif
     g_signal_handlers_disconnect_by_func(selfp->plug, self_plug_destroy_h, self);
   }
 
@@ -109,6 +140,23 @@
   }
 
   private void
+    selected_31_h (EMFolderTree *tree,
+		   CamelStore *store,
+		   const char *folder_name,
+		   guint32 flags,
+		   gpointer user_data)
+  {
+    Self *self = user_data;
+    char *uri;
+
+    if (!folder_name) return;
+
+    uri = e_mail_folder_uri_build(store, folder_name);
+    self_folder_selected(self, uri);
+    g_free(uri);
+  }
+
+  private void
     selected_h (EMFolderTree *tree,
 		const char *full_name,
 		const char *uri,
@@ -120,6 +168,16 @@
   }
 
   private void
+    activated_31_h (EMFolderTree *tree,
+		    CamelStore *store,
+		    const char *dolfer_name,
+		    gpointer user_data)
+  {
+    Self *self = user_data;
+    self_folder_activated(self);
+  }
+
+  private void
     activated_h (EMFolderTree *tree,
 		 const char *full_name,
 		 const char *uri,
--- mail-notification-5.4.dfsg.1.orig/src/mn-evolution-plugin.c
+++ mail-notification-5.4.dfsg.1/src/mn-evolution-plugin.c
@@ -25,8 +25,10 @@
 #include <dbus/dbus-glib-lowlevel.h>
 #include <dbus/dbus-glib-bindings.h>
 #include <camel/camel.h>
+#include <libedataserver/eds-version.h>
 #include <mail/em-event.h>
 #include <mail/mail-tools.h>
+#include <mail/e-mail-folder-utils.h>
 #include "mn-evolution.h"
 #include "mn-evolution-server.h"
 #include "mn-evolution-plugin.h"
@@ -240,7 +242,11 @@
 					       EMEventTargetFolder *folder)
 {
   if (evo_server)
+#if EDS_CHECK_VERSION(3,1,0)
+    mn_evolution_server_folder_changed(evo_server, e_mail_folder_uri_build(folder->store, folder->folder_name));
+#else
     mn_evolution_server_folder_changed(evo_server, folder->uri);
+#endif
 }
 
 void
@@ -249,10 +255,17 @@
 {
   if (evo_server)
     {
-      char *url;
+#if EDS_CHECK_VERSION(3,1,0)
+      char *url = e_mail_folder_uri_from_folder(message->folder);
+#elif EDS_CHECK_VERSION(2,91,0)
+      const char *url = camel_folder_get_uri(message->folder);
+#else
+      char *url = mail_tools_folder_to_url(message->folder);
+#endif
 
-      url = mail_tools_folder_to_url(message->folder);
       mn_evolution_server_message_reading(evo_server, url);
+#if EDS_CHECK_VERSION(3,1,0) || !EDS_CHECK_VERSION(2,91,0)
       g_free(url);
+#endif
     }
 }
--- mail-notification-5.4.dfsg.1.orig/src/mn-evolution-server.gob
+++ mail-notification-5.4.dfsg.1/src/mn-evolution-server.gob
@@ -36,7 +36,9 @@
 #include <mail/em-message-browser.h>
 #endif
 #include <mail/em-utils.h>
+#if !EDS_CHECK_VERSION(2,91,0)
 #include <mail/mail-session.h>
+#endif
 #include <mail/mail-tools.h>
 #include "mn-evolution.h"
 #include "mn-evolution-folder-tree-server.h"
@@ -148,7 +150,22 @@
 
     if (! folder)
       {
+#if EDS_CHECK_VERSION(2,91,0)
+	static EMailSession * session = NULL;
+	if (!session) {
+#if EDS_CHECK_VERSION(3,1,0)
+	  EShell *shell = e_shell_get_default();
+	  EShellBackend *shell_backend = e_shell_get_backend_by_name(shell, "mail");
+	  session = E_MAIL_SESSION(e_mail_backend_get_session(E_MAIL_BACKEND(shell_backend)));
+#else
+	  session = e_mail_session_new();
+#endif
+	}
+
+	folder = e_mail_session_uri_to_folder_sync(session, uri, 0, NULL, NULL);
+#else
 	folder = mail_tool_uri_to_folder(uri, 0, NULL);
+#endif
 	if (folder)
 	  self_cache_folder(uri, folder);
 	else
@@ -274,7 +291,11 @@
     folder = self_lookup_folder(folder_uri, err);
     if (folder)
       {
+#if EDS_CHECK_VERSION(3,1,0)
+	*ret = g_strdup(camel_folder_get_display_name(folder));
+#else
 	*ret = g_strdup(camel_folder_get_name(folder));
+#endif
 	g_object_unref(folder);
       }
 
@@ -304,8 +325,12 @@
 	shell = e_shell_get_default();
 	shell_backend = e_shell_get_backend_by_name(shell, "mail");
 
-	browser = e_mail_browser_new(shell_backend);
+	browser = e_mail_browser_new(E_MAIL_BACKEND(shell_backend));
+#if EDS_CHECK_VERSION(3,1,0)
+	e_mail_reader_set_folder(E_MAIL_READER(browser), folder);
+#else
 	e_mail_reader_set_folder(E_MAIL_READER(browser), folder, folder_uri);
+#endif
 	e_mail_reader_set_message(E_MAIL_READER(browser), message_uid);
 	gtk_widget_show(browser);
 #else
--- mail-notification-5.4.dfsg.1.orig/src/mn-evolution-mailbox-properties.gob
+++ mail-notification-5.4.dfsg.1/src/mn-evolution-mailbox-properties.gob
@@ -66,12 +66,20 @@
   {
     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
     GtkWidget *vbox;
+    GtkWidget *scrolled_window;
 
     /* translators: header capitalization */
     vbox = mn_mailbox_properties_add_general_section(properties, _("Folder"));
 
     selfp->tree = mn_evolution_folder_tree_client_new();
-    gtk_box_pack_start(GTK_BOX(vbox), selfp->tree, TRUE, TRUE, 0);
+
+    scrolled_window = gtk_scrolled_window_new(NULL, NULL);
+    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
+    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), selfp->tree);
+
+    gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
+
+    gtk_widget_show(scrolled_window);
     gtk_widget_show(selfp->tree);
 
     g_object_connect(selfp->tree,
@@ -92,6 +100,8 @@
     if (client->proxy)
       org_gnome_MailNotification_Evolution_get_folder_name(client->proxy, MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri, &name, NULL);
 
+    g_return_if_fail(name != NULL);
+
     g_free(selfp->name);
     selfp->name = name;
 
