From 724342eafc5d89cecf2aaad3d296f79daa37f0a0e7b57c1a0cb4b7128267052c Mon Sep 17 00:00:00 2001 From: Dominique Leuenberger Date: Sun, 15 Aug 2010 14:33:53 +0000 Subject: [PATCH] Accepting request 45529 from home:dimstar:branches:GNOME:Factory Copy from home:dimstar:branches:GNOME:Factory/evolution via accept of submit request 45529 revision 2. Request was accepted with message: Sharepoint support in Evo has been dead for a long time... nobody wants to work on it. OBS-URL: https://build.opensuse.org/request/show/45529 OBS-URL: https://build.opensuse.org/package/show/GNOME:Factory/evolution?expand=0&rev=88 --- evolution.changes | 9 + evolution.spec | 16 - sharepoint-account-setup.patch | 514 ------------------ sp-meetingworkspace-ui.patch | 945 --------------------------------- sp-process-meetings.diff | 440 --------------- sp-tasks-setup.diff | 236 -------- 6 files changed, 9 insertions(+), 2151 deletions(-) delete mode 100644 sharepoint-account-setup.patch delete mode 100644 sp-meetingworkspace-ui.patch delete mode 100644 sp-process-meetings.diff delete mode 100644 sp-tasks-setup.diff diff --git a/evolution.changes b/evolution.changes index d7eac94..7eb1bab 100644 --- a/evolution.changes +++ b/evolution.changes @@ -1,3 +1,12 @@ +------------------------------------------------------------------- +Thu Aug 12 21:23:59 UTC 2010 - dimstar@opensuse.org + +- Finally drop unmaintained sharepoint patches (came from SLE) + + sharepoint-account-setup.patch + + sp-meetingworkspace-ui.patch + + sp-process-meetings.diff + + sp-tasks-setup.diff + ------------------------------------------------------------------- Fri Aug 6 02:11:42 CEST 2010 - vuntz@opensuse.org diff --git a/evolution.spec b/evolution.spec index 947c8b1..2a8da4c 100644 --- a/evolution.spec +++ b/evolution.spec @@ -72,24 +72,16 @@ Patch15: evolution-custom-openldap-includes.patch Patch18: bnc-435668-hide-accept.patch # PATCH-FIX-UPSTREAM bnc-435722-book-uri-long.patch bnc#435722 abharath@suse.de -- Book URI: Spills Into Second Column. Patch19: bnc-435722-book-uri-long.patch -# NEEDS-REBASE sharepoint-account-setup.patch pchenthill@suse.de -- This patch allows you to connect to sharepoint servers (WAS: PATCH-FIX-UPSTREAM) -Patch23: sharepoint-account-setup.patch # PATCH-FIX-OPENSUSE bnc-433448-backup-restore-fails.patch bnc433448 abharath@suse.de -- Not required upstream. Patch25: bnc-433448-backup-restore-fails.patch # PATCH-FIX-UPSTREAM bnc-210959-evo-accept-ics.patch bnc210959 pchenthill@novell.com -- Patch yet to be pushed upstream. Patch35: bnc-210959-evo-accept-ics.patch -# PATCH-NEEDS-REBASE sp-tasks-setup.diff pchenthill@suse.de -- Patch needs to be upstreamed. (WAS: PATCH-FIX-UPSTREAM) -Patch36: sp-tasks-setup.diff -# PATCH-NEEDS-REBASE sp-meetingworkspace-ui.patch pchenthill@suse.de -- Patch needs to be upstreamed. (WAS: PATCH-FIX-UPSTREAM) -Patch41: sp-meetingworkspace-ui.patch # PATCH-NEEDS-REBASE bnc-449888-handle-no-workspace.patch bnc449888 pchenthill@suse.de -- Patch needs to be upstreamed. (WAS: PATCH-FIX-UPSTREAM) Patch42: bnc-449888-handle-no-workspace.patch # PATCH-NEEDS-REBASE bnc-440634-forwarded-hide-accept-decline.patch bnc440634 abharath@suse.de -- Make GW understand folders better. (WAS: PATCH-FIX-SLED) Patch53: bnc-440634-forwarded-hide-accept-decline.patch # PATCH-NEEDS-REBASE bnc-445996-address-conflict.patch bnc445996 shashish@suse.de -- Needs to be moved out of glade files. (was PATCH-FIX-SLED) Patch54: bnc-445996-address-conflict.patch -# PATCH-NEEDS-REBASE: sp-process-meetings.diff pchenthill@suse.de -- Fix for bug 449899 (bnc) (WAS: PATCH-FIX-SLED) -Patch101: sp-process-meetings.diff Url: http://gnome.org/projects/evolution/ BuildRoot: %{_tmppath}/%{name}-%{version}-build Recommends: bogofilter @@ -161,21 +153,13 @@ translation-update-upstream # NEEDS REBASE #%patch18 %patch19 -# NEEDS-REBASE -#%patch23 -p1 %patch25 %patch35 # NEEDS-REBASE -#%patch36 -p1 -# NEEDS-REBASE -#%patch41 -p1 -# NEEDS-REBASE #%patch42 -p1 # NEEDS REBASE #%patch53 #%patch54 -# NEEDS-REBASE -#%patch101 -p1 %build autoreconf -f -i diff --git a/sharepoint-account-setup.patch b/sharepoint-account-setup.patch deleted file mode 100644 index 1b850b5..0000000 --- a/sharepoint-account-setup.patch +++ /dev/null @@ -1,514 +0,0 @@ -diff -ruN evolution-2.27.4.1/configure.ac evolution-2.27.4.1.patched//configure.ac ---- evolution-2.27.4.1/configure.ac 2009-07-15 11:25:24.000000000 +0200 -+++ evolution-2.27.4.1.patched//configure.ac 2009-07-22 13:21:18.000000000 +0200 -@@ -903,6 +903,24 @@ - PKG_CHECK_MODULES([MONO], ["mono"]) - AC_DEFINE(ENABLE_MONO,1,[Define if Mono embedding should be enabled]) - MONO_PLUGIN="mono" -+ PKG_CHECK_MODULES(MONO_PLATFORM, -+ [glib-sharp-2.0, gtk-sharp-2.0, gconf-sharp-2.0, gnome-sharp-2.0, -+ evolution-sharp, ndesk-dbus-1.0, ndesk-dbus-glib-1.0]) -+ AC_SUBST(MONO_PLATFORM_CFLAGS) -+ AC_SUBST(MONO_PLATFORM_LIBS) -+ MONO_BASED_PLUGINS="" -+ -+ dnl Sharepoint account setup -+ AC_ARG_ENABLE([icedesktop], -+ AC_HELP_STRING([--enable-icedesktop], -+ [Build sharepoint provider]), -+ [enable_icedesktop=$enableval],[enable_icedesktop=no]) -+ if test "x${enable_icedesktop}" = "xyes"; then -+ PKG_CHECK_MODULES(ICE_DESKTOP, [Novell.IceDesktop, solvent]) -+ AC_SUBST(ICE_DESKTOP_CFLAGS) -+ AC_SUBST(ICE_DESKTOP_LIBS) -+ MONO_BASED_PLUGINS="$MONO_BASED_PLUGINS sharepoint-account-setup" -+ fi - fi - AC_SUBST(MONO_CFLAGS) - AC_SUBST(MONO_LIBS) -@@ -1714,7 +1732,7 @@ - dnl Add any new plugins here - plugins_base_always="calendar-file calendar-http $CALENDAR_WEATHER itip-formatter plugin-manager default-source addressbook-file startup-wizard mark-all-read groupwise-features groupwise-account-setup mail-account-disable publish-calendar caldav imap-features google-account-setup webdav-account-setup" - --plugins_base="$plugins_base_always $SA_JUNK_PLUGIN $BF_JUNK_PLUGIN $EXCHANGE_PLUGIN $MONO_PLUGIN " -+plugins_base="$plugins_base_always $SA_JUNK_PLUGIN $BF_JUNK_PLUGIN $EXCHANGE_PLUGIN $MONO_PLUGIN $MONO_BASED_PLUGINS" - all_plugins_base="$plugins_base_always sa-junk-plugin bogo-junk-plugin exchange-operations mono" - - plugins_standard_always="bbdb subject-thread save-calendar select-one-source copy-tool mail-to-task audio-inline mailing-list-actions default-mailer prefer-plain mail-notification attachment-reminder backup-restore email-custom-header templates pst-import vcard-inline" -@@ -1767,6 +1785,11 @@ - msg_plugins="$msg_plugins (and mono)" - fi - -+if test "x${enable_icedesktop}" = "xyes"; then -+ plugins_enabled="$plugins_enabled sharepoint-account-setup" -+ msg_plugins="$msg_plugins (and sharepoint)" -+fi -+ - - if test "x${enable_python}" = "xyes"; then - plugins_enabled="$plugins_enabled python" -@@ -2021,6 +2044,7 @@ - plugins/tnef-attachments/Makefile - plugins/vcard-inline/Makefile - plugins/webdav-account-setup/Makefile -+plugins/sharepoint-account-setup/Makefile - smime/Makefile - smime/lib/Makefile - smime/gui/Makefile -diff -ruN evolution-2.27.4.1/plugins/mono/mono-plugin.c evolution-2.27.4.1.patched//plugins/mono/mono-plugin.c ---- evolution-2.27.4.1/plugins/mono/mono-plugin.c 2009-07-13 09:45:13.000000000 +0200 -+++ evolution-2.27.4.1.patched//plugins/mono/mono-plugin.c 2009-07-22 13:20:43.000000000 +0200 -@@ -81,9 +81,14 @@ - MonoObject *x = NULL, *res; - gpointer *params; - -- g_print ("\n\a epm_invoke in mono-plugin.c in mono plugin loader is called \n\a"); -+ g_print ("\n\a epm_invoke in mono-plugin.c in mono plugin loader is called %s \n\a", epm->location); - - /* we need to do this every time since we may be called from any thread for some uses */ -+ if (!domain) { -+ mono_config_parse (NULL); -+ domain = mono_jit_init (epm->location); -+ } -+ - mono_thread_attach(domain); - - if (p->assembly == NULL) { -@@ -232,8 +237,6 @@ - type = g_type_register_static(e_plugin_get_type(), "EPluginMono", &info, 0); - e_plugin_register_type (type); - d(printf("\nType EPluginMono registered from the mono-plugin-loader\n")); -- domain = mono_jit_init("Evolution"); -- mono_thread_attach(domain); - } - - return GUINT_TO_POINTER(type); -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/Makefile.am evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/Makefile.am ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/Makefile.am 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/Makefile.am 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,37 @@ -+CSC = gmcs -+ -+ASSEMBLY_NAME = SharepointAccountSetup -+TARGET = $(ASSEMBLY) -+ASSEMBLY = $(ASSEMBLY_NAME).dll -+ -+@EVO_PLUGIN_RULE@ -+ -+CSFILES = SharepointSource.cs SharepointAccount.cs SharepointAccountSetup.cs -+ -+EXTRA_DIST = org-gnome-sharepoint-account-setup.eplug.xml \ -+ org-gnome-sharepoint-ui.xml \ -+ org-gnome-sharepoint-disconnect-ui.xml \ -+ $(CSFILES) -+ -+ASSEMBLIES = \ -+ -r:System \ -+ -r:Mono.Posix \ -+ $(ICE_DESKTOP_LIBS) \ -+ $(MONO_PLATFORM_LIBS) -+ -+CSFLAGS = -noconfig -codepage:utf8 -warn:4 -debug -d:DEBUG $(ASSEMBLIES) -+ -+#endif -+#if ENABLE_RELEASE -+#CSFLAGS = -noconfig -codepage:utf8 -warn:4 -+#endif -+$(ASSEMBLY): $(CSCFILES) -+ $(CSC) -unsafe /out:$(ASSEMBLY) $(CSFLAGS) /target:library $(ASSEMBLIES) $(CSFILES) -+ -+plugin_DATA = $(ASSEMBLY) org-gnome-sharepoint-account-setup.eplug org-gnome-sharepoint-ui.xml org-gnome-sharepoint-disconnect-ui.xml -+ -+BUILT_SOURCES = $(ASSEMBLY) org-gnome-sharepoint-account-setup.eplug -+ -+all: $(ASSEMBLY) -+ -+CLEANFILES = org-gnome-sharepoint-account-setup.eplug $(ASSEMBLY) $(ASSEMBLY).mdb -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-account-setup.eplug.xml evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-account-setup.eplug.xml ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-account-setup.eplug.xml 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-account-setup.eplug.xml 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,36 @@ -+ -+ -+ -+ -+ <_description>Create a sharepoint account for calendar and tasks -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-disconnect-ui.xml evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-disconnect-ui.xml ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-disconnect-ui.xml 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-disconnect-ui.xml 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-ui.xml evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-ui.xml ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/org-gnome-sharepoint-ui.xml 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/org-gnome-sharepoint-ui.xml 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,16 @@ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointAccount.cs evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointAccount.cs ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointAccount.cs 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointAccount.cs 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,165 @@ -+// SharepointAccount.cs created with MonoDevelop -+// User: chen at 12:30 PM 10/21/2008 -+// -+// To change standard headers go to Edit->Preferences->Coding->Standard Headers -+// -+ -+using System; -+using Evolution; -+using NDesk.DBus; -+using Gtk; -+using System.Threading; -+using GLib; -+using Novell.IceDesktop; -+ -+namespace Sharepoint -+{ -+ -+ -+ public class SharepointAccount -+ { -+ static Novell.IceDesktop.IDaemon deskIceDaemon = null; -+ static org.freedesktop.DBus.IBus sessionBus = null; -+ static ObjectPath DaemonPath = new ObjectPath (Novell.IceDesktop.ServiceName.DaemonPath); -+ static string DaemonNamespace = Novell.IceDesktop.ServiceName.DaemonNamespace; -+ static bool initialized = false; -+ static System.Threading.Thread backgroundThread = null; -+ -+ public SharepointAccount() -+ { -+ } -+ -+ public void CreateAccount () -+ { -+ try -+ { -+ if (initialized == false) { -+ BusG.Init (); -+ initialized = true; -+ } -+ -+ -+ sessionBus = Bus.Session.GetObject ("org.freedesktop.DBus", -+ new ObjectPath ("/org/freedesktop/DBus")); -+ sessionBus.NameOwnerChanged += OnDBusNameOwnerChanged; -+ -+ // Force the daemon to start up if it's not already running -+ if (Bus.Session.NameHasOwner (DaemonNamespace) == false) -+ { -+ Bus.Session.StartServiceByName (DaemonNamespace); -+ } -+ -+ ConnectToICEcoreDaemon (); -+ try { deskIceDaemon.CheckAuthentication (String.Empty); } -+ catch (NotAuthenticatedException) -+ { return; } -+ -+ Console.WriteLine ("****** Authenticated"); -+ StartFetchingFolder (); -+ -+ } -+ catch (Exception ex) -+ { -+ Console.WriteLine ("Error creating account: {0}", ex.Message); -+ Console.WriteLine (ex.StackTrace); -+ // Change the status text in the AuthDialog -+ return; -+ } -+ } -+ -+ public void DeleteAccount () -+ { -+ // we remove all share calendars. We currently support creating only one sharepoint account -+ SharepointSource spSource = new SharepointSource (CalSourceType.Event, null, null); -+ spSource.DeleteSources (); -+ spSource.Sync (); -+ } -+ -+ private static void StartFetchingFolder () -+ { -+ if (backgroundThread == null) -+ { -+ backgroundThread = new System.Threading.Thread (new ThreadStart (SetupFolders)); -+ backgroundThread.IsBackground = true; -+ backgroundThread.Start (); -+ } -+ } -+ -+ private static void SetupFolders () -+ { -+ Console.WriteLine ("Getting folders "); -+ AccountInfo accountInfo = deskIceDaemon.GetDefaultAccountInfo (); -+ SharepointSource spSource = new SharepointSource (CalSourceType.Event, accountInfo.username, -+ accountInfo.hostUrl); -+ -+ if (spSource.AccountExists) { -+ Console.WriteLine ("Account already exists"); -+ return; -+ } -+ -+ FileInfo [] workspaces = deskIceDaemon.EnumerateWorkspaces (); -+ foreach (FileInfo workspace in workspaces) -+ { -+ FileInfo[] folders = null; -+ -+ if (spSource.srcType == CalSourceType.Event) -+ folders = deskIceDaemon.GetCalendarFolders (string.Empty, workspace.Id); -+ // else get task folders -+ -+ -+ if (folders.Length == 0) -+ continue; -+ -+ spSource.CreateSources (workspace, folders); -+ } -+ spSource.Sync (); -+ Console.WriteLine ("******* Got folders "); -+ backgroundThread = null; -+ RemoveHandlers (); -+ } -+ -+ private static void RemoveHandlers () -+ { -+ sessionBus.NameOwnerChanged -= OnDBusNameOwnerChanged; -+ deskIceDaemon.Authenticated -= OnAuthenticated; -+ } -+ -+ static void OnAuthenticated (string server, string username) -+ { -+ Console.WriteLine ("Auth done\n"); -+ StartFetchingFolder (); -+ } -+ -+ static void OnDBusNameOwnerChanged (string serviceName, string oldOwner, string newOwner) -+ { -+ -+ Console.WriteLine ("O/p {0} {1}", serviceName, DaemonNamespace); -+ if (serviceName == null) -+ return; -+ if (serviceName.CompareTo (DaemonNamespace) != 0) -+ return; -+ -+ if (oldOwner != null && oldOwner.Length > 0) { -+ // The daemon just went away -+ // TODO: What should the Navigator do if the ICEcore Daemon suddenly exits? -+ Console.WriteLine ("TODO: What should the Navigator do if the ICEcore Daemon suddenly exits?"); -+ } else { -+ // Connect to the new instance of the daemon -+ ConnectToICEcoreDaemon (); -+ } -+ } -+ -+ /// -+ /// Connect with the ICEcore Daemon and register event handlers. -+ /// -+ static void ConnectToICEcoreDaemon () -+ { -+ Console.WriteLine ("Connecting the navigator to the ICEcore Daemon"); -+ // Check DBus to see if the Daemon is currently running -+ deskIceDaemon = -+ Bus.Session.GetObject (DaemonNamespace, DaemonPath); -+ // Set up the daemon event handlers -+ deskIceDaemon.Authenticated += OnAuthenticated; -+ } -+ } -+} -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointAccountSetup.cs evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointAccountSetup.cs ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointAccountSetup.cs 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointAccountSetup.cs 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,22 @@ -+using System; -+using Sharepoint; -+using Evolution; -+using GLib; -+using Gtk; -+ -+public class SharePointAccountSetup -+{ -+ public static IntPtr SetupAccount (IntPtr pluginPtr) -+ { -+ SharepointAccount account = new SharepointAccount (); -+ account.CreateAccount (); -+ return (IntPtr) 0; -+ } -+ -+ public static IntPtr RemoveAccount (IntPtr pluginPtr) -+ { -+ SharepointAccount account = new SharepointAccount (); -+ account.DeleteAccount (); -+ return (IntPtr) 0; -+ } -+} -diff -ruN evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointSource.cs evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointSource.cs ---- evolution-2.27.4.1/plugins/sharepoint-account-setup/SharepointSource.cs 1970-01-01 01:00:00.000000000 +0100 -+++ evolution-2.27.4.1.patched//plugins/sharepoint-account-setup/SharepointSource.cs 2009-07-22 13:20:43.000000000 +0200 -@@ -0,0 +1,97 @@ -+// SharepointSource.cs created with MonoDevelop -+// User: chen at 1:38 AM 10/21/2008 -+// -+// To change standard headers go to Edit->Preferences->Coding->Standard Headers -+// -+ -+using System; -+using Evolution; -+using Novell.IceDesktop; -+using GConf; -+using System.Collections.Generic; -+ -+namespace Sharepoint -+{ -+ -+ -+ public class SharepointSource -+ { -+ public CalSourceType srcType; -+ readonly string calPath = "/apps/evolution/calendar/sources"; -+ readonly string taskPath = "/apps/evolution/tasks/sources"; -+ static Client client; -+ SourceList srcList; -+ readonly string baseUri = "sharepoint://"; -+ string username; -+ string hostUrl; -+ -+ public SharepointSource(CalSourceType type, string userName, string hosturl) -+ { -+ srcType = type; -+ client = new Client (); -+ username = userName; -+ hostUrl = hosturl; -+ -+ if (type == CalSourceType.Event) -+ srcList = new SourceList (calPath); -+ else -+ srcList = new SourceList (taskPath); -+ } -+ -+ public bool AccountExists -+ { -+ get -+ { -+ foreach (SourceGroup group in srcList.Groups) -+ { -+ if (group.BaseUri == baseUri) -+ return true; -+ } -+ -+ return false; -+ } -+ } -+ -+ public void CreateSources (FileInfo workspace, FileInfo [] folders) -+ { -+ SourceGroup group = new SourceGroup (workspace.DisplayName, baseUri); -+ -+ foreach (FileInfo folder in folders) -+ { -+ Console.WriteLine (workspace.DisplayName + " folder " + folder.DisplayName); -+ string relativeUri = hostUrl + ":" + folder.Id; -+ Source source= new Source (folder.DisplayName, relativeUri); -+ source.SetProperty ("username", username); -+ source.SetProperty ("workspaceid", workspace.Id); -+ source.SetProperty ("Id", folder.Id); -+ source.SetProperty ("Auth","True"); -+ group.AddSource (source, -1); -+ } -+ group.SetProperty ("username", username); -+ srcList.AddGroup (group, -1); -+ } -+ -+ public void Sync () -+ { -+ srcList.Sync (); -+ } -+ -+ public void DeleteSources () -+ { -+ List groupsToRemove = new List (); -+ foreach (SourceGroup group in srcList.Groups) -+ { -+ if (group.BaseUri.StartsWith (baseUri)) -+ { -+ /// Currently we remove all sharepoint calendars -+ groupsToRemove.Add (group); -+ } -+ } -+ -+ foreach (SourceGroup group in groupsToRemove) -+ { -+ srcList.RemoveGroup (group); -+ } -+ } -+ } -+} -diff -ruN evolution-2.27.4.1/ui/evolution.xml evolution-2.27.4.1.patched//ui/evolution.xml ---- evolution-2.27.4.1/ui/evolution.xml 2009-07-13 09:45:14.000000000 +0200 -+++ evolution-2.27.4.1.patched//ui/evolution.xml 2009-07-22 13:20:43.000000000 +0200 -@@ -66,6 +66,8 @@ - - - -+ -+ - - - diff --git a/sp-meetingworkspace-ui.patch b/sp-meetingworkspace-ui.patch deleted file mode 100644 index 932dbfc..0000000 --- a/sp-meetingworkspace-ui.patch +++ /dev/null @@ -1,945 +0,0 @@ -Index: evolution-2.27.2/calendar/gui/dialogs/comp-editor.c -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/dialogs/comp-editor.c -+++ evolution-2.27.2/calendar/gui/dialogs/comp-editor.c -@@ -63,6 +63,7 @@ - #include "../e-cal-popup.h" - #include "../calendar-config-keys.h" - #include "cal-attachment-select-file.h" -+#include "../e-cal-event.h" - #include "widgets/misc/e-attachment-view.h" - #include "widgets/misc/e-attachment-paned.h" - -@@ -100,6 +101,7 @@ struct _CompEditorPrivate { - /* Manages menus and toolbars */ - GtkUIManager *ui_manager; - -+ GtkWidget *vbox; - gchar *summary; - - guint32 attachment_bar_visible : 1; -@@ -1606,11 +1608,11 @@ comp_editor_init (CompEditor *editor) - - container = GTK_WIDGET (editor); - -- widget = gtk_vbox_new (FALSE, 0); -- gtk_container_add (GTK_CONTAINER (container), widget); -- gtk_widget_show (widget); -+ priv->vbox = gtk_vbox_new (FALSE, 0); -+ gtk_container_add (GTK_CONTAINER (editor), priv->vbox); -+ gtk_widget_show (priv->vbox); - -- container = widget; -+ container = priv->vbox; - - widget = comp_editor_get_managed_widget (editor, "/main-menu"); - gtk_box_pack_start (GTK_BOX (container), widget, FALSE, FALSE, 0); -@@ -1955,6 +1957,22 @@ comp_editor_get_ui_manager (CompEditor * - return editor->priv->ui_manager; - } - -+GtkWidget * -+comp_editor_get_vbox (CompEditor *editor) -+{ -+ g_return_val_if_fail (IS_COMP_EDITOR (editor), NULL); -+ -+ return editor->priv->vbox; -+} -+ -+GtkNotebook * -+comp_editor_get_notebook (CompEditor *editor) -+{ -+ g_return_val_if_fail (IS_COMP_EDITOR (editor), NULL); -+ -+ return editor->priv->notebook; -+} -+ - GtkAction * - comp_editor_get_action (CompEditor *editor, - const gchar *action_name) -@@ -2112,9 +2130,15 @@ comp_editor_append_page (CompEditor *edi - - priv->pages = g_list_append (priv->pages, page); - -- if (add) -+ if (add){ - gtk_notebook_append_page (priv->notebook, page_widget, label_widget); - -+ ECalEvent *ec_event = e_cal_event_peek (); -+ ECalEventTargetCompEditor *target; -+ target = e_cal_event_target_comp_editor (ec_event, editor); -+ e_event_emit ((EEvent *) ec_event, "editor.append", (EEventTarget *) target); -+ } -+ - /* Listen for things happening on the page */ - g_signal_connect_swapped ( - page, "dates_changed", -Index: evolution-2.27.2/calendar/gui/dialogs/event-editor.c -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/dialogs/event-editor.c -+++ evolution-2.27.2/calendar/gui/dialogs/event-editor.c -@@ -38,6 +38,7 @@ - #include - #include - -+#include "../e-cal-event.h" - #include "event-page.h" - #include "recurrence-page.h" - #include "schedule-page.h" -@@ -65,7 +66,7 @@ static const gchar *ui = - "" - " " - " " --" " -+" " - " " - " " - " " -@@ -103,6 +104,17 @@ static gboolean event_editor_send_comp ( - - G_DEFINE_TYPE (EventEditor, event_editor, TYPE_COMP_EDITOR) - -+ -+CompEditorPage* -+event_editor_get_event_page (CompEditor *editor) -+{ -+ EventEditorPrivate *priv; -+ -+ priv = EVENT_EDITOR_GET_PRIVATE (editor); -+ -+ return priv->event_page; -+} -+ - static void - create_schedule_page (CompEditor *editor) - { -@@ -334,6 +346,11 @@ event_editor_constructor (GType type, - event_page_set_meeting (priv->event_page, TRUE); - priv->meeting_shown=TRUE; - } -+ -+ ECalEvent *ec_event = e_cal_event_peek (); -+ ECalEventTargetCompEditor *target; -+ target = e_cal_event_target_comp_editor (ec_event, editor); -+ e_event_emit ((EEvent *) ec_event, "editor.inited", (EEventTarget *) target); - - return object; - } -@@ -496,7 +513,6 @@ event_editor_init (EventEditor *ee) - } - - /* Hide send options. */ -- action = comp_editor_get_action (editor, "send-options"); - gtk_action_set_visible (action, FALSE); - - g_signal_connect ( -Index: evolution-2.27.2/calendar/gui/dialogs/event-editor.h -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/dialogs/event-editor.h -+++ evolution-2.27.2/calendar/gui/dialogs/event-editor.h -@@ -68,6 +68,7 @@ GType event_editor_get_type (void); - CompEditor * event_editor_new (ECal *client, - CompEditorFlags flags); - void event_editor_show_meeting (EventEditor *ee); -+CompEditorPage* event_editor_get_event_page (CompEditor *editor); - - G_END_DECLS - -Index: evolution-2.27.2/calendar/gui/dialogs/event-page.c -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/dialogs/event-page.c -+++ evolution-2.27.2/calendar/gui/dialogs/event-page.c -@@ -714,6 +714,26 @@ create_image_event_box (const char *imag - return box; - } - -+GtkWidget * -+event_page_get_toplevel_widget (CompEditorPage *page) -+{ -+ EventPagePrivate *priv; -+ -+ priv = EVENT_PAGE_GET_PRIVATE (page); -+ -+ return priv->main; -+} -+ -+GtkWidget * -+get_event_page_widget (EventPage *epage) -+{ -+ EventPagePrivate *priv; -+ -+ priv = EVENT_PAGE_GET_PRIVATE (epage); -+ -+ return priv->hour_selector; -+} -+ - static void - sensitize_widgets (EventPage *epage) - { -Index: evolution-2.27.2/calendar/gui/dialogs/event-page.h -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/dialogs/event-page.h -+++ evolution-2.27.2/calendar/gui/dialogs/event-page.h -@@ -110,6 +110,8 @@ void event_page_add_attendee (EventPag - EMeetingAttendee *attendee); - void event_page_remove_all_attendees (EventPage *epage); - -+GtkWidget * get_event_page_widget (EventPage *epage); -+ - G_END_DECLS - - #endif -Index: evolution-2.27.2/calendar/gui/e-cal-event.c -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/e-cal-event.c -+++ evolution-2.27.2/calendar/gui/e-cal-event.c -@@ -103,6 +103,16 @@ e_cal_event_target_new_component (ECalEv - return t; - } - -+ECalEventTargetCompEditor * -+e_cal_event_target_comp_editor (ECalEvent *ec_event, struct _CompEditor *editor) -+{ -+ ECalEventTargetCompEditor *t = e_event_target_new (&ec_event->event, E_CAL_EVENT_TARGET_COMP_EDITOR, sizeof (*t)); -+ -+ t->editor = g_object_ref (editor); -+ -+ return t; -+} -+ - /* ********************************************************************** */ - - static void *eceh_parent_class; -@@ -112,11 +122,18 @@ static const EEventHookTargetMask eceh_c - { NULL }, - }; - -+static const EEventHookTargetMask eceh_compeditor_masks[] = { -+ { "inited", E_CAL_EVENT_COMPEDITOR_INITED }, -+ { NULL }, -+}; -+ - static const EEventHookTargetMap eceh_targets[] = { - { "component", E_CAL_EVENT_TARGET_COMPONENT, eceh_component_masks }, -+ { "compeditor", E_CAL_EVENT_TARGET_COMP_EDITOR, eceh_compeditor_masks }, - { NULL }, - }; - -+ - static void - eceh_finalize (GObject *o) - { -Index: evolution-2.27.2/calendar/gui/e-cal-event.h -=================================================================== ---- evolution-2.27.2.orig/calendar/gui/e-cal-event.h -+++ evolution-2.27.2/calendar/gui/e-cal-event.h -@@ -37,7 +37,8 @@ typedef struct _ECalEvent ECalEvent; - typedef struct _ECalEventClass ECalEventClass; - - enum _e_cal_event_target_t { -- E_CAL_EVENT_TARGET_COMPONENT -+ E_CAL_EVENT_TARGET_COMPONENT, -+ E_CAL_EVENT_TARGET_COMP_EDITOR - }; - - /* Flags that describe TARGET_COMPONENT */ -@@ -45,6 +46,11 @@ enum { - E_CAL_EVENT_COMPONENT_MIGRATION = 1 << 0 - }; - -+ -+enum { -+ E_CAL_EVENT_COMPEDITOR_INITED = 1 << 0, -+}; -+ - typedef struct _ECalEventTargetComponent ECalEventTargetComponent; - - struct _ECalEventTargetComponent { -@@ -53,6 +59,14 @@ struct _ECalEventTargetComponent { - struct _CalendarComponent *component; - }; - -+ -+typedef struct _ECalEventTargetCompEditor ECalEventTargetCompEditor; -+ -+struct _ECalEventTargetCompEditor { -+ EEventTarget target; -+ struct _CompEditor *editor; -+}; -+ - struct _ECalEvent { - EEvent event; - -@@ -66,6 +80,7 @@ struct _ECalEventClass { - GType e_cal_event_get_type (void); - ECalEvent* e_cal_event_peek (void); - ECalEventTargetComponent* e_cal_event_target_new_component (ECalEvent *ece, struct _CalendarComponent *component, guint32 flags); -+ECalEventTargetCompEditor * e_cal_event_target_comp_editor (ECalEvent *ec_event, struct _CompEditor *editor); - - /* ********************************************************************** */ - -Index: evolution-2.27.2/plugins/sharepoint-features/Makefile.am -=================================================================== ---- /dev/null -+++ evolution-2.27.2/plugins/sharepoint-features/Makefile.am -@@ -0,0 +1,40 @@ -+INCLUDES = \ -+ -I$(top_srcdir) \ -+ -I$(top_builddir)/shell \ -+ -I$(top_srcdir)/widgets \ -+ -I$(top_srcdir)/widgets/misc \ -+ -I$(top_builddir)/calendar/gui \ -+ -I$(top_builddir)/calendar/gui/dialogs \ -+ $(EVOLUTION_CALENDAR_CFLAGS) \ -+ -DEVOLUTION_GLADEDIR=\""$(gladedir)"\" \ -+ -DCONNECTOR_GLADEDIR=\""$(gladedir)"\" \ -+ $(SOURCE_SEL_CFLAGS) -+ -+ -+@EVO_PLUGIN_RULE@ -+ -+plugin_DATA = \ -+ org-gnome-sharepoint-features.eplug -+ -+plugin_LTLIBRARIES = liborg-gnome-sharepoint-features.la -+ -+liborg_gnome_sharepoint_features_la_SOURCES = \ -+ meeting-workspace.c -+ -+liborg_gnome_sharepoint_features_la_LIBADD = \ -+ $(top_builddir)/e-util/libeutil.la \ -+ $(top_builddir)/calendar/gui/libevolution-calendar.la \ -+ $(top_builddir)/widgets/misc/libemiscwidgets.la \ -+ $(NO_UNDEFINED_REQUIRED_LIBS) \ -+ $(EVOLUTION_CALENDAR_LIBS) -+liborg_gnome_sharepoint_features_la_LDFLAGS = -module -avoid-version $(NO_UNDEFINED) -+ -+glade_DATA = meetingworkspaces.glade -+ -+EXTRA_DIST = \ -+ org-gnome-sharepoint-features.eplug.xml \ -+ $(glade_DATA) -+ -+BUILT_SOURCES = org-gnome-sharepoint-features.eplug -+ -+CLEANFILES = $(BUILT_SOURCES) -Index: evolution-2.27.2/plugins/sharepoint-features/meetingworkspaces.glade -=================================================================== ---- /dev/null -+++ evolution-2.27.2/plugins/sharepoint-features/meetingworkspaces.glade -@@ -0,0 +1,324 @@ -+ -+ -+ -+ -+ -+ -+ True -+ Meeting Workspace -+ GTK_WINDOW_TOPLEVEL -+ GTK_WIN_POS_NONE -+ False -+ True -+ False -+ True -+ False -+ False -+ GDK_WINDOW_TYPE_HINT_DIALOG -+ GDK_GRAVITY_NORTH_WEST -+ True -+ False -+ True -+ -+ -+ -+ True -+ False -+ 0 -+ -+ -+ -+ True -+ GTK_BUTTONBOX_END -+ -+ -+ -+ True -+ True -+ True -+ gtk-cancel -+ True -+ GTK_RELIEF_NORMAL -+ True -+ -6 -+ -+ -+ -+ -+ -+ True -+ True -+ True -+ gtk-ok -+ True -+ GTK_RELIEF_NORMAL -+ True -+ -5 -+ -+ -+ -+ -+ 0 -+ False -+ True -+ GTK_PACK_END -+ -+ -+ -+ -+ -+ 12 -+ True -+ False -+ 12 -+ -+ -+ -+ True -+ True -+ C_reate meeting workspace -+ True -+ GTK_RELIEF_NORMAL -+ True -+ False -+ False -+ True -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ 12 -+ True -+ 2 -+ 2 -+ False -+ 12 -+ 12 -+ -+ -+ -+ True -+ T_itle: -+ True -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0 -+ 0.5 -+ 0 -+ 0 -+ title-entry -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ -+ -+ -+ 0 -+ 1 -+ 0 -+ 1 -+ fill -+ -+ -+ -+ -+ -+ -+ True -+ T_emplate: -+ True -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ -+ -+ -+ 0 -+ 1 -+ 1 -+ 2 -+ fill -+ -+ -+ -+ -+ -+ -+ True -+ True -+ True -+ True -+ 0 -+ -+ True -+ -+ False -+ -+ -+ -+ -+ -+ 1 -+ 2 -+ 0 -+ 1 -+ -+ -+ -+ -+ -+ -+ True -+ Basic Meeting Workspace -+Blank Meeting Workspace -+Decision Meeting Workspace -+Social Meeting Workspace -+Multipage Meeting Workspace -+ False -+ True -+ True -+ -+ -+ -+ -+ -+ 1 -+ 2 -+ 1 -+ 2 -+ fill -+ fill -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ True -+ _Link to existing workspace -+ True -+ GTK_RELIEF_NORMAL -+ True -+ False -+ False -+ True -+ create-radio -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ 12 -+ True -+ False -+ 12 -+ -+ -+ -+ True -+ Wo_rkspaces: -+ True -+ False -+ GTK_JUSTIFY_LEFT -+ False -+ False -+ 0.5 -+ 0.5 -+ 0 -+ 0 -+ PANGO_ELLIPSIZE_NONE -+ -1 -+ False -+ 0 -+ -+ -+ -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ True -+ False -+ True -+ True -+ -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ 0 -+ True -+ True -+ -+ -+ -+ -+ -+ True -+ True -+ -+ -+ 0 -+ False -+ False -+ -+ -+ -+ -+ -+ -+ -Index: evolution-2.27.2/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml -=================================================================== ---- /dev/null -+++ evolution-2.27.2/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml -@@ -0,0 +1,20 @@ -+ -+ -+ -+ <_description>Plugin to create or link to a meeting workspace -+ -+ -+ -+ -+ -+ -+ -+ -Index: evolution-2.27.2/plugins/sharepoint-features/meeting-workspace.c -=================================================================== ---- /dev/null -+++ evolution-2.27.2/plugins/sharepoint-features/meeting-workspace.c -@@ -0,0 +1,230 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+static void action_meeting_workspace (GtkAction *action, EventEditor *editor); -+void org_gnome_meeting_workspace (EPlugin *ep, ECalEventTargetCompEditor *target); -+ -+static const gchar *ui = -+"" -+" " -+" " -+" " -+""; -+ -+static GtkActionEntry meeting_entries[] = { -+ { "meeting-workspace", -+ "stock_people", -+ N_("Meeting Workspace"), -+ NULL, -+ N_("Create or Link to Meeting Workspaces"), -+ G_CALLBACK (action_meeting_workspace) } -+}; -+ -+typedef struct { -+ GtkWidget *dialog; -+ GtkWidget *title_entry; -+ GtkWidget *template_label; -+ GtkWidget *template_combo; -+ GtkWidget *create_radio; -+ GtkWidget *link_radio; -+ GtkWidget *workspace_label; -+ GtkWidget *workspace_combo; -+ GtkWidget *statusbar; -+ gboolean got_workspaces; -+ guint contextid; -+ -+ EventEditor *editor; -+} MeetingWorkspaceWidget; -+ -+static DBusGProxy * -+get_dice_dbus_proxy () -+{ -+ GError *err = NULL; -+ DBusGConnection *conn = dbus_g_bus_get (DBUS_BUS_SESSION, &err); -+ if (!conn) { -+ g_printerr ("Failed to connect: %s\n", err->message); -+ g_error_free (err); -+ return NULL; -+ } -+ -+ return dbus_g_proxy_new_for_name (conn, "Novell.ICEDesktop.Daemon", "/Novell/ICEDesktop/Daemon", -+ "Novell.ICEDesktop.Daemon"); -+} -+ -+static MeetingWorkspaceWidget * -+setup_widgets (void) -+{ -+ char *gladefile; -+ GladeXML *xml; -+ MeetingWorkspaceWidget *mws; -+ -+ gladefile = g_build_filename (EVOLUTION_GLADEDIR, "meetingworkspaces.glade", NULL); -+ xml = glade_xml_new (gladefile, NULL, NULL); -+#define GW(name) glade_xml_get_widget (xml, name) -+ -+ mws = g_new0 (MeetingWorkspaceWidget, 1); -+ mws->dialog = GW("meeting-workspace-dialog"); -+ mws->title_entry = GW("title-entry"); -+ mws->template_label = GW("template-label"); -+ mws->template_combo = GW("template-combo"); -+ mws->create_radio = GW("create-radio"); -+ mws->link_radio = GW("link-radio"); -+ mws->workspace_label = GW("workspaces-label"); -+ mws->workspace_combo = GW("workspaces-combo"); -+ mws->statusbar = GW("statusbar"); -+ -+ return mws; -+} -+ -+static void -+create_toggled_cb (GtkToggleButton *create_radio, gpointer user_data) -+{ -+ gboolean active; -+ MeetingWorkspaceWidget *mws = user_data; -+ -+ active = gtk_toggle_button_get_active (create_radio); -+ -+ gtk_entry_set_editable ((GtkEntry *)mws->title_entry, active); -+ gtk_widget_set_sensitive (mws->template_combo, active); -+} -+ -+static void -+link_toggled_cb (GtkToggleButton *link_radio, gpointer user_data) -+{ -+ gboolean active; -+ MeetingWorkspaceWidget *mws = user_data; -+ -+ active = gtk_toggle_button_get_active (link_radio); -+ gtk_widget_set_sensitive (mws->workspace_combo, active); -+ -+ if (active && !mws->got_workspaces) { -+ gtk_statusbar_push ((GtkStatusbar *)mws->statusbar, mws->contextid, -+ _("Loading Meeting workspaces...")); -+ -+ // Get the meeting workspaces and set them -+ -+ mws->got_workspaces = TRUE; -+ } -+} -+ -+static void -+release_memory (MeetingWorkspaceWidget *mws) -+{ -+ -+} -+ -+static void -+dialog_response_cb (GtkDialog *dialog, int response_id, gpointer user_data) -+{ -+ MeetingWorkspaceWidget *mws = user_data; -+ -+ if (response_id == GTK_RESPONSE_OK) { -+ gboolean active; -+ const char *workspace_url = NULL; -+ ECalComponent *comp; -+ -+ active = gtk_toggle_button_get_active ((GtkToggleButton *) mws->link_radio); -+ -+ if (active) { -+ // Get the workspace from combo box selection -+ } else { -+ // Create the meeting workspace -+ const char *title; -+ -+ title = gtk_entry_get_text ((GtkEntry *) mws->title_entry); -+ -+ if (!title || !*title) { -+ gtk_statusbar_push ((GtkStatusbar *) mws->statusbar, mws->contextid, -+ _("Please set a title and press OK.")); -+ return; -+ } -+ -+ gtk_statusbar_push ((GtkStatusbar *) mws->statusbar, mws->contextid, -+ _("Creating Meeting Workspace. Please wait...")); -+ // Create Meeting Workspace -+ } -+ -+ // Set the workspace url to component -+ comp = comp_editor_get_comp ((CompEditor *) mws->editor); -+ } -+ -+ gtk_widget_destroy (mws->dialog); -+ release_memory (mws); -+} -+ -+static void -+init_widgets (MeetingWorkspaceWidget *mws) -+{ -+ g_signal_connect((mws->create_radio), "toggled", -+ G_CALLBACK (create_toggled_cb), mws); -+ -+ g_signal_connect((mws->link_radio), "toggled", -+ G_CALLBACK (link_toggled_cb), mws); -+ -+ g_signal_connect((mws->dialog), "response", -+ G_CALLBACK (dialog_response_cb), mws); -+ -+ gtk_widget_set_sensitive (mws->workspace_combo, FALSE); -+ -+ gtk_combo_box_set_active ((GtkComboBox *) mws->template_combo, 0); -+ -+ mws->contextid = gtk_statusbar_get_context_id ((GtkStatusbar *)mws->statusbar, "Meeting workspace status"); -+} -+ -+static void -+action_meeting_workspace (GtkAction *action, EventEditor *editor) -+{ -+ MeetingWorkspaceWidget *mws; -+ -+ mws = setup_widgets (); -+ init_widgets (mws); -+ mws->editor = editor; -+ -+ gtk_dialog_run ((GtkDialog *) mws->dialog); -+ g_print ("Clicked meeting workspace \n"); -+} -+ -+void -+org_gnome_meeting_workspace (EPlugin *ep, ECalEventTargetCompEditor *target) -+{ -+ GtkActionGroup *action_group; -+ GtkUIManager *manager; -+ GError *error = NULL; -+ CompEditor *editor = target->editor; -+ CompEditorFlags flags; -+ ECal *client; -+ const char *uri; -+ -+ client = comp_editor_get_client (editor); -+ uri = e_cal_get_uri (client); -+ flags = comp_editor_get_flags (editor); -+ -+ if (!g_str_has_prefix (uri, "sharepoint://")) -+ return; -+ -+ if (!(flags & COMP_EDITOR_MEETING && flags & COMP_EDITOR_NEW_ITEM)) -+ return; -+ -+ action_group = comp_editor_get_action_group (editor, "coordinated"); -+ gtk_action_group_add_actions (action_group, meeting_entries, -+ G_N_ELEMENTS (meeting_entries), editor); -+ -+ manager = comp_editor_get_ui_manager (editor); -+ gtk_ui_manager_add_ui_from_string (manager, ui, -1, &error); -+ if (error != NULL) { -+ g_critical ("%s: %s", G_STRFUNC, error->message); -+ g_error_free (error); -+ } -+} -Index: evolution-2.27.2/configure.ac -=================================================================== ---- evolution-2.27.2.orig/configure.ac -+++ evolution-2.27.2/configure.ac -@@ -965,6 +965,9 @@ if test "x${enable_mono}" = "xyes"; then - evolution-sharp, ndesk-dbus-1.0, ndesk-dbus-glib-1.0]) - AC_SUBST(MONO_PLATFORM_CFLAGS) - AC_SUBST(MONO_PLATFORM_LIBS) -+ PKG_CHECK_MODULES(DBUS, dbus-glib-1) -+ AC_SUBST(DBUS_CFLAGS) -+ AC_SUBST(DBUS_LIBS) - MONO_BASED_PLUGINS="" - - dnl Sharepoint account setup -@@ -976,7 +979,7 @@ if test "x${enable_mono}" = "xyes"; then - PKG_CHECK_MODULES(ICE_DESKTOP, [Novell.IceDesktop, solvent]) - AC_SUBST(ICE_DESKTOP_CFLAGS) - AC_SUBST(ICE_DESKTOP_LIBS) -- MONO_BASED_PLUGINS="$MONO_BASED_PLUGINS sharepoint-account-setup" -+ MONO_BASED_PLUGINS="$MONO_BASED_PLUGINS sharepoint-account-setup sharepoint-features" - fi - fi - AC_SUBST(MONO_CFLAGS) -@@ -2161,6 +2164,7 @@ plugins/tnef-attachments/Makefile - plugins/vcard-inline/Makefile - plugins/webdav-account-setup/Makefile - plugins/sharepoint-account-setup/Makefile -+plugins/sharepoint-features/Makefile - smime/Makefile - smime/lib/Makefile - smime/gui/Makefile diff --git a/sp-process-meetings.diff b/sp-process-meetings.diff deleted file mode 100644 index 36df3b8..0000000 --- a/sp-process-meetings.diff +++ /dev/null @@ -1,440 +0,0 @@ -commit 18a2f5f1206e7a7583db2b8c47862f79abf13e50 -Author: chenthill -Date: Tue Dec 30 05:00:06 2008 +0530 - - process meetings. - -diff --git a/calendar/gui/dialogs/comp-editor.c b/calendar/gui/dialogs/comp-editor.c -index 8d889bd..e1555d8 100644 ---- a/calendar/gui/dialogs/comp-editor.c -+++ b/calendar/gui/dialogs/comp-editor.c -@@ -792,6 +792,13 @@ save_comp (CompEditor *editor) - - e_cal_component_set_attachment_list (priv->comp, - get_attachment_list (editor)); -+ -+ /* Give a chance for plugins to act on the component */ -+ ECalEvent *ec_event = e_cal_event_peek (); -+ ECalEventTargetCompEditor *target; -+ target = e_cal_event_target_comp_editor (ec_event, editor); -+ e_event_emit ((EEvent *) ec_event, "editor.commit", (EEventTarget *) target); -+ - icalcomp = e_cal_component_get_icalcomponent (priv->comp); - /* send the component to the server */ - if (!cal_comp_is_on_server (priv->comp, priv->client)) { -diff --git a/plugins/sharepoint-features/Makefile.am b/plugins/sharepoint-features/Makefile.am -index f101059..9123b66 100644 ---- a/plugins/sharepoint-features/Makefile.am -+++ b/plugins/sharepoint-features/Makefile.am -@@ -19,7 +19,9 @@ plugin_DATA = \ - plugin_LTLIBRARIES = liborg-gnome-sharepoint-features.la - - liborg_gnome_sharepoint_features_la_SOURCES = \ -- meeting-workspace.c -+ process-meeting.c \ -+ comp-commit.c \ -+ meeting-workspace.c - - liborg_gnome_sharepoint_features_la_LIBADD = \ - $(top_builddir)/e-util/libeutil.la \ -@@ -33,6 +35,7 @@ glade_DATA = meetingworkspaces.glade - - EXTRA_DIST = \ - org-gnome-sharepoint-features.eplug.xml \ -+ org-gnome-share-point.error.xml \ - $(glade_DATA) - - BUILT_SOURCES = org-gnome-sharepoint-features.eplug -diff --git a/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml b/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml -index d59db73..3e318fc 100644 ---- a/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml -+++ b/plugins/sharepoint-features/org-gnome-sharepoint-features.eplug.xml -@@ -16,5 +16,19 @@ - target="compeditor" - /> - -+ -+ -+ -+ -+ -+ -+ -+ -+ -+ - - - diff --git a/plugins/sharepoint-features/comp-commit.c b/plugins/sharepoint-features/comp-commit.c -new file mode 100644 -index 0000000..b87df4f ---- /dev/null -+++ b/plugins/sharepoint-features/comp-commit.c -@@ -0,0 +1,88 @@ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+void org_gnome_comp_commit (EPlugin *ep, ECalEventTargetCompEditor *target); -+ -+static icaltimezone* -+resolve_tzid_cb (const char *tzid, gpointer data) -+{ -+ ECal *client; -+ icaltimezone *zone = NULL; -+ -+ g_return_val_if_fail (data != NULL, NULL); -+ g_return_val_if_fail (E_IS_CAL (data), NULL); -+ -+ client = E_CAL (data); -+ -+ /* Try to find the builtin timezone first. */ -+ zone = icaltimezone_get_builtin_timezone_from_tzid (tzid); -+ -+ if (!zone) { -+ /* FIXME: Handle errors. */ -+ e_cal_get_timezone (client, tzid, &zone, NULL); -+ } -+ -+ return zone; -+} -+ -+static gboolean -+recur_cb (ECalComponent *comp, time_t start, time_t end, gpointer data) -+{ -+ time_t *end_date = data; -+ -+ *end_date = end; -+ -+ return TRUE; -+} -+ -+void -+org_gnome_comp_commit (EPlugin *ep, ECalEventTargetCompEditor *target) -+{ -+ CompEditor *editor = target->editor; -+ CompEditorFlags flags; -+ ECal *client; -+ ECalComponent *comp; -+ ECalComponentDateTime cdt; -+ icaltimezone *zone = NULL; -+ const char *uri; -+ time_t end_date = -1; -+ -+ client = comp_editor_get_client (editor); -+ uri = e_cal_get_uri (client); -+ flags = comp_editor_get_flags (editor); -+ -+ if (!g_str_has_prefix (uri, "sharepoint://")) -+ return; -+ -+ comp = comp_editor_get_comp (editor); -+ -+ if (!e_cal_component_has_recurrences (comp)) -+ return; -+ -+ e_cal_component_get_dtstart (comp, &cdt); -+ if (cdt.tzid != NULL) { -+ /* FIXME Will e_cal_get_timezone really not return builtin zones? */ -+ if (!e_cal_get_timezone (client, cdt.tzid, &zone, NULL)) -+ zone = icaltimezone_get_builtin_timezone_from_tzid (cdt.tzid); -+ } -+ e_cal_component_free_datetime (&cdt); -+ -+ e_cal_recur_generate_instances (comp, -1, -1, -+ recur_cb, &end_date, -+ resolve_tzid_cb, -+ client, zone); -+ -+ char *end = g_strdup_printf ("%ld",end_date); -+ e_cal_component_set_x_prop (comp, "X-SP-RECUR-ENDDATE", end); -+ g_free (end); -+ g_print ("DEBUG: the component to be saved is %s \n", e_cal_component_get_as_string (comp)); -+} -diff --git a/plugins/sharepoint-features/org-gnome-share-point.error.xml b/plugins/sharepoint-features/org-gnome-share-point.error.xml -new file mode 100644 -index 0000000..d656dea ---- /dev/null -+++ b/plugins/sharepoint-features/org-gnome-share-point.error.xml -@@ -0,0 +1,5 @@ -+ -+ -+ -+ -+ -diff --git a/plugins/sharepoint-features/process-meeting.c b/plugins/sharepoint-features/process-meeting.c -new file mode 100644 -index 0000000..917166b ---- /dev/null -+++ b/plugins/sharepoint-features/process-meeting.c -@@ -0,0 +1,258 @@ -+/* -+ * -+ * This program is free software; you can redistribute it and/or -+ * modify it under the terms of the GNU Lesser General Public -+ * License as published by the Free Software Foundation; either -+ * version 2 of the License, or (at your option) version 3. -+ * -+ * This program is distributed in the hope that it will be useful, -+ * but WITHOUT ANY WARRANTY; without even the implied warranty of -+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ * Lesser General Public License for more details. -+ * -+ * You should have received a copy of the GNU Lesser General Public -+ * License along with the program; if not, see -+ * -+ * -+ * Authors: -+ * Chenthill Palanisamy (pchenthill@novell.com) -+ * -+ * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) -+ * -+ */ -+ -+#ifdef HAVE_CONFIG_H -+#include -+#endif -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+typedef struct { -+ ECal *ecal; -+ icalcomponent *icalcomp; -+} ReceiveData; -+ -+ECalendarView *c_view; -+ -+void org_gnome_process_meeting (EPlugin *ep, ECalPopupTargetSelect *target); -+static void on_accept_meeting (EPopup *ep, EPopupItem *pitem, void *data); -+static void on_accept_meeting_tentative (EPopup *ep, EPopupItem *pitem, void *data); -+static void on_decline_meeting (EPopup *ep, EPopupItem *pitem, void *data); -+ -+static EPopupItem popup_items[] = { -+{ E_POPUP_ITEM, "41.accept", N_("Accept"), on_accept_meeting, NULL, GTK_STOCK_APPLY, 0, E_CAL_POPUP_SELECT_NOTEDITING | E_CAL_POPUP_SELECT_MEETING}, -+{ E_POPUP_ITEM, "42.accept", N_("Accept Tentatively"), on_accept_meeting_tentative, NULL, GTK_STOCK_DIALOG_QUESTION, 0, E_CAL_POPUP_SELECT_NOTEDITING | E_CAL_POPUP_SELECT_MEETING}, -+{ E_POPUP_ITEM, "43.decline", N_("Decline"), on_decline_meeting, NULL, GTK_STOCK_CANCEL, 0, E_CAL_POPUP_SELECT_NOTEDITING} -+}; -+ -+static void -+popup_free (EPopup *ep, GSList *items, void *data) -+{ -+ g_slist_free (items); -+ items = NULL; -+} -+ -+void -+org_gnome_process_meeting (EPlugin *ep, ECalPopupTargetSelect *target) -+{ -+ GSList *menus = NULL; -+ GList *selected; -+ int i = 0; -+ static int first = 0; -+ const char *uri = NULL; -+ ECalendarView *cal_view = E_CALENDAR_VIEW (target->target.widget); -+ -+ c_view = cal_view; -+ selected = e_calendar_view_get_selected_events (cal_view); -+ if (selected) { -+ ECalendarViewEvent *event = (ECalendarViewEvent *) selected->data; -+ -+ uri = e_cal_get_uri (event->comp_data->client); -+ } else -+ return; -+ -+ if (!uri) -+ return; -+ -+ if (! g_strrstr (uri, "sharepoint://")) -+ return ; -+ -+ /* for translation*/ -+ if (!first) { -+ popup_items[0].label = _(popup_items[0].label); -+ } -+ -+ first++; -+ -+ for (i = 0; i < sizeof (popup_items) / sizeof (popup_items[0]); i++) -+ menus = g_slist_prepend (menus, &popup_items[i]); -+ -+ e_popup_add_items (target->target.popup, menus, NULL, popup_free, NULL); -+} -+ -+static void -+finalize_receive_data (ReceiveData *r_data) -+{ -+ if (r_data->ecal) { -+ g_object_unref (r_data->ecal); -+ r_data->ecal = NULL; -+ } -+ -+ if (r_data->ecal) { -+ icalcomponent_free (r_data->icalcomp); -+ r_data->icalcomp = NULL; -+ } -+ -+ g_free (r_data); -+} -+ -+static gboolean -+receive_objects (gpointer data) -+{ -+ GError *error = NULL; -+ ReceiveData *r_data = data; -+ -+ -+ icalcomponent_set_method (r_data->icalcomp, ICAL_METHOD_REQUEST); -+ -+ if (!e_cal_receive_objects (r_data->ecal, r_data->icalcomp, &error)) { -+ /* FIXME show an error dialog */ -+ g_error_free (error); -+ } -+ -+ finalize_receive_data (r_data); -+ return TRUE; -+} -+ -+static icalproperty * -+find_attendee (icalcomponent *ical_comp, const char *address) -+{ -+ icalproperty *prop; -+ -+ if (address == NULL) -+ return NULL; -+ -+ for (prop = icalcomponent_get_first_property (ical_comp, ICAL_ATTENDEE_PROPERTY); -+ prop != NULL; -+ prop = icalcomponent_get_next_property (ical_comp, ICAL_ATTENDEE_PROPERTY)) { -+ icalvalue *value; -+ const char *attendee; -+ char *text; -+ -+ value = icalproperty_get_value (prop); -+ if (!value) -+ continue; -+ -+ attendee = icalvalue_get_string (value); -+ -+ text = g_strdup (itip_strip_mailto (attendee)); -+ text = g_strstrip (text); -+ if (!g_ascii_strcasecmp (address, text)) { -+ g_free (text); -+ break; -+ } -+ g_free (text); -+ } -+ -+ return prop; -+} -+static void -+change_status (icalcomponent *ical_comp, const char *address, icalparameter_partstat status) -+{ -+ icalproperty *prop; -+ -+ prop = find_attendee (ical_comp, address); -+ if (prop) { -+ icalparameter *param; -+ -+ icalproperty_remove_parameter (prop, ICAL_PARTSTAT_PARAMETER); -+ param = icalparameter_new_partstat (status); -+ icalproperty_add_parameter (prop, param); -+ } else { -+ icalparameter *param; -+ -+ prop = icalproperty_new_attendee (address); -+ icalcomponent_add_property (ical_comp, prop); -+ -+ param = icalparameter_new_role (ICAL_ROLE_OPTPARTICIPANT); -+ icalproperty_add_parameter (prop, param); -+ -+ param = icalparameter_new_partstat (status); -+ icalproperty_add_parameter (prop, param); -+ } -+} -+ -+static void -+process_meeting (ECalendarView *cal_view, icalparameter_partstat status) -+{ -+ GList *selected; -+ icalcomponent *clone; -+ -+ selected = e_calendar_view_get_selected_events (cal_view); -+ if (selected) { -+ ECalendarViewEvent *event = (ECalendarViewEvent *) selected->data; -+ ECalComponent *comp = e_cal_component_new (); -+ ReceiveData *r_data = g_new0 (ReceiveData, 1); -+ gboolean recurring = FALSE; -+ GThread *thread = NULL; -+ GError *error = NULL; -+ char *address = NULL; -+ -+ e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (event->comp_data->icalcomp)); -+ address = itip_get_comp_attendee (comp, event->comp_data->client); -+ -+ if (e_cal_component_has_recurrences (comp) || e_cal_component_is_instance (comp)) -+ recurring = TRUE; -+ -+ /* Free comp */ -+ g_object_unref (comp); -+ comp = NULL; -+ -+ clone = icalcomponent_new_clone (event->comp_data->icalcomp); -+ change_status (clone, address, status); -+ -+ r_data->ecal = g_object_ref (event->comp_data->client); -+ r_data->icalcomp = clone; -+ -+ g_print ("The updated meeting is %s \n", icalcomponent_as_ical_string (clone)); -+ -+ thread = g_thread_create ((GThreadFunc) receive_objects, r_data , FALSE, &error); -+ if (!thread) { -+ g_warning (G_STRLOC ": %s", error->message); -+ g_error_free (error); -+ } -+ } -+} -+ -+/*FIXME the data does not give us the ECalendarView object. -+ we should remove the global c_view variable once we get it from the data*/ -+static void -+on_accept_meeting (EPopup *ep, EPopupItem *pitem, void *data) -+{ -+ ECalendarView *cal_view = c_view; -+ -+ process_meeting (cal_view, ICAL_PARTSTAT_ACCEPTED); -+} -+static void -+on_accept_meeting_tentative (EPopup *ep, EPopupItem *pitem, void *data) -+{ -+ ECalendarView *cal_view = c_view; -+ -+ process_meeting (cal_view, ICAL_PARTSTAT_TENTATIVE); -+} -+ -+static void -+on_decline_meeting (EPopup *ep, EPopupItem *pitem, void *data) -+{ -+ ECalendarView *cal_view = c_view; -+ -+ process_meeting (cal_view, ICAL_PARTSTAT_DECLINED); -+} diff --git a/sp-tasks-setup.diff b/sp-tasks-setup.diff deleted file mode 100644 index 5dc6a5b..0000000 --- a/sp-tasks-setup.diff +++ /dev/null @@ -1,236 +0,0 @@ -diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c -index c97f61c..16fa928 100644 ---- a/calendar/gui/e-cal-model.c -+++ b/calendar/gui/e-cal-model.c -@@ -1413,6 +1413,12 @@ ensure_dates_are_in_default_zone (icalcomponent *icalcomp) - dt = icaltime_convert_to_zone (dt, zone); - icalcomponent_set_dtend (icalcomp, dt); - } -+ -+ dt = icalcomponent_get_due (icalcomp); -+ if (dt.is_utc) { -+ dt = icaltime_convert_to_zone (dt, zone); -+ icalcomponent_set_due (icalcomp, dt); -+ } - } - - static void -diff --git a/plugins/sharepoint-account-setup/SharepointAccount.cs b/plugins/sharepoint-account-setup/SharepointAccount.cs -index 5009e98..61959ac 100644 ---- a/plugins/sharepoint-account-setup/SharepointAccount.cs -+++ b/plugins/sharepoint-account-setup/SharepointAccount.cs -@@ -38,10 +38,10 @@ namespace Sharepoint - initialized = true; - } - -+ ConnectToICEcoreDaemon (); - - sessionBus = Bus.Session.GetObject ("org.freedesktop.DBus", - new ObjectPath ("/org/freedesktop/DBus")); -- sessionBus.NameOwnerChanged += OnDBusNameOwnerChanged; - - // Force the daemon to start up if it's not already running - if (Bus.Session.NameHasOwner (DaemonNamespace) == false) -@@ -49,7 +49,7 @@ namespace Sharepoint - Bus.Session.StartServiceByName (DaemonNamespace); - } - -- ConnectToICEcoreDaemon (); -+ sessionBus.NameOwnerChanged += OnDBusNameOwnerChanged; - try { deskIceDaemon.CheckAuthentication (String.Empty); } - catch (NotAuthenticatedException) - { return; } -@@ -70,7 +70,7 @@ namespace Sharepoint - public void DeleteAccount () - { - // we remove all share calendars. We currently support creating only one sharepoint account -- SharepointSource spSource = new SharepointSource (CalSourceType.Event, null, null); -+ SharepointSource spSource = new SharepointSource (null, null); - spSource.DeleteSources (); - spSource.Sync (); - } -@@ -89,7 +89,7 @@ namespace Sharepoint - { - Console.WriteLine ("Getting folders "); - AccountInfo accountInfo = deskIceDaemon.GetDefaultAccountInfo (); -- SharepointSource spSource = new SharepointSource (CalSourceType.Event, accountInfo.username, -+ SharepointSource spSource = new SharepointSource (accountInfo.username, - accountInfo.hostUrl); - - if (spSource.AccountExists) { -@@ -100,20 +100,17 @@ namespace Sharepoint - FileInfo [] workspaces = deskIceDaemon.EnumerateWorkspaces (); - foreach (FileInfo workspace in workspaces) - { -- FileInfo[] folders = null; -+ Folder[] folders = null; - -- if (spSource.srcType == CalSourceType.Event) -- folders = deskIceDaemon.GetCalendarFolders (string.Empty, workspace.Id); -- // else get task folders -+ folders = deskIceDaemon.GetCalendarFolders (string.Empty, workspace.Id); - -- - if (folders.Length == 0) - continue; - - spSource.CreateSources (workspace, folders); - } -+ - spSource.Sync (); -- Console.WriteLine ("******* Got folders "); - backgroundThread = null; - RemoveHandlers (); - } -diff --git a/plugins/sharepoint-account-setup/SharepointSource.cs b/plugins/sharepoint-account-setup/SharepointSource.cs -index c61fcf0..e9dad79 100644 ---- a/plugins/sharepoint-account-setup/SharepointSource.cs -+++ b/plugins/sharepoint-account-setup/SharepointSource.cs -@@ -16,33 +16,36 @@ namespace Sharepoint - - public class SharepointSource - { -- public CalSourceType srcType; - readonly string calPath = "/apps/evolution/calendar/sources"; - readonly string taskPath = "/apps/evolution/tasks/sources"; - static Client client; -- SourceList srcList; -+ SourceList CalsrcList; -+ SourceList TasksrcList; - readonly string baseUri = "sharepoint://"; - string username; - string hostUrl; - -- public SharepointSource(CalSourceType type, string userName, string hosturl) -+ public SharepointSource(string userName, string hosturl) - { -- srcType = type; - client = new Client (); - username = userName; - hostUrl = hosturl; - -- if (type == CalSourceType.Event) -- srcList = new SourceList (calPath); -- else -- srcList = new SourceList (taskPath); -+ CalsrcList = new SourceList (calPath); -+ TasksrcList = new SourceList (taskPath); - } - - public bool AccountExists - { - get - { -- foreach (SourceGroup group in srcList.Groups) -+ foreach (SourceGroup group in CalsrcList.Groups) -+ { -+ if (group.BaseUri == baseUri) -+ return true; -+ } -+ -+ foreach (SourceGroup group in TasksrcList.Groups) - { - if (group.BaseUri == baseUri) - return true; -@@ -52,45 +55,85 @@ namespace Sharepoint - } - } - -- public void CreateSources (FileInfo workspace, FileInfo [] folders) -+ public void CreateSources (FileInfo workspace, Folder [] folders) - { -- SourceGroup group = new SourceGroup (workspace.DisplayName, baseUri); -+ SourceGroup calGroup = new SourceGroup (workspace.DisplayName, baseUri); -+ SourceGroup taskGroup = new SourceGroup (workspace.DisplayName, baseUri); -+ bool addCalGroup = false; -+ bool addTaskGroup = false; - -- foreach (FileInfo folder in folders) -+ foreach (Folder folder in folders) - { -- Console.WriteLine (workspace.DisplayName + " folder " + folder.DisplayName); -- string relativeUri = hostUrl + ":" + folder.Id; -- Source source= new Source (folder.DisplayName, relativeUri); -+ Console.WriteLine (workspace.DisplayName + " folder " + folder.Title + " " + folder.Type); -+ string relativeUri = hostUrl + ":" + folder.ID; -+ Source source= new Source (folder.Title, relativeUri); - source.SetProperty ("username", username); - source.SetProperty ("workspaceid", workspace.Id); -- source.SetProperty ("Id", folder.Id); -+ source.SetProperty ("Id", folder.ID); - source.SetProperty ("Auth","True"); -- group.AddSource (source, -1); -+ source.SetProperty ("delete","no"); -+ if (folder.Type == FolderType.Task) -+ { -+ taskGroup.AddSource (source, -1); -+ addTaskGroup = true; -+ } else if (folder.Type == FolderType.Calendar) -+ { -+ calGroup.AddSource (source, -1); -+ addCalGroup = true; -+ } -+ } -+ -+ -+ if (addCalGroup) -+ { -+ calGroup.SetProperty ("username", username); -+ CalsrcList.AddGroup (calGroup, -1); -+ } -+ -+ if (addTaskGroup) -+ { -+ taskGroup.SetProperty ("username", username); -+ TasksrcList.AddGroup (taskGroup, -1); - } -- group.SetProperty ("username", username); -- srcList.AddGroup (group, -1); - } - - public void Sync () - { -- srcList.Sync (); -+ CalsrcList.Sync (); -+ TasksrcList.Sync (); - } - - public void DeleteSources () - { -- List groupsToRemove = new List (); -- foreach (SourceGroup group in srcList.Groups) -+ List calGroupsToRemove = new List (); -+ foreach (SourceGroup group in CalsrcList.Groups) -+ { -+ if (group.BaseUri.StartsWith (baseUri)) -+ { -+ /// Currently we remove all sharepoint calendars -+ calGroupsToRemove.Add (group); -+ } -+ } -+ -+ foreach (SourceGroup group in calGroupsToRemove) -+ { -+ CalsrcList.RemoveGroup (group); -+ } -+ -+ List TaskGroupsToRemove = new List (); -+ -+ foreach (SourceGroup group in TasksrcList.Groups) - { - if (group.BaseUri.StartsWith (baseUri)) - { - /// Currently we remove all sharepoint calendars -- groupsToRemove.Add (group); -+ TaskGroupsToRemove.Add (group); - } - } - -- foreach (SourceGroup group in groupsToRemove) -+ foreach (SourceGroup group in TaskGroupsToRemove) - { -- srcList.RemoveGroup (group); -+ TasksrcList.RemoveGroup (group); - } - } - }