aboutsummaryrefslogtreecommitdiffstats
path: root/shell/e-storage-set.c
diff options
context:
space:
mode:
authorDan Winship <danw@src.gnome.org>2003-03-15 02:13:58 +0800
committerDan Winship <danw@src.gnome.org>2003-03-15 02:13:58 +0800
commit0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399 (patch)
tree3ca29899a3cfc9ee08329c99151c49fe0b55fed9 /shell/e-storage-set.c
parent1df1d4aead3ebacf457f637c6df2a5e8539b7fbf (diff)
downloadgsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar.gz
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar.bz2
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar.lz
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar.xz
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.tar.zst
gsoc2013-evolution-0f75c9693668acf8e5a1f8ca3e7aa3cd2cd0d399.zip
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
Diffstat (limited to 'shell/e-storage-set.c')
-rw-r--r--shell/e-storage-set.c33
1 files changed, 15 insertions, 18 deletions
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);
@@ -664,6 +647,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,
EStorageSet *storage_set)
@@ -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 *