From 0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399 Mon Sep 17 00:00:00 2001 From: Dan Winship Date: Fri, 14 Mar 2003 18:13:58 +0000 Subject: add a Bonobo::Listener to this like the other async interfaces, rather * Evolution-Storage.idl (asyncOpenFolder): add a Bonobo::Listener to this like the other async interfaces, rather than having a hacky way to signal failure. * evolution-storage.c (impl_Storage_asyncOpenFolder): Update to take a listener and emit it as part of the signal (evolution_storage_class_init): update OPEN_FOLDER signal prototype. * e-shell-marshal.list (NONE:POINTER,STRING): add, for changed EvolutionStorage open_folder signal * e-storage.c (e_storage_async_open_folder): add a callback arg (impl_async_open_folder): call the callback with NOTIMPLEMENTED. (class_init): remove the CLOSE_FOLDER signal (e_storage_has_subfolders): Don't emit CLOSE_FOLDER since it doesn't exist any more, and this function is used for that side effect any more anyway. * e-corba-storage.c (async_open_folder): add the callback arg and create a proper closure. (async_open_folder_idle): Call the callback in case of error. Create a listener and pass that to the CORBA call. (async_open_cb): Listener callback. * e-storage-set.c (storage_set_view_folder_opened): Pass a callback to e_storage_async_open_folder. (async_open_cb): emit CLOSE_FOLDER if the open failed (storage_close_folder_cb): Remove this since the signal no longer exists. svn path=/trunk/; revision=20297 --- shell/e-storage-set.c | 33 +++++++++++++++------------------ 1 file changed, 15 insertions(+), 18 deletions(-) (limited to 'shell/e-storage-set.c') diff --git a/shell/e-storage-set.c b/shell/e-storage-set.c index ffc8755bf5..2978ea7572 100644 --- a/shell/e-storage-set.c +++ b/shell/e-storage-set.c @@ -246,21 +246,6 @@ storage_removed_folder_cb (EStorage *storage, g_free (full_path); } -static void -storage_close_folder_cb (EStorage *storage, - const char *path, - void *data) -{ - EStorageSet *storage_set; - char *full_path; - - storage_set = E_STORAGE_SET (data); - - full_path = make_full_path (storage, path); - g_signal_emit (storage_set, signals[CLOSE_FOLDER], 0, full_path); - g_free (full_path); -} - static EStorage * get_storage_for_path (EStorageSet *storage_set, @@ -549,8 +534,6 @@ e_storage_set_add_storage (EStorageSet *storage_set, G_CALLBACK (storage_updated_folder_cb), storage_set); g_signal_connect (storage, "removed_folder", G_CALLBACK (storage_removed_folder_cb), storage_set); - g_signal_connect (storage, "close_folder", - G_CALLBACK (storage_close_folder_cb), storage_set); priv->storages = g_list_append (priv->storages, storage); @@ -663,6 +646,19 @@ e_storage_set_get_folder (EStorageSet *storage_set, } +static void +async_open_cb (EStorage *storage, EStorageResult result, + const char *path, gpointer storage_set) +{ + if (result != E_STORAGE_OK) { + char *full_path; + + full_path = make_full_path (storage, path); + g_signal_emit (storage_set, signals[CLOSE_FOLDER], 0, full_path); + g_free (full_path); + } +} + static void storage_set_view_folder_opened (EStorageSetView *storage_set_view, const char *path, @@ -675,7 +671,8 @@ storage_set_view_folder_opened (EStorageSetView *storage_set_view, if (storage == NULL) return; - e_storage_async_open_folder (storage, subpath); + e_storage_async_open_folder (storage, subpath, + async_open_cb, storage_set); } GtkWidget * -- cgit v1.2.3