aboutsummaryrefslogtreecommitdiffstats
path: root/mail
diff options
context:
space:
mode:
Diffstat (limited to 'mail')
-rw-r--r--mail/ChangeLog9
-rw-r--r--mail/component-factory.c69
2 files changed, 60 insertions, 18 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 91c2f773d2..69a2a57317 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,12 @@
+2001-09-06 Chris Toshok <toshok@ximian.com>
+
+ * component-factory.c (notify_listener): new function, to notify
+ the bonobo listener in remove_folder/create_folder.
+ (storage_create_folder): match EvolutionStorage create_folder
+ signal's signature.
+ (storage_remove_folder): match EvolutionStorage remove_folder
+ signal's signature.
+
2001-09-06 Dan Winship <danw@ximian.com>
Fix a bunch of replying/forwarding-related formatting bugs.
diff --git a/mail/component-factory.c b/mail/component-factory.c
index 8dbf22fe1b..ea48357bdb 100644
--- a/mail/component-factory.c
+++ b/mail/component-factory.c
@@ -804,8 +804,26 @@ component_factory_init (void)
evolution_folder_info_factory_init ();
}
-static int
+static void
+notify_listener (const Bonobo_Listener listener,
+ GNOME_Evolution_Storage_Result corba_result)
+{
+ CORBA_any any;
+ CORBA_Environment ev;
+
+ CORBA_exception_init (&ev);
+
+ any._type = TC_GNOME_Evolution_Storage_Result;
+ any._value = &corba_result;
+
+ Bonobo_Listener_event (listener, "result", &any, &ev);
+
+ CORBA_exception_free (&ev);
+}
+
+static void
storage_create_folder (EvolutionStorage *storage,
+ const Bonobo_Listener listener,
const char *path,
const char *type,
const char *description,
@@ -818,18 +836,24 @@ storage_create_folder (EvolutionStorage *storage,
CamelURL *url;
CamelException ex;
- if (strcmp (type, "mail") != 0)
- return EVOLUTION_STORAGE_ERROR_UNSUPPORTED_TYPE;
+ if (strcmp (type, "mail") != 0) {
+ notify_listener (listener, GNOME_Evolution_Storage_UNSUPPORTED_TYPE);
+ return;
+ }
name = strrchr (path, '/');
- if (!name++)
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ if (!name++) {
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
+ }
camel_exception_init (&ex);
if (*parent_physical_uri) {
url = camel_url_new (parent_physical_uri, NULL);
- if (!url)
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ if (!url) {
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
+ }
root = camel_store_create_folder (store, url->path + 1, name, &ex);
camel_url_free (url);
@@ -839,7 +863,8 @@ storage_create_folder (EvolutionStorage *storage,
if (camel_exception_is_set (&ex)) {
/* FIXME: do better than this */
camel_exception_clear (&ex);
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
}
if (camel_store_supports_subscriptions (store)) {
@@ -853,11 +878,12 @@ storage_create_folder (EvolutionStorage *storage,
camel_store_free_folder_info (store, root);
- return EVOLUTION_STORAGE_OK;
+ notify_listener (listener, GNOME_Evolution_Storage_OK);
}
-static int
+static void
storage_remove_folder (EvolutionStorage *storage,
+ const Bonobo_Listener listener,
const char *path,
const char *physical_uri,
gpointer user_data)
@@ -870,15 +896,21 @@ storage_remove_folder (EvolutionStorage *storage,
g_warning ("storage_remove_folder: path=\"%s\"; uri=\"%s\"", path, physical_uri);
if (*physical_uri) {
- if (strncmp (physical_uri, "vtrash:", 7) == 0)
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ if (strncmp (physical_uri, "vtrash:", 7) == 0) {
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
+ }
url = camel_url_new (physical_uri, NULL);
- if (!url)
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ if (!url) {
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
+ }
} else {
- if (!*path)
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ if (!*path) {
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
+ return;
+ }
}
camel_exception_init (&ex);
@@ -900,7 +932,8 @@ storage_remove_folder (EvolutionStorage *storage,
camel_store_free_folder_info (store, fi);
- return EVOLUTION_STORAGE_OK;
+ notify_listener (listener, GNOME_Evolution_Storage_OK);
+ return;
exception:
/* FIXME: do better than this... */
@@ -908,7 +941,7 @@ storage_remove_folder (EvolutionStorage *storage,
if (fi)
camel_store_free_folder_info (store, fi);
- return EVOLUTION_STORAGE_ERROR_INVALID_URI;
+ notify_listener (listener, GNOME_Evolution_Storage_INVALID_URI);
}
static void