From cea054cd54d84479352a43bbabc19c9ce9af5efb Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 8 Aug 2008 04:26:12 +0000 Subject: Merge revisions 35747:35930 from trunk. svn path=/branches/kill-bonobo/; revision=35931 --- mail/em-folder-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index aae43e2441..551d14bcec 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -81,7 +81,7 @@ extern CamelSession *session; static gboolean emfu_is_special_local_folder (const char *name) { - return (!strcmp (name, "Drafts") || !strcmp (name, "Inbox") || !strcmp (name, "Outbox") || !strcmp (name, "Sent")); + return (!strcmp (name, "Drafts") || !strcmp (name, "Inbox") || !strcmp (name, "Outbox") || !strcmp (name, "Sent") || !strcmp (name, "Templates")); } struct _EMCopyFolders { -- cgit v1.2.3 From 7ade227e6409c98a4010992450e111cf7bb10520 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 14 Aug 2008 20:19:12 +0000 Subject: Merge revisions 35951:35992 from trunk. svn path=/branches/kill-bonobo/; revision=35994 --- mail/em-folder-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 551d14bcec..b1ec99f25e 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -51,7 +51,6 @@ #include "e-util/e-mktemp.h" #include "e-util/e-request.h" -#include "e-util/e-icon-factory.h" #include "e-util/e-error.h" -- cgit v1.2.3 From c0a255eb90769638d57ae4122932f75c46e4e531 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 11 Sep 2008 15:34:29 +0000 Subject: Merge revisions 36016:36303 from trunk. svn path=/branches/kill-bonobo/; revision=36307 --- mail/em-folder-utils.c | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index b1ec99f25e..ef0af85bd2 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -1,23 +1,22 @@ - -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ /* - * Authors: Jeffrey Stedfast + * 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. * - * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) + * You should have received a copy of the GNU Lesser General Public + * License along with the program; if not, see * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. * - * 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 General Public License for more details. + * Authors: + * Jeffrey Stedfast * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) * */ @@ -174,7 +173,7 @@ emft_copy_folders__exec (struct _EMCopyFolders *m) camel_folder_transfer_messages_to (fromfolder, uids, tofolder, NULL, m->delete, &m->base.ex); camel_folder_free_uids (fromfolder, uids); - if (m->delete) + if (m->delete && !camel_exception_is_set (&m->base.ex)) camel_folder_sync(fromfolder, TRUE, NULL); camel_object_unref (fromfolder); -- cgit v1.2.3 From b2cda1d0c6d44f53f71bad9e256f41188677dfba Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 1 Oct 2008 20:56:04 +0000 Subject: Merge revisions 36016:36533 from trunk. svn path=/branches/kill-bonobo/; revision=36534 --- mail/em-folder-utils.c | 87 ++++++++++---------------------------------------- 1 file changed, 17 insertions(+), 70 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index ef0af85bd2..195b66a815 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -367,84 +367,32 @@ em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, int delete) } static void -emfu_delete_rec (CamelStore *store, CamelFolderInfo *fi, CamelException *ex) +emfu_delete_done (CamelFolder *folder, gboolean removed, CamelException *ex, void *data) { - while (fi) { - CamelFolder *folder; + GtkWidget *dialog = data; - if (fi->child) { - emfu_delete_rec (store, fi->child, ex); - if (camel_exception_is_set (ex)) - return; - } - - d(printf ("deleting folder '%s'\n", fi->full_name)); - - /* shouldn't camel do this itself? */ - if (camel_store_supports_subscriptions (store)) - camel_store_unsubscribe_folder (store, fi->full_name, NULL); - - if (!(folder = camel_store_get_folder (store, fi->full_name, 0, ex))) - return; - - if (!CAMEL_IS_VEE_FOLDER (folder)) { - GPtrArray *uids = camel_folder_get_uids (folder); - int i; - - camel_folder_freeze (folder); - for (i = 0; i < uids->len; i++) - camel_folder_delete_message (folder, uids->pdata[i]); - - camel_folder_free_uids (folder, uids); - - camel_folder_sync (folder, TRUE, NULL); - camel_folder_thaw (folder); - } - - camel_store_delete_folder (store, fi->full_name, ex); - if (camel_exception_is_set (ex)) - return; - - fi = fi->next; + if (ex && camel_exception_is_set (ex)) { + GtkWidget *w = e_error_new (NULL, + "mail:no-delete-folder", folder->full_name, camel_exception_get_description (ex), NULL); + em_utils_show_error_silent (w); + camel_exception_clear (ex); } -} -static void -emfu_delete_folders (CamelStore *store, const char *full_name, CamelException *ex) -{ - guint32 flags = CAMEL_STORE_FOLDER_INFO_RECURSIVE | CAMEL_STORE_FOLDER_INFO_FAST | CAMEL_STORE_FOLDER_INFO_SUBSCRIBED; - CamelFolderInfo *fi; - - fi = camel_store_get_folder_info (store, full_name, flags, ex); - if (camel_exception_is_set (ex)) - return; - - emfu_delete_rec (store, fi, ex); - camel_store_free_folder_info (store, fi); + if (dialog) + gtk_widget_destroy (dialog); } static void emfu_delete_response (GtkWidget *dialog, int response, gpointer data) { - CamelStore *store; - CamelException ex; - char *full_name; - - full_name = g_object_get_data ((GObject *) dialog, "full_name"); - store = g_object_get_data ((GObject *) dialog, "store"); - if (response == GTK_RESPONSE_OK) { - camel_exception_init (&ex); - emfu_delete_folders (store, full_name, &ex); - if (camel_exception_is_set (&ex)) { - GtkWidget *w = e_error_new(NULL, - "mail:no-delete-folder", full_name, ex.desc, NULL); - em_utils_show_error_silent (w); - camel_exception_clear (&ex); - } - } + /* disable dialog until operation finishes */ + gtk_widget_set_sensitive (dialog, FALSE); - gtk_widget_destroy (dialog); + mail_remove_folder (g_object_get_data ((GObject *) dialog, "folder"), emfu_delete_done, dialog); + } else { + gtk_widget_destroy (dialog); + } } /* FIXME: these functions must be documented */ @@ -462,13 +410,12 @@ em_folder_utils_delete_folder (CamelFolder *folder) return; } - camel_object_ref (folder->parent_store); + camel_object_ref (folder); dialog = e_error_new(NULL, (folder->parent_store && CAMEL_IS_VEE_STORE(folder->parent_store))?"mail:ask-delete-vfolder":"mail:ask-delete-folder", folder->full_name, NULL); - g_object_set_data_full ((GObject *) dialog, "full_name", g_strdup (folder->full_name), g_free); - g_object_set_data_full ((GObject *) dialog, "store", folder->parent_store, camel_object_unref); + g_object_set_data_full ((GObject *) dialog, "folder", folder, camel_object_unref); g_signal_connect (dialog, "response", G_CALLBACK (emfu_delete_response), NULL); gtk_widget_show (dialog); } -- cgit v1.2.3 From 54b80a7271e8ce1b2f3ccc68bb553940a24b80e2 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 17 Oct 2008 03:48:03 +0000 Subject: Get the mail folder tree compiling, though I'm not yet sure why it's not showing anything. Probably something stupid. Also enabled the composer. svn path=/branches/kill-bonobo/; revision=36623 --- mail/em-folder-utils.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 195b66a815..9726f6c552 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -59,12 +59,10 @@ #include "mail-ops.h" #include "mail-tools.h" #include "mail-config.h" -#include "mail-component.h" #include "mail-vfolder.h" #include "em-utils.h" #include "em-popup.h" -#include "em-marshal.h" #include "em-folder-tree.h" #include "em-folder-tree-model.h" #include "em-folder-utils.h" @@ -72,6 +70,8 @@ #include "em-folder-selection.h" #include "em-folder-properties.h" +#include "e-mail-shell-module.h" + #define d(x) extern CamelSession *session; @@ -270,6 +270,7 @@ emfu_copy_folder_selected (const char *uri, void *data) { struct _copy_folder_data *cfd = data; CamelStore *fromstore = NULL, *tostore = NULL; + CamelStore *local_store; char *tobase = NULL; CamelException ex; CamelURL *url; @@ -281,13 +282,15 @@ emfu_copy_folder_selected (const char *uri, void *data) camel_exception_init (&ex); + local_store = e_mail_shell_module_get_local_store (mail_shell_module); + if (!(fromstore = camel_session_get_store (session, cfd->fi->uri, &ex))) { e_error_run(NULL, cfd->delete?"mail:no-move-folder-notexist":"mail:no-copy-folder-notexist", cfd->fi->full_name, uri, ex.desc, NULL); goto fail; } - if (cfd->delete && fromstore == mail_component_peek_local_store (NULL) && emfu_is_special_local_folder (cfd->fi->full_name)) { + if (cfd->delete && fromstore == local_store && emfu_is_special_local_folder (cfd->fi->full_name)) { GtkWidget *w = e_error_new (NULL, "mail:no-rename-special-folder", cfd->fi->full_name, NULL); em_utils_show_error_silent (w); @@ -399,12 +402,12 @@ emfu_delete_response (GtkWidget *dialog, int response, gpointer data) void em_folder_utils_delete_folder (CamelFolder *folder) { - CamelStore *local; + CamelStore *local_store; GtkWidget *dialog; - local = mail_component_peek_local_store (NULL); + local_store = e_mail_shell_module_get_local_store (mail_shell_module); - if (folder->parent_store == local && emfu_is_special_local_folder (folder->full_name)) { + if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { dialog = e_error_new (NULL, "mail:no-delete-special-folder", folder->full_name, NULL); em_utils_show_error_silent (dialog); return; @@ -427,14 +430,14 @@ em_folder_utils_rename_folder (CamelFolder *folder) { char *prompt, *new_name; const char *p; - CamelStore *local; + CamelStore *local_store; gboolean done = FALSE; size_t base_len; - local = mail_component_peek_local_store (NULL); + local_store = e_mail_shell_module_get_local_store (mail_shell_module); /* don't allow user to rename one of the special local folders */ - if (folder->parent_store == local && emfu_is_special_local_folder (folder->full_name)) { + if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { e_error_run(NULL, "mail:no-rename-special-folder", folder->full_name, NULL); return; @@ -684,7 +687,7 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft) EMFolderTreeModel *model; GtkWidget *dialog; - model = mail_component_peek_tree_model (mail_component_peek ()); + model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); dialog = em_folder_selector_create_new (folder_tree, 0, _("Create folder"), _("Specify where to create the folder:")); -- cgit v1.2.3 From e7a31c5035a0afeed6c1675e30487c1e2bdc139f Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 24 Oct 2008 23:02:33 +0000 Subject: Commit recent work so I can merge from trunk. svn path=/branches/kill-bonobo/; revision=36684 --- mail/em-folder-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 9726f6c552..aa9e6aa402 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -690,7 +690,7 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft) model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); - dialog = em_folder_selector_create_new (folder_tree, 0, _("Create folder"), _("Specify where to create the folder:")); + dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) em_folder_selector_set_selected ((EMFolderSelector *) dialog, folderinfo->uri); g_signal_connect (dialog, "response", G_CALLBACK (emfu_popup_new_folder_response), emft); -- cgit v1.2.3 From 32ffc3ca1ca80b2d843fbe28da7deab35fabcbf1 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 25 Jan 2009 03:28:18 +0000 Subject: Make the sidebar icon follow the folder icon. Fix more runtime warnings. svn path=/branches/kill-bonobo/; revision=37130 --- mail/em-folder-utils.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index aa9e6aa402..cb1c333bfb 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -40,8 +40,6 @@ #include #include -#include -#include #include #include #include @@ -696,3 +694,38 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft) g_signal_connect (dialog, "response", G_CALLBACK (emfu_popup_new_folder_response), emft); gtk_widget_show (dialog); } + +const gchar * +em_folder_utils_get_icon_name (guint32 flags) +{ + const gchar *icon_name; + + switch (flags & CAMEL_FOLDER_TYPE_MASK) { + case CAMEL_FOLDER_TYPE_INBOX: + icon_name = "mail-inbox"; + break; + case CAMEL_FOLDER_TYPE_OUTBOX: + icon_name = "mail-outbox"; + break; + case CAMEL_FOLDER_TYPE_TRASH: + icon_name = "user-trash"; + break; + case CAMEL_FOLDER_TYPE_JUNK: + icon_name = "mail-mark-junk"; + break; + case CAMEL_FOLDER_TYPE_SENT: + icon_name = "mail-sent"; + break; + default: + if (flags & CAMEL_FOLDER_SHARED_TO_ME) + icon_name = "stock_shared-to-me"; + else if (flags & CAMEL_FOLDER_SHARED_BY_ME) + icon_name = "stock_shared-by-me"; + else if (flags & CAMEL_FOLDER_VIRTUAL) + icon_name = "folder-saved-search"; + else + icon_name = "folder"; + } + + return icon_name; +} -- cgit v1.2.3 From faf1c14c11f3e6026f786e9587715c10b13c723e Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 25 Apr 2009 10:16:00 -0400 Subject: Manual conflict resolution --- mail/em-folder-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 64e9dcf117..ff93c9b5a9 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -403,7 +403,6 @@ em_folder_utils_delete_folder (CamelFolder *folder) { CamelStore *local_store; GtkWidget *dialog; - char *uri; int flags = 0; local_store = e_mail_shell_module_get_local_store (mail_shell_module); -- cgit v1.2.3 From 16e2beab9e4d412399f495f6165d27da80cb3675 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 7 May 2009 16:38:32 -0400 Subject: Adapt mail to EShellBackend changes. Again, builds but not tested. Lots of compiler warnings to clean up, but I don't have the energy for it. This was pretty grueling. --- mail/em-folder-utils.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index ff93c9b5a9..510bcf782e 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -69,7 +69,7 @@ #include "em-folder-selection.h" #include "em-folder-properties.h" -#include "e-mail-shell-module.h" +#include "e-mail-shell-backend.h" #define d(x) @@ -281,7 +281,7 @@ emfu_copy_folder_selected (const char *uri, void *data) camel_exception_init (&ex); - local_store = e_mail_shell_module_get_local_store (mail_shell_module); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); if (!(fromstore = camel_session_get_store (session, cfd->fi->uri, &ex))) { e_error_run(NULL, @@ -405,7 +405,7 @@ em_folder_utils_delete_folder (CamelFolder *folder) GtkWidget *dialog; int flags = 0; - local_store = e_mail_shell_module_get_local_store (mail_shell_module); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { dialog = e_error_new (NULL, "mail:no-delete-special-folder", folder->full_name, NULL); @@ -440,7 +440,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) gboolean done = FALSE; size_t base_len; - local_store = e_mail_shell_module_get_local_store (mail_shell_module); + local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); /* don't allow user to rename one of the special local folders */ if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { @@ -694,7 +694,7 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, EMFolderTreeModel *model; GtkWidget *dialog; - model = e_mail_shell_module_get_folder_tree_model (mail_shell_module); + model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); -- cgit v1.2.3 From e4afd3f9fb962ea1295a0657ec9f83a427829171 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 26 May 2009 23:21:02 -0400 Subject: Remove trailing whitespace, again. --- mail/em-folder-utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 0555fb76cc..ad60516bb1 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -10,7 +10,7 @@ * 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 + * License along with the program; if not, see * * * Authors: @@ -408,8 +408,8 @@ em_folder_utils_delete_folder (CamelFolder *folder) em_utils_show_error_silent (dialog); return; } - - if (mail_folder_cache_get_folder_info_flags (folder, &flags) && (flags & CAMEL_FOLDER_SYSTEM)) + + if (mail_folder_cache_get_folder_info_flags (folder, &flags) && (flags & CAMEL_FOLDER_SYSTEM)) { e_error_run(NULL,"mail:no-delete-special-folder", folder->name, NULL); return; -- cgit v1.2.3 From 948235c3d1076dbe6ed2e57a24c16a083bbd9f01 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 27 May 2009 10:29:19 -0400 Subject: Prefer GLib basic types over C types. --- mail/em-folder-utils.c | 70 +++++++++++++++++++++++++------------------------- 1 file changed, 35 insertions(+), 35 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 2b319ff360..1c7755fa69 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -76,7 +76,7 @@ extern CamelSession *session; static gboolean -emfu_is_special_local_folder (const char *name) +emfu_is_special_local_folder (const gchar *name) { return (!strcmp (name, "Drafts") || !strcmp (name, "Inbox") || !strcmp (name, "Outbox") || !strcmp (name, "Sent") || !strcmp (name, "Templates")); } @@ -88,10 +88,10 @@ struct _EMCopyFolders { CamelStore *fromstore; CamelStore *tostore; - char *frombase; - char *tobase; + gchar *frombase; + gchar *tobase; - int delete; + gint delete; }; static gchar * @@ -107,8 +107,8 @@ emft_copy_folders__exec (struct _EMCopyFolders *m) GList *pending = NULL, *deleting = NULL, *l; GString *fromname, *toname; CamelFolderInfo *fi; - const char *tmp; - int fromlen; + const gchar *tmp; + gint fromlen; if (!(fi = camel_store_get_folder_info (m->fromstore, m->frombase, flags, &m->base.ex))) return; @@ -133,7 +133,7 @@ emft_copy_folders__exec (struct _EMCopyFolders *m) while (info) { CamelFolder *fromfolder, *tofolder; GPtrArray *uids; - int deleted = 0; + gint deleted = 0; if (info->child) pending = g_list_append (pending, info->child); @@ -238,11 +238,11 @@ static MailMsgInfo copy_folders_info = { (MailMsgFreeFunc) emft_copy_folders__free }; -int -em_folder_utils_copy_folders(CamelStore *fromstore, const char *frombase, CamelStore *tostore, const char *tobase, int delete) +gint +em_folder_utils_copy_folders(CamelStore *fromstore, const gchar *frombase, CamelStore *tostore, const gchar *tobase, gint delete) { struct _EMCopyFolders *m; - int seq; + gint seq; m = mail_msg_new (©_folders_info); camel_object_ref (fromstore); @@ -265,7 +265,7 @@ struct _copy_folder_data { }; static void -emfu_copy_folder_selected (const char *uri, void *data) +emfu_copy_folder_selected (const gchar *uri, gpointer data) { struct _copy_folder_data *cfd = data; CamelStore *fromstore = NULL, *tostore = NULL; @@ -324,11 +324,11 @@ fail: /* tree here is the 'destination' selector, not 'self' */ static gboolean -emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *iter, void *data) +emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *iter, gpointer data) { struct _copy_folder_data *cfd = data; - int fromvfolder, tovfolder; - char *touri; + gint fromvfolder, tovfolder; + gchar *touri; guint flags; gboolean is_store; @@ -355,7 +355,7 @@ emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *i /* FIXME: this interface references the folderinfo without copying it */ /* FIXME: these functions must be documented */ void -em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, int delete) +em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, gint delete) { struct _copy_folder_data *cfd; @@ -369,7 +369,7 @@ em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, int delete) } static void -emfu_delete_done (CamelFolder *folder, gboolean removed, CamelException *ex, void *data) +emfu_delete_done (CamelFolder *folder, gboolean removed, CamelException *ex, gpointer data) { GtkWidget *dialog = data; @@ -385,7 +385,7 @@ emfu_delete_done (CamelFolder *folder, gboolean removed, CamelException *ex, voi } static void -emfu_delete_response (GtkWidget *dialog, int response, gpointer data) +emfu_delete_response (GtkWidget *dialog, gint response, gpointer data) { if (response == GTK_RESPONSE_OK) { /* disable dialog until operation finishes */ @@ -403,7 +403,7 @@ em_folder_utils_delete_folder (CamelFolder *folder) { CamelStore *local_store; GtkWidget *dialog; - int flags = 0; + gint flags = 0; local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); @@ -434,8 +434,8 @@ em_folder_utils_delete_folder (CamelFolder *folder) void em_folder_utils_rename_folder (CamelFolder *folder) { - char *prompt, *new_name; - const char *p; + gchar *prompt, *new_name; + const gchar *p; CamelStore *local_store; gboolean done = FALSE; size_t base_len; @@ -467,7 +467,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) } else { CamelFolderInfo *fi; CamelException ex; - char *path, *tmp; + gchar *path, *tmp; if (base_len > 0) { path = g_malloc (base_len + strlen (new_name) + 2); @@ -485,7 +485,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) e_error_run(NULL, "mail:no-rename-folder-exists", folder->name, new_name, NULL); } else { - const char *oldpath, *newpath; + const gchar *oldpath, *newpath; oldpath = folder->full_name; newpath = path; @@ -515,16 +515,16 @@ struct _EMCreateFolder { /* input data */ CamelStore *store; - char *full_name; - char *parent; - char *name; + gchar *full_name; + gchar *parent; + gchar *name; /* output data */ CamelFolderInfo *fi; /* callback data */ - void (* done) (CamelFolderInfo *fi, void *user_data); - void *user_data; + void (* done) (CamelFolderInfo *fi, gpointer user_data); + gpointer user_data; }; /* Temporary Structure to hold data to pass across function */ @@ -532,7 +532,7 @@ struct _EMCreateFolderTempData { EMFolderTree * emft; EMFolderSelector * emfs; - char *uri; + gchar *uri; }; static gchar * @@ -579,12 +579,12 @@ static MailMsgInfo create_folder_info = { static int -emfu_create_folder_real (CamelStore *store, const char *full_name, void (* done) (CamelFolderInfo *fi, void *user_data), void *user_data) +emfu_create_folder_real (CamelStore *store, const gchar *full_name, void (* done) (CamelFolderInfo *fi, gpointer user_data), gpointer user_data) { - char *name, *namebuf = NULL; + gchar *name, *namebuf = NULL; struct _EMCreateFolder *m; - const char *parent; - int id; + const gchar *parent; + gint id; namebuf = g_strdup (full_name); if (!(name = strrchr (namebuf, '/'))) { @@ -613,7 +613,7 @@ emfu_create_folder_real (CamelStore *store, const char *full_name, void (* done) } static void -new_folder_created_cb (CamelFolderInfo *fi, void *user_data) +new_folder_created_cb (CamelFolderInfo *fi, gpointer user_data) { struct _EMCreateFolderTempData *emcftd=user_data; if (fi){ @@ -629,10 +629,10 @@ new_folder_created_cb (CamelFolderInfo *fi, void *user_data) } static void -emfu_popup_new_folder_response (EMFolderSelector *emfs, int response, gpointer data) +emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer data) { EMFolderTreeModelStoreInfo *si; - const char *uri, *path; + const gchar *uri, *path; CamelException ex; CamelStore *store; struct _EMCreateFolderTempData *emcftd; -- cgit v1.2.3 From 14f8eee012382f04090ea9277e9567d5f32e8bf0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 28 May 2009 13:06:29 -0400 Subject: Whitespace cleanup. --- mail/em-folder-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 1c7755fa69..4ad9378549 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -625,7 +625,7 @@ new_folder_created_cb (CamelFolderInfo *fi, gpointer user_data) } g_object_unref (emcftd->emfs); g_free (emcftd->uri); - g_free (emcftd); + g_free (emcftd); } static void -- cgit v1.2.3 From 433eac7844481b8ceda0bae8bf08f6bb623185b0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Mon, 1 Jun 2009 19:09:19 -0400 Subject: More code cleanup. --- mail/em-folder-utils.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 4ad9378549..f92e8e3115 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -438,7 +438,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) const gchar *p; CamelStore *local_store; gboolean done = FALSE; - size_t base_len; + gsize base_len; local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); @@ -450,7 +450,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) } if ((p = strrchr (folder->full_name, '/'))) - base_len = (size_t) (p - folder->full_name); + base_len = (gsize) (p - folder->full_name); else base_len = 0; @@ -578,7 +578,7 @@ static MailMsgInfo create_folder_info = { }; -static int +static gint emfu_create_folder_real (CamelStore *store, const gchar *full_name, void (* done) (CamelFolderInfo *fi, gpointer user_data), gpointer user_data) { gchar *name, *namebuf = NULL; -- cgit v1.2.3 From be8ee5393471a83b24aed4de1669afd723cb3168 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 9 Jun 2009 23:15:20 -0400 Subject: Use key files for tracking widget states. Each EShellView now maintains a GKeyFile for recording disposable widget state such as tree view path expansion, scroll bar positions, combo box selections, etc. The EShellView records changes to the key file to ~/.evolution//config/state, and automatically restores the GKeyFile at startup. Currently only the mailer uses the key file, but it's intended to serve all shell views. It replaces the use of Camel "cmeta" files, as well as "et-expanded-*" and "folder-tree-expand-state.xml" files. Also, the mailer's folder tree model now includes a column for tracking which sidebar folders are expanded. Folder tree widgets appearing in dialog windows can copy the sidebar's expanded state using em_folder_tree_clone_expanded(). --- mail/em-folder-utils.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index f92e8e3115..4ab00e237e 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -355,17 +355,24 @@ emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *i /* FIXME: this interface references the folderinfo without copying it */ /* FIXME: these functions must be documented */ void -em_folder_utils_copy_folder(CamelFolderInfo *folderinfo, gint delete) +em_folder_utils_copy_folder (EMFolderTreeModel *model, + CamelFolderInfo *folderinfo, + gint delete) { struct _copy_folder_data *cfd; + g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model)); + g_return_if_fail (folderinfo != NULL); + cfd = g_malloc (sizeof (*cfd)); cfd->fi = folderinfo; cfd->delete = delete; - em_select_folder (NULL, _("Select folder"), delete?_("_Move"):_("C_opy"), - NULL, emfu_copy_folder_exclude, - emfu_copy_folder_selected, cfd); + em_select_folder ( + model, _("Select folder"), + delete ? _("_Move") : _("C_opy"), + NULL, emfu_copy_folder_exclude, + emfu_copy_folder_selected, cfd); } static void @@ -696,6 +703,7 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); + em_folder_tree_clone_expanded (folder_tree); dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) -- cgit v1.2.3 From 49ba34088bcdb9ab9cfae0c2b7fe11452fb60e24 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 13 Jun 2009 12:30:07 -0400 Subject: Clean up EMFolderTreeModel. --- mail/em-folder-utils.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 4ab00e237e..fbd2450012 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -639,6 +639,7 @@ static void emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer data) { EMFolderTreeModelStoreInfo *si; + EMFolderTreeModel *model; const gchar *uri, *path; CamelException ex; CamelStore *store; @@ -662,7 +663,9 @@ emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer return; } - if (!(si = em_folder_tree_get_model_storeinfo (emfs->emft, store))) { + model = em_folder_tree_get_model (emfs->emft); + si = em_folder_tree_model_lookup_store_info (model, store); + if (si == NULL) { camel_object_unref (store); g_return_if_reached(); } -- cgit v1.2.3 From ab27aff72c64183166fc6207d2ef0142e1ab8c83 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 13 Jun 2009 15:07:00 -0400 Subject: Thought of a better way to copy folder tree state. Revert the expanded tree model column and add a "selection"property to EMFolderTreeModel, which the sidebar sets. If set, all new EMFolderTree instances will automatically mimic its expanded and selected state. --- mail/em-folder-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index fbd2450012..bdf67ecfa0 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -706,7 +706,6 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); - em_folder_tree_clone_expanded (folder_tree); dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) -- cgit v1.2.3 From 174c942e0945a2017f0c479883dce2950e42e786 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 24 Jun 2009 00:40:49 -0400 Subject: Split store and local folder management out from shell backend. --- mail/em-folder-utils.c | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index bdf67ecfa0..8890e48cbd 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -69,7 +69,8 @@ #include "em-folder-selection.h" #include "em-folder-properties.h" -#include "e-mail-shell-backend.h" +#include "e-mail-local.h" +#include "e-mail-store.h" #define d(x) @@ -281,7 +282,7 @@ emfu_copy_folder_selected (const gchar *uri, gpointer data) camel_exception_init (&ex); - local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); + local_store = e_mail_local_get_store (); if (!(fromstore = camel_session_get_store (session, cfd->fi->uri, &ex))) { e_error_run(NULL, @@ -355,13 +356,11 @@ emfu_copy_folder_exclude(EMFolderTree *tree, GtkTreeModel *model, GtkTreeIter *i /* FIXME: this interface references the folderinfo without copying it */ /* FIXME: these functions must be documented */ void -em_folder_utils_copy_folder (EMFolderTreeModel *model, - CamelFolderInfo *folderinfo, +em_folder_utils_copy_folder (CamelFolderInfo *folderinfo, gint delete) { struct _copy_folder_data *cfd; - g_return_if_fail (EM_IS_FOLDER_TREE_MODEL (model)); g_return_if_fail (folderinfo != NULL); cfd = g_malloc (sizeof (*cfd)); @@ -369,7 +368,7 @@ em_folder_utils_copy_folder (EMFolderTreeModel *model, cfd->delete = delete; em_select_folder ( - model, _("Select folder"), + _("Select folder"), delete ? _("_Move") : _("C_opy"), NULL, emfu_copy_folder_exclude, emfu_copy_folder_selected, cfd); @@ -412,7 +411,7 @@ em_folder_utils_delete_folder (CamelFolder *folder) GtkWidget *dialog; gint flags = 0; - local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); + local_store = e_mail_local_get_store (); if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { dialog = e_error_new (NULL, "mail:no-delete-special-folder", folder->full_name, NULL); @@ -447,7 +446,7 @@ em_folder_utils_rename_folder (CamelFolder *folder) gboolean done = FALSE; gsize base_len; - local_store = e_mail_shell_backend_get_local_store (global_mail_shell_backend); + local_store = e_mail_local_get_store (); /* don't allow user to rename one of the special local folders */ if (folder->parent_store == local_store && emfu_is_special_local_folder (folder->full_name)) { @@ -639,7 +638,7 @@ static void emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer data) { EMFolderTreeModelStoreInfo *si; - EMFolderTreeModel *model; + GtkTreeModel *model; const gchar *uri, *path; CamelException ex; CamelStore *store; @@ -663,8 +662,9 @@ emfu_popup_new_folder_response (EMFolderSelector *emfs, gint response, gpointer return; } - model = em_folder_tree_get_model (emfs->emft); - si = em_folder_tree_model_lookup_store_info (model, store); + model = gtk_tree_view_get_model (GTK_TREE_VIEW (emfs->emft)); + si = em_folder_tree_model_lookup_store_info ( + EM_FOLDER_TREE_MODEL (model), store); if (si == NULL) { camel_object_unref (store); g_return_if_reached(); @@ -701,11 +701,9 @@ void em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, GtkWindow *parent) { EMFolderTree *folder_tree; - EMFolderTreeModel *model; GtkWidget *dialog; - model = e_mail_shell_backend_get_folder_tree_model (global_mail_shell_backend); - folder_tree = (EMFolderTree *) em_folder_tree_new_with_model (model); + folder_tree = (EMFolderTree *) em_folder_tree_new (); dialog = em_folder_selector_create_new (folder_tree, 0, _("Create Folder"), _("Specify where to create the folder:")); if (folderinfo != NULL) -- cgit v1.2.3 From f0cf88bc99a458193f2c16a3ed346c20f6a5fd1a Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 25 Jun 2009 13:27:20 -0400 Subject: Kill the "folder-unsubscribe" plugin. Feature is now integrated in core mailer, and has a main menu item. --- mail/em-folder-utils.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 8890e48cbd..21ec52b142 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -718,6 +718,72 @@ em_folder_utils_create_folder (CamelFolderInfo *folderinfo, EMFolderTree *emft, gtk_widget_show (dialog); } +struct _folder_unsub_t { + MailMsg base; + gchar *folder_uri; +}; + +static gchar * +emfu_unsubscribe_folder__desc (struct _folder_unsub_t *msg) +{ + return g_strdup_printf ( + _("Unsubscribing from folder \"%s\""), msg->folder_uri); +} + +static void +emfu_unsubscribe_folder__exec (struct _folder_unsub_t *msg) +{ + CamelStore *store; + CamelURL *url; + const gchar *path = NULL; + gint url_flags; + + store = camel_session_get_store ( + session, msg->folder_uri, &msg->base.ex); + if (store == NULL) + return; + + url = camel_url_new (msg->folder_uri, NULL); + url_flags = CAMEL_SERVICE (store)->provider->url_flags; + + if (url_flags & CAMEL_URL_FRAGMENT_IS_PATH) + path = url->fragment; + else if (url->path != NULL && *url->path != '\0') + path = url->path + 1; + + if (path != NULL) + camel_store_unsubscribe_folder (store, path, &msg->base.ex); + + camel_url_free (url); +} + +static void +emfu_unsubscribe_folder__free (struct _folder_unsub_t *msg) +{ + g_free (msg->folder_uri); +} + +static MailMsgInfo unsubscribe_info = { + sizeof (struct _folder_unsub_t), + (MailMsgDescFunc) emfu_unsubscribe_folder__desc, + (MailMsgExecFunc) emfu_unsubscribe_folder__exec, + (MailMsgDoneFunc) NULL, + (MailMsgFreeFunc) emfu_unsubscribe_folder__free +}; + +void +em_folder_utils_unsubscribe_folder (const gchar *folder_uri) +{ + struct _folder_unsub_t *unsub; + + g_return_if_fail (folder_uri != NULL); + + unsub = mail_msg_new (&unsubscribe_info); + unsub->folder_uri = g_strdup (folder_uri); + + mail_msg_unordered_push (unsub); +} + const gchar * em_folder_utils_get_icon_name (guint32 flags) { -- cgit v1.2.3 From 374bd42f69aca2e132fd854c9619f3d7491f1f96 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 12 Jul 2009 23:33:07 -0400 Subject: Fix excessive whitespace. --- mail/em-folder-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 21ec52b142..904e3908ce 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -583,7 +583,6 @@ static MailMsgInfo create_folder_info = { (MailMsgFreeFunc) emfu_create_folder__free }; - static gint emfu_create_folder_real (CamelStore *store, const gchar *full_name, void (* done) (CamelFolderInfo *fi, gpointer user_data), gpointer user_data) { -- cgit v1.2.3 From fa360fde289f9b850191f89059d1a5e6d67c07c7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 18 Jul 2009 14:07:42 -0400 Subject: More whitespace cleanup. --- mail/em-folder-utils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index 904e3908ce..e483942885 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -621,7 +621,7 @@ static void new_folder_created_cb (CamelFolderInfo *fi, gpointer user_data) { struct _EMCreateFolderTempData *emcftd=user_data; - if (fi){ + if (fi) { gtk_widget_destroy ((GtkWidget *) emcftd->emfs); /* Exapnding newly created folder */ -- cgit v1.2.3 From 45d475c31b2dbda8033021984ba9a429b9eddf51 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sun, 9 Aug 2009 20:03:24 -0400 Subject: Kill EMMenu and EMPopup. Also finish adapting Templates plugin to EPluginUI. It was still leaning pretty hard on EMPopup. --- mail/em-folder-utils.c | 1 - 1 file changed, 1 deletion(-) (limited to 'mail/em-folder-utils.c') diff --git a/mail/em-folder-utils.c b/mail/em-folder-utils.c index e483942885..700e445beb 100644 --- a/mail/em-folder-utils.c +++ b/mail/em-folder-utils.c @@ -61,7 +61,6 @@ #include "mail-folder-cache.h" #include "em-utils.h" -#include "em-popup.h" #include "em-folder-tree.h" #include "em-folder-tree-model.h" #include "em-folder-utils.h" -- cgit v1.2.3