From d91364b0562ad2d80186c8bc5e94a7792989a53d Mon Sep 17 00:00:00 2001 From: Ettore Perazzoli Date: Thu, 17 Oct 2002 20:47:06 +0000 Subject: New, implementation for the cancel_discover_shared_folder virtual method. * e-corba-storage.c (cancel_discover_shared_folder): New, implementation for the cancel_discover_shared_folder virtual method. (class_init): Install. * evolution-test-component.c (storage_discover_shared_folder_callback): Instead of passing the listener to the timeout function, just pass the storage. Put the listener and the timeout ID on the storage object by using gtk_object_set_data(). (shared_folder_discovery_timeout_callback): Updated accordingly. (storage_cancel_discover_shared_folder_callback): New, callback for the cancel_discover_shared_folder signal. (setup_custom_storage): Connect. * e-shell-shared-folder-picker-dialog.c: New member storage in struct DiscoveryData. While I am at it, rename member user to user_email_address. (discover_folder): Set the storage member. (cleanup_discovery): Unref storage member. (progress_dialog_clicked_callback): New, callback for the "clicked" signal on the dialog. (discover_folder): Connect. * evolution-storage.c (class_init): Install signal "cancel_discover_shared_folder". (impl_Storage_cancelDiscoverSharedFolder): New, implementation for the cancelDiscoverSharedFolder CORBA method; emit "cancel_discover_shared_folder". (evolution_storage_get_epv): Install CORBA method implementation. * evolution-storage.h: Add signal cancel_discover_shared_folder. * e-storage.c (e_storage_cancel_discover_shared_folder): New. * e-storage.h: New virtual method cancel_discover_shared_folder. * Evolution-Storage.idl (cancelDiscoverSharedFolder): New. svn path=/trunk/; revision=18386 --- shell/e-shell-shared-folder-picker-dialog.c | 58 ++++++++++++++++++++--------- 1 file changed, 41 insertions(+), 17 deletions(-) (limited to 'shell/e-shell-shared-folder-picker-dialog.c') diff --git a/shell/e-shell-shared-folder-picker-dialog.c b/shell/e-shell-shared-folder-picker-dialog.c index 5316b2f8fb..cba839f880 100644 --- a/shell/e-shell-shared-folder-picker-dialog.c +++ b/shell/e-shell-shared-folder-picker-dialog.c @@ -261,11 +261,24 @@ struct _DiscoveryData { EShell *shell; EShellView *parent; GtkWidget *dialog; - char *user; + char *user_email_address; char *folder_name; + EStorage *storage; }; typedef struct _DiscoveryData DiscoveryData; +static void +cleanup_discovery (DiscoveryData *discovery_data) +{ + if (discovery_data->dialog != NULL) + gtk_widget_destroy (discovery_data->dialog); + + g_free (discovery_data->user_email_address); + g_free (discovery_data->folder_name); + gtk_object_unref (GTK_OBJECT (discovery_data->storage)); + g_free (discovery_data); +} + static int progress_bar_timeout_callback (void *data) { @@ -301,6 +314,23 @@ progress_dialog_close_callback (GnomeDialog *dialog, return TRUE; } +/* This is invoked if the "Cancel" button is clicked. */ +static void +progress_dialog_clicked_callback (GnomeDialog *dialog, + int button_number, + void *data) +{ + DiscoveryData *discovery_data; + + discovery_data = (DiscoveryData *) data; + + e_storage_cancel_discover_shared_folder (discovery_data->storage, + discovery_data->user_email_address, + discovery_data->folder_name); + + cleanup_discovery (discovery_data); +} + static int progress_dialog_show_timeout_callback (void *data) { @@ -357,17 +387,6 @@ create_progress_dialog (EShell *shell, return dialog; } -static void -cleanup_discovery (DiscoveryData *discovery_data) -{ - if (discovery_data->dialog != NULL) - gtk_widget_destroy (discovery_data->dialog); - - g_free (discovery_data->user); - g_free (discovery_data->folder_name); - g_free (discovery_data); -} - static void shell_destroy_callback (GtkObject *object, void *data) @@ -460,11 +479,13 @@ discover_folder (EShell *shell, dialog = create_progress_dialog (shell, storage, user_email_address, folder_name); discovery_data = g_new (DiscoveryData, 1); - discovery_data->dialog = dialog; - discovery_data->shell = shell; - discovery_data->parent = parent; - discovery_data->user = g_strdup (user_email_address); - discovery_data->folder_name = g_strdup (folder_name); + discovery_data->dialog = dialog; + discovery_data->shell = shell; + discovery_data->parent = parent; + discovery_data->user_email_address = g_strdup (user_email_address); + discovery_data->folder_name = g_strdup (folder_name); + discovery_data->storage = storage; + gtk_object_ref (GTK_OBJECT (storage)); gtk_signal_connect (GTK_OBJECT (shell), "destroy", GTK_SIGNAL_FUNC (shell_destroy_callback), discovery_data); @@ -475,6 +496,9 @@ discover_folder (EShell *shell, gtk_signal_connect (GTK_OBJECT (storage), "destroy", GTK_SIGNAL_FUNC (storage_destroy_callback), discovery_data); + gtk_signal_connect (GTK_OBJECT (dialog), "clicked", + GTK_SIGNAL_FUNC (progress_dialog_clicked_callback), discovery_data); + e_storage_async_discover_shared_folder (storage, user_email_address, folder_name, -- cgit v1.2.3