From 83627486d54d307e7bf80885757247880eab1d26 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Fri, 29 Oct 2010 16:41:06 -0400 Subject: Bug 633471 - EAttachmentStore store folder name where uri is expected --- widgets/misc/e-attachment-store.c | 59 +++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 27 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 009049025e..8e2ad2ec23 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -35,14 +35,14 @@ struct _EAttachmentStorePrivate { GHashTable *attachment_index; - gchar *current_folder; + gchar *current_folder_uri; guint ignore_row_changed : 1; }; enum { PROP_0, - PROP_CURRENT_FOLDER, + PROP_CURRENT_FOLDER_URI, PROP_NUM_ATTACHMENTS, PROP_NUM_LOADING, PROP_TOTAL_SIZE @@ -60,8 +60,8 @@ attachment_store_set_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_CURRENT_FOLDER: - e_attachment_store_set_current_folder ( + case PROP_CURRENT_FOLDER_URI: + e_attachment_store_set_current_folder_uri ( E_ATTACHMENT_STORE (object), g_value_get_string (value)); return; @@ -77,10 +77,10 @@ attachment_store_get_property (GObject *object, GParamSpec *pspec) { switch (property_id) { - case PROP_CURRENT_FOLDER: + case PROP_CURRENT_FOLDER_URI: g_value_set_string ( value, - e_attachment_store_get_current_folder ( + e_attachment_store_get_current_folder_uri ( E_ATTACHMENT_STORE (object))); return; @@ -131,7 +131,7 @@ attachment_store_finalize (GObject *object) g_hash_table_destroy (priv->attachment_index); - g_free (priv->current_folder); + g_free (priv->current_folder_uri); /* Chain up to parent's finalize() method. */ G_OBJECT_CLASS (e_attachment_store_parent_class)->finalize (object); @@ -146,7 +146,7 @@ attachment_store_constructed (GObject *object) bridge = gconf_bridge_get (); key = "/apps/evolution/shell/file_chooser_folder"; - gconf_bridge_bind_property (bridge, key, object, "current-folder"); + gconf_bridge_bind_property (bridge, key, object, "current-folder-uri"); } static void @@ -165,10 +165,10 @@ e_attachment_store_class_init (EAttachmentStoreClass *class) g_object_class_install_property ( object_class, - PROP_CURRENT_FOLDER, + PROP_CURRENT_FOLDER_URI, g_param_spec_string ( - "current-folder", - "Current Folder", + "current-folder-uri", + "Current Folder URI", NULL, NULL, G_PARAM_READWRITE | @@ -381,26 +381,31 @@ e_attachment_store_get_attachments (EAttachmentStore *store) } const gchar * -e_attachment_store_get_current_folder (EAttachmentStore *store) +e_attachment_store_get_current_folder_uri (EAttachmentStore *store) { g_return_val_if_fail (E_IS_ATTACHMENT_STORE (store), NULL); - return store->priv->current_folder; + return store->priv->current_folder_uri; } void -e_attachment_store_set_current_folder (EAttachmentStore *store, - const gchar *current_folder) +e_attachment_store_set_current_folder_uri (EAttachmentStore *store, + const gchar *current_folder_uri) { + gchar *allocated; + g_return_if_fail (E_IS_ATTACHMENT_STORE (store)); - if (current_folder == NULL) - current_folder = g_get_home_dir (); + if (current_folder_uri == NULL) { + const gchar *home_dir = g_get_home_dir (); + allocated = g_filename_to_uri (home_dir, NULL, NULL); + } else + allocated = g_strdup (current_folder_uri); - g_free (store->priv->current_folder); - store->priv->current_folder = g_strdup (current_folder); + g_free (store->priv->current_folder_uri); + store->priv->current_folder_uri = allocated; - g_object_notify (G_OBJECT (store), "current-folder"); + g_object_notify (G_OBJECT (store), "current-folder-uri"); } guint @@ -465,15 +470,15 @@ e_attachment_store_run_file_chooser_dialog (EAttachmentStore *store, { GtkFileChooser *file_chooser; gint response = GTK_RESPONSE_NONE; - const gchar *current_folder; + const gchar *current_uri; gboolean update_folder; g_return_val_if_fail (E_IS_ATTACHMENT_STORE (store), response); g_return_val_if_fail (GTK_IS_FILE_CHOOSER_DIALOG (dialog), response); file_chooser = GTK_FILE_CHOOSER (dialog); - current_folder = e_attachment_store_get_current_folder (store); - gtk_file_chooser_set_current_folder (file_chooser, current_folder); + current_uri = e_attachment_store_get_current_folder_uri (store); + gtk_file_chooser_set_current_folder_uri (file_chooser, current_uri); response = gtk_dialog_run (GTK_DIALOG (dialog)); @@ -484,11 +489,11 @@ e_attachment_store_run_file_chooser_dialog (EAttachmentStore *store, (response == GTK_RESPONSE_APPLY); if (update_folder) { - gchar *folder; + gchar *uri; - folder = gtk_file_chooser_get_current_folder (file_chooser); - e_attachment_store_set_current_folder (store, folder); - g_free (folder); + uri = gtk_file_chooser_get_current_folder_uri (file_chooser); + e_attachment_store_set_current_folder_uri (store, uri); + g_free (uri); } return response; -- cgit v1.2.3 From 22b2d26d048476d4909bfcf348ce6567e0d006a0 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 6 Dec 2010 14:23:20 +0100 Subject: Free/busy meeting view doesn't work due to non-working extension --- widgets/misc/e-attachment-store.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 8e2ad2ec23..d647a575dc 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -147,6 +147,9 @@ attachment_store_constructed (GObject *object) key = "/apps/evolution/shell/file_chooser_folder"; gconf_bridge_bind_property (bridge, key, object, "current-folder-uri"); + + if (G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed) + G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed (object); } static void -- cgit v1.2.3 From 7a1677520d439aee68c5ab0268a951d0b411e3a0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 12 Feb 2011 11:37:05 -0500 Subject: Remove NULL checks for GObject methods. As of GLib 2.28 all GObject virtual methods, including constructed(), are safe to chain up to unconditionally. Remove unnecessary checks. --- widgets/misc/e-attachment-store.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index d647a575dc..4068e5efdc 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -148,8 +148,8 @@ attachment_store_constructed (GObject *object) key = "/apps/evolution/shell/file_chooser_folder"; gconf_bridge_bind_property (bridge, key, object, "current-folder-uri"); - if (G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed) - G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed (object); + /* Chain up to parent's constructed() method. */ + G_OBJECT_CLASS (e_attachment_store_parent_class)->constructed (object); } static void -- cgit v1.2.3 From 1301cf02efdacd20fb5ce3e2554ae15b8f146e8a Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 25 Feb 2011 16:20:41 +0100 Subject: Bug #614480 - Avoid using G_TYPE_INSTANCE_GET_PRIVATE repeatedly --- widgets/misc/e-attachment-store.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 4068e5efdc..392dfe6fc7 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -29,10 +29,6 @@ #include "e-util/e-mktemp.h" #include "e-util/gconf-bridge.h" -#define E_ATTACHMENT_STORE_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_ATTACHMENT_STORE, EAttachmentStorePrivate)) - struct _EAttachmentStorePrivate { GHashTable *attachment_index; gchar *current_folder_uri; @@ -114,7 +110,7 @@ attachment_store_dispose (GObject *object) { EAttachmentStorePrivate *priv; - priv = E_ATTACHMENT_STORE_GET_PRIVATE (object); + priv = E_ATTACHMENT_STORE (object)->priv; g_hash_table_remove_all (priv->attachment_index); @@ -127,7 +123,7 @@ attachment_store_finalize (GObject *object) { EAttachmentStorePrivate *priv; - priv = E_ATTACHMENT_STORE_GET_PRIVATE (object); + priv = E_ATTACHMENT_STORE (object)->priv; g_hash_table_destroy (priv->attachment_index); @@ -226,7 +222,7 @@ e_attachment_store_init (EAttachmentStore *store) (GDestroyNotify) g_object_unref, (GDestroyNotify) gtk_tree_row_reference_free); - store->priv = E_ATTACHMENT_STORE_GET_PRIVATE (store); + store->priv = G_TYPE_INSTANCE_GET_PRIVATE (store, E_TYPE_ATTACHMENT_STORE, EAttachmentStorePrivate); store->priv->attachment_index = attachment_index; types[column++] = E_TYPE_ATTACHMENT; /* COLUMN_ATTACHMENT */ -- cgit v1.2.3 From 2533e52b8cf543eed874d220a3f039eebe67253e Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Wed, 2 Mar 2011 15:12:02 +0100 Subject: Do not leak attachments in a mail view --- widgets/misc/e-attachment-store.c | 36 +++++++++++++++++++++++++++++++----- 1 file changed, 31 insertions(+), 5 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 392dfe6fc7..e1794d653c 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -108,11 +108,7 @@ attachment_store_get_property (GObject *object, static void attachment_store_dispose (GObject *object) { - EAttachmentStorePrivate *priv; - - priv = E_ATTACHMENT_STORE (object)->priv; - - g_hash_table_remove_all (priv->attachment_index); + e_attachment_store_remove_all (E_ATTACHMENT_STORE (object)); /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (e_attachment_store_parent_class)->dispose (object); @@ -326,6 +322,36 @@ e_attachment_store_remove_attachment (EAttachmentStore *store, return TRUE; } +void +e_attachment_store_remove_all (EAttachmentStore *store) +{ + GList *list, *iter; + + g_return_if_fail (E_IS_ATTACHMENT_STORE (store)); + + if (!g_hash_table_size (store->priv->attachment_index)) + return; + + g_object_freeze_notify (G_OBJECT (store)); + + list = e_attachment_store_get_attachments (store); + for (iter = list; iter; iter = iter->next) { + EAttachment *attachment = iter->data; + + e_attachment_cancel (attachment); + g_hash_table_remove (store->priv->attachment_index, iter->data); + } + + g_list_foreach (list, (GFunc) g_object_unref, NULL); + g_list_free (list); + + gtk_list_store_clear (GTK_LIST_STORE (store)); + + g_object_notify (G_OBJECT (store), "num-attachments"); + g_object_notify (G_OBJECT (store), "total-size"); + g_object_thaw_notify (G_OBJECT (store)); +} + void e_attachment_store_add_to_multipart (EAttachmentStore *store, CamelMultipart *multipart, -- cgit v1.2.3 From c6fd77460f5baf88528f5da2ffb99e86a2885ff0 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 5 Mar 2011 12:33:49 -0500 Subject: Coding style and whitespace cleanup. --- widgets/misc/e-attachment-store.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index e1794d653c..696e092b1c 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -218,7 +218,8 @@ e_attachment_store_init (EAttachmentStore *store) (GDestroyNotify) g_object_unref, (GDestroyNotify) gtk_tree_row_reference_free); - store->priv = G_TYPE_INSTANCE_GET_PRIVATE (store, E_TYPE_ATTACHMENT_STORE, EAttachmentStorePrivate); + store->priv = G_TYPE_INSTANCE_GET_PRIVATE ( + store, E_TYPE_ATTACHMENT_STORE, EAttachmentStorePrivate); store->priv->attachment_index = attachment_index; types[column++] = E_TYPE_ATTACHMENT; /* COLUMN_ATTACHMENT */ -- cgit v1.2.3 From 756c8abcb840b8da588031f4a0d7e1fc979fab70 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Fri, 27 May 2011 15:23:07 +0200 Subject: Bug #646109 - Fix use of include to make sure translations work --- widgets/misc/e-attachment-store.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 696e092b1c..a1e1fa2586 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -19,10 +19,13 @@ * */ +#ifdef HAVE_CONFIG_H +#include +#endif + #include "e-attachment-store.h" #include -#include #include #include "e-util/e-util.h" -- cgit v1.2.3 From 8a309aef81ed8364b054e49cfb94908623e2d0d4 Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 26 Sep 2011 11:02:47 +0200 Subject: Bug #655252 - Need to escape the comp_uid part of a path --- widgets/misc/e-attachment-store.c | 145 +++++++++++++++++++++++--------------- 1 file changed, 87 insertions(+), 58 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index a1e1fa2586..8db9f2af80 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -1068,6 +1068,7 @@ typedef struct _SaveContext SaveContext; struct _SaveContext { GSimpleAsyncResult *simple; GFile *destination; + gchar *filename_prefix; GFile *fresh_directory; GFile *trash_directory; GList *attachment_list; @@ -1079,6 +1080,7 @@ struct _SaveContext { static SaveContext * attachment_store_save_context_new (EAttachmentStore *store, GFile *destination, + const gchar *filename_prefix, GAsyncReadyCallback callback, gpointer user_data) { @@ -1101,6 +1103,7 @@ attachment_store_save_context_new (EAttachmentStore *store, save_context = g_slice_new0 (SaveContext); save_context->simple = simple; save_context->destination = g_object_ref (destination); + save_context->filename_prefix = g_strdup (filename_prefix); save_context->attachment_list = attachment_list; save_context->uris = uris; @@ -1123,6 +1126,9 @@ attachment_store_save_context_free (SaveContext *save_context) save_context->destination = NULL; } + g_free (save_context->filename_prefix); + save_context->filename_prefix = NULL; + if (save_context->fresh_directory) { g_object_unref (save_context->fresh_directory); save_context->fresh_directory = NULL; @@ -1138,6 +1144,56 @@ attachment_store_save_context_free (SaveContext *save_context) g_slice_free (SaveContext, save_context); } +static void +attachment_store_move_file (SaveContext *save_context, GFile *source, GFile *destination, GError **error) +{ + gchar *tmpl; + gchar *path; + + g_return_if_fail (save_context != NULL); + g_return_if_fail (source != NULL); + g_return_if_fail (destination != NULL); + g_return_if_fail (error != NULL); + + /* Attachments are all saved to a temporary directory. + * Now we need to move the existing destination directory + * out of the way (if it exists). Instead of testing for + * existence we'll just attempt the move and ignore any + * G_IO_ERROR_NOT_FOUND errors. */ + + /* First, however, we need another temporary directory to + * move the existing destination directory to. Note we're + * not actually creating the directory yet, just picking a + * name for it. The usual raciness with this approach + * applies here (read up on mktemp(3)), but worst case is + * we get a spurious G_IO_ERROR_WOULD_MERGE error and the + * user has to try saving attachments again. */ + tmpl = g_strdup_printf (PACKAGE "-%s-XXXXXX", g_get_user_name ()); + path = e_mktemp (tmpl); + g_free (tmpl); + + save_context->trash_directory = g_file_new_for_path (path); + g_free (path); + + /* XXX No asynchronous move operation in GIO? */ + g_file_move ( + destination, + save_context->trash_directory, + G_FILE_COPY_NONE, NULL, NULL, NULL, error); + + if (*error != NULL && !g_error_matches (*error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) + return; + + g_clear_error (error); + + /* Now we can move the file from the temporary directory + * to the user-specified destination. */ + g_file_move ( + source, + destination, + G_FILE_COPY_NONE, NULL, NULL, NULL, error); +} + static void attachment_store_save_cb (EAttachment *attachment, GAsyncResult *result, @@ -1146,8 +1202,6 @@ attachment_store_save_cb (EAttachment *attachment, GSimpleAsyncResult *simple; GFile *file; gchar **uris; - gchar *template; - gchar *path; GError *error = NULL; file = e_attachment_save_finish (attachment, result, &error); @@ -1161,18 +1215,35 @@ attachment_store_save_cb (EAttachment *attachment, /* Assemble the file's final URI from its basename. */ gchar *basename; gchar *uri; + GFile *source = NULL, *destination = NULL; basename = g_file_get_basename (file); g_object_unref (file); + source = g_file_get_child (save_context->fresh_directory, basename); + + if (save_context->filename_prefix && *save_context->filename_prefix) { + gchar *tmp = basename; + + basename = g_strconcat (save_context->filename_prefix, basename, NULL); + g_free (tmp); + } + file = save_context->destination; - file = g_file_get_child (file, basename); - uri = g_file_get_uri (file); - g_object_unref (file); + destination = g_file_get_child (file, basename); + uri = g_file_get_uri (destination); - save_context->uris[save_context->index++] = uri; + /* move them file-by-file */ + attachment_store_move_file (save_context, source, destination, &error); - } else if (error != NULL) { + if (!error) + save_context->uris[save_context->index++] = uri; + + g_object_unref (source); + g_object_unref (destination); + } + + if (error != NULL) { /* If this is the first error, cancel the other jobs. */ if (save_context->error == NULL) { g_propagate_error (&save_context->error, error); @@ -1189,8 +1260,7 @@ attachment_store_save_cb (EAttachment *attachment, g_warning ("%s", error->message); } - if (error != NULL) - g_error_free (error); + g_clear_error (&error); /* If there's still jobs running, let them finish. */ if (save_context->attachment_list != NULL) @@ -1212,53 +1282,6 @@ attachment_store_save_cb (EAttachment *attachment, return; } - /* Attachments are all saved to a temporary directory. - * Now we need to move the existing destination directory - * out of the way (if it exists). Instead of testing for - * existence we'll just attempt the move and ignore any - * G_IO_ERROR_NOT_FOUND errors. */ - - /* First, however, we need another temporary directory to - * move the existing destination directory to. Note we're - * not actually creating the directory yet, just picking a - * name for it. The usual raciness with this approach - * applies here (read up on mktemp(3)), but worst case is - * we get a spurious G_IO_ERROR_WOULD_MERGE error and the - * user has to try saving attachments again. */ - template = g_strdup_printf (PACKAGE "-%s-XXXXXX", g_get_user_name ()); - path = e_mktemp (template); - g_free (template); - - save_context->trash_directory = g_file_new_for_path (path); - g_free (path); - - /* XXX No asynchronous move operation in GIO? */ - g_file_move ( - save_context->destination, - save_context->trash_directory, - G_FILE_COPY_NONE, NULL, NULL, NULL, &error); - - if (error != NULL && !g_error_matches ( - error, G_IO_ERROR, G_IO_ERROR_NOT_FOUND)) { - - simple = save_context->simple; - g_simple_async_result_set_from_error (simple, error); - g_simple_async_result_complete (simple); - - attachment_store_save_context_free (save_context); - g_error_free (error); - return; - } - - g_clear_error (&error); - - /* Now we can move the first temporary directory containing - * the newly saved files to the user-specified destination. */ - g_file_move ( - save_context->fresh_directory, - save_context->destination, - G_FILE_COPY_NONE, NULL, NULL, NULL, &error); - if (error != NULL) { simple = save_context->simple; g_simple_async_result_set_from_error (simple, error); @@ -1269,6 +1292,9 @@ attachment_store_save_cb (EAttachment *attachment, return; } + /* clean-up left directory */ + g_file_delete (save_context->fresh_directory, NULL, NULL); + /* And the URI list. */ uris = save_context->uris; save_context->uris = NULL; @@ -1279,10 +1305,13 @@ attachment_store_save_cb (EAttachment *attachment, attachment_store_save_context_free (save_context); } - +/* + * @filename_prefix: prefix to use for a file name; can be %NULL for none + **/ void e_attachment_store_save_async (EAttachmentStore *store, GFile *destination, + const gchar *filename_prefix, GAsyncReadyCallback callback, gpointer user_data) { @@ -1296,7 +1325,7 @@ e_attachment_store_save_async (EAttachmentStore *store, g_return_if_fail (G_IS_FILE (destination)); save_context = attachment_store_save_context_new ( - store, destination, callback, user_data); + store, destination, filename_prefix, callback, user_data); attachment_list = save_context->attachment_list; -- cgit v1.2.3 From e2b6ff7a6c1e1580c26ee0719b349151e8dad6fd Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 27 Sep 2011 01:13:42 -0400 Subject: Miscellaneous cleanups from the account-mgmt branch. Reducing diff noise so I can see important changes easier when comparing branches. A few API changes, but nothing that affects functionality. --- widgets/misc/e-attachment-store.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) (limited to 'widgets/misc/e-attachment-store.c') diff --git a/widgets/misc/e-attachment-store.c b/widgets/misc/e-attachment-store.c index 8db9f2af80..691fd518b8 100644 --- a/widgets/misc/e-attachment-store.c +++ b/widgets/misc/e-attachment-store.c @@ -1080,7 +1080,7 @@ struct _SaveContext { static SaveContext * attachment_store_save_context_new (EAttachmentStore *store, GFile *destination, - const gchar *filename_prefix, + const gchar *filename_prefix, GAsyncReadyCallback callback, gpointer user_data) { @@ -1128,7 +1128,7 @@ attachment_store_save_context_free (SaveContext *save_context) g_free (save_context->filename_prefix); save_context->filename_prefix = NULL; - + if (save_context->fresh_directory) { g_object_unref (save_context->fresh_directory); save_context->fresh_directory = NULL; @@ -1145,7 +1145,10 @@ attachment_store_save_context_free (SaveContext *save_context) } static void -attachment_store_move_file (SaveContext *save_context, GFile *source, GFile *destination, GError **error) +attachment_store_move_file (SaveContext *save_context, + GFile *source, + GFile *destination, + GError **error) { gchar *tmpl; gchar *path; @@ -1311,7 +1314,7 @@ attachment_store_save_cb (EAttachment *attachment, void e_attachment_store_save_async (EAttachmentStore *store, GFile *destination, - const gchar *filename_prefix, + const gchar *filename_prefix, GAsyncReadyCallback callback, gpointer user_data) { -- cgit v1.2.3