Remove both timeouts when the dialog is destroyed, not just one of them.
* e-shell-shared-folder-picker-dialog.c (create_progress_dialog): Remove both timeouts when the dialog is destroyed, not just one of them. (shared_folder_discovery_listener_callback): Don't try to access fields of discovery_data after destroying it. Interpret the result argument correctly, and put up an error dialog (using e_corba_storage_corba_result_to_storage_result and e_storage_result_to_string) if something went wrong. * e-corba-storage.c (e_corba_storage_corba_result_to_storage_result): convert a GNOME_Evolution_Storage_Result to an EStorageResult. (async_folder_cb): Use that. svn path=/trunk/; revision=17750
This commit is contained in:
@ -1,3 +1,19 @@
|
||||
2002-08-09 Dan Winship <danw@ximian.com>
|
||||
|
||||
* e-shell-shared-folder-picker-dialog.c (create_progress_dialog):
|
||||
Remove both timeouts when the dialog is destroyed, not just one of
|
||||
them.
|
||||
(shared_folder_discovery_listener_callback): Don't try to access
|
||||
fields of discovery_data after destroying it. Interpret the result
|
||||
argument correctly, and put up an error dialog (using
|
||||
e_corba_storage_corba_result_to_storage_result and
|
||||
e_storage_result_to_string) if something went wrong.
|
||||
|
||||
* e-corba-storage.c
|
||||
(e_corba_storage_corba_result_to_storage_result): convert a
|
||||
GNOME_Evolution_Storage_Result to an EStorageResult.
|
||||
(async_folder_cb): Use that.
|
||||
|
||||
2002-08-06 Dan Winship <danw@ximian.com>
|
||||
|
||||
* e-storage-set-view.c (folder_property_item_verb_callback): Don't
|
||||
|
@ -294,39 +294,7 @@ async_folder_cb (BonoboListener *listener, char *event_name,
|
||||
EStorageResult result;
|
||||
|
||||
corba_result = any->_value;
|
||||
switch (*corba_result) {
|
||||
case GNOME_Evolution_Storage_OK:
|
||||
result = E_STORAGE_OK;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_UNSUPPORTED_OPERATION:
|
||||
result = E_STORAGE_UNSUPPORTEDOPERATION;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_UNSUPPORTED_TYPE:
|
||||
result = E_STORAGE_UNSUPPORTEDTYPE;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_INVALID_URI:
|
||||
result = E_STORAGE_INVALIDNAME;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_ALREADY_EXISTS:
|
||||
result = E_STORAGE_EXISTS;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_DOES_NOT_EXIST:
|
||||
result = E_STORAGE_NOTFOUND;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_PERMISSION_DENIED:
|
||||
result = E_STORAGE_PERMISSIONDENIED;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_NO_SPACE:
|
||||
result = E_STORAGE_NOSPACE;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_NOT_EMPTY:
|
||||
result = E_STORAGE_NOTEMPTY;
|
||||
break;
|
||||
case GNOME_Evolution_Storage_GENERIC_ERROR:
|
||||
default:
|
||||
result = E_STORAGE_GENERICERROR;
|
||||
break;
|
||||
}
|
||||
result = e_corba_storage_corba_result_to_storage_result (*corba_result);
|
||||
|
||||
(* closure->callback) (closure->storage, result, closure->data);
|
||||
bonobo_object_unref (BONOBO_OBJECT (listener));
|
||||
@ -714,5 +682,33 @@ e_corba_storage_show_folder_properties (ECorbaStorage *corba_storage,
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
||||
EStorageResult
|
||||
e_corba_storage_corba_result_to_storage_result (GNOME_Evolution_Storage_Result corba_result)
|
||||
{
|
||||
switch (corba_result) {
|
||||
case GNOME_Evolution_Storage_OK:
|
||||
return E_STORAGE_OK;
|
||||
case GNOME_Evolution_Storage_UNSUPPORTED_OPERATION:
|
||||
return E_STORAGE_UNSUPPORTEDOPERATION;
|
||||
case GNOME_Evolution_Storage_UNSUPPORTED_TYPE:
|
||||
return E_STORAGE_UNSUPPORTEDTYPE;
|
||||
case GNOME_Evolution_Storage_INVALID_URI:
|
||||
return E_STORAGE_INVALIDNAME;
|
||||
case GNOME_Evolution_Storage_ALREADY_EXISTS:
|
||||
return E_STORAGE_EXISTS;
|
||||
case GNOME_Evolution_Storage_DOES_NOT_EXIST:
|
||||
return E_STORAGE_NOTFOUND;
|
||||
case GNOME_Evolution_Storage_PERMISSION_DENIED:
|
||||
return E_STORAGE_PERMISSIONDENIED;
|
||||
case GNOME_Evolution_Storage_NO_SPACE:
|
||||
return E_STORAGE_NOSPACE;
|
||||
case GNOME_Evolution_Storage_NOT_EMPTY:
|
||||
return E_STORAGE_NOTEMPTY;
|
||||
case GNOME_Evolution_Storage_GENERIC_ERROR:
|
||||
default:
|
||||
return E_STORAGE_GENERICERROR;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
E_MAKE_TYPE (e_corba_storage, "ECorbaStorage", ECorbaStorage, class_init, init, PARENT_TYPE)
|
||||
|
@ -80,6 +80,7 @@ void e_corba_storage_show_folder_properties (ECorbaStorage *corba_storage,
|
||||
const char *path,
|
||||
int property_item_id,
|
||||
GdkWindow *parent_window);
|
||||
EStorageResult e_corba_storage_corba_result_to_storage_result (GNOME_Evolution_Storage_Result corba_result);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
@ -346,7 +346,7 @@ create_progress_dialog (EShell *shell,
|
||||
GtkWidget *dialog;
|
||||
GtkWidget *label;
|
||||
GtkWidget *progress_bar;
|
||||
int progress_bar_timeout_id;
|
||||
int timeout_id;
|
||||
char *text;
|
||||
|
||||
dialog = gnome_dialog_new (_("Opening Folder"), GNOME_STOCK_BUTTON_CANCEL, NULL);
|
||||
@ -370,12 +370,16 @@ create_progress_dialog (EShell *shell,
|
||||
gtk_progress_set_activity_mode (GTK_PROGRESS (progress_bar), TRUE);
|
||||
gtk_box_pack_start (GTK_BOX (GNOME_DIALOG (dialog)->vbox), progress_bar, FALSE, TRUE, 0);
|
||||
|
||||
progress_bar_timeout_id = g_timeout_add (50, progress_bar_timeout_callback, progress_bar);
|
||||
timeout_id = g_timeout_add (50, progress_bar_timeout_callback, progress_bar);
|
||||
gtk_signal_connect (GTK_OBJECT (progress_bar), "destroy",
|
||||
GTK_SIGNAL_FUNC (progress_bar_destroy_callback),
|
||||
GINT_TO_POINTER (progress_bar_timeout_id));
|
||||
GINT_TO_POINTER (timeout_id));
|
||||
|
||||
timeout_id = g_timeout_add (PROGRESS_DIALOG_DELAY, progress_dialog_show_timeout_callback, dialog);
|
||||
gtk_signal_connect (GTK_OBJECT (progress_bar), "destroy",
|
||||
GTK_SIGNAL_FUNC (progress_bar_destroy_callback),
|
||||
GINT_TO_POINTER (timeout_id));
|
||||
|
||||
g_timeout_add (PROGRESS_DIALOG_DELAY, progress_dialog_show_timeout_callback, dialog);
|
||||
return dialog;
|
||||
}
|
||||
|
||||
@ -432,24 +436,39 @@ shared_folder_discovery_listener_callback (BonoboListener *listener,
|
||||
{
|
||||
GNOME_Evolution_Storage_FolderResult *result;
|
||||
DiscoveryData *discovery_data;
|
||||
EShell *shell;
|
||||
EShellView *parent;
|
||||
EStorage *storage;
|
||||
|
||||
discovery_data = (DiscoveryData *) data;
|
||||
result = (GNOME_Evolution_Storage_FolderResult *) value->_value;
|
||||
shell = discovery_data->shell;
|
||||
parent = discovery_data->parent;
|
||||
storage = discovery_data->storage;
|
||||
|
||||
/* Make sure the progress dialog doesn't show up now. */
|
||||
cleanup_discovery (discovery_data);
|
||||
|
||||
if (result == GNOME_Evolution_Storage_OK) {
|
||||
result = (GNOME_Evolution_Storage_FolderResult *) value->_value;
|
||||
if (result->result == GNOME_Evolution_Storage_OK) {
|
||||
char *uri;
|
||||
|
||||
uri = g_strconcat (E_SHELL_URI_PREFIX, "/",
|
||||
e_storage_get_name (discovery_data->storage),
|
||||
e_storage_get_name (storage),
|
||||
result->path,
|
||||
NULL);
|
||||
|
||||
if (discovery_data->parent != NULL)
|
||||
e_shell_view_display_uri (discovery_data->parent, uri);
|
||||
e_shell_view_display_uri (parent, uri);
|
||||
else
|
||||
e_shell_create_view (discovery_data->shell, uri, NULL);
|
||||
e_shell_create_view (shell, uri, NULL);
|
||||
} else {
|
||||
EStorageResult storage_result;
|
||||
|
||||
storage_result = e_corba_storage_corba_result_to_storage_result (result->result);
|
||||
e_notice (parent ? GTK_WINDOW (parent) : NULL,
|
||||
GNOME_MESSAGE_BOX_ERROR,
|
||||
_("Could not open shared folder: %s."),
|
||||
e_storage_result_to_string (storage_result));
|
||||
}
|
||||
}
|
||||
|
||||
@ -519,8 +538,8 @@ discover_folder (EShell *shell,
|
||||
cleanup_discovery (discovery_data);
|
||||
|
||||
/* FIXME: Be more verbose? */
|
||||
e_notice (NULL, GNOME_MESSAGE_BOX_ERROR,
|
||||
_("Cannot find open the specified shared folder."));
|
||||
e_notice (GTK_WINDOW (parent), GNOME_MESSAGE_BOX_ERROR,
|
||||
_("Cannot find the specified shared folder."));
|
||||
|
||||
CORBA_exception_free (&ev);
|
||||
}
|
||||
|
Reference in New Issue
Block a user