diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2009-08-30 13:37:36 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2009-08-30 13:40:49 +0800 |
commit | cfb9c32b6657165e4d5e11aa7b47804f679a61f8 (patch) | |
tree | 1f9c8954df7a357b5dc20a13ac82bf31c1112083 /mail/em-folder-selection.c | |
parent | fefeb30f58447f2fa7bcbee16dbe68a9333ce89d (diff) | |
parent | 0f7f4cfe38b3c4cd83efbe9922ae15c5aee00317 (diff) | |
download | gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar.gz gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar.bz2 gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar.lz gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar.xz gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.tar.zst gsoc2013-evolution-cfb9c32b6657165e4d5e11aa7b47804f679a61f8.zip |
Merge commit 'origin/kill-bonobo'
Diffstat (limited to 'mail/em-folder-selection.c')
-rw-r--r-- | mail/em-folder-selection.c | 65 |
1 files changed, 29 insertions, 36 deletions
diff --git a/mail/em-folder-selection.c b/mail/em-folder-selection.c index 8fe6292e32..1e77525c9b 100644 --- a/mail/em-folder-selection.c +++ b/mail/em-folder-selection.c @@ -32,53 +32,46 @@ #include "em-folder-tree.h" #include "em-folder-selector.h" #include "em-folder-selection.h" -#include "mail-component.h" /* TODO: rmeove this file, it could just go on em-folder-selection or em-utils */ -struct _select_folder_data { - void (*done) (const gchar *uri, gpointer data); - gpointer data; -}; - -static void -emfs_selector_response(EMFolderSelector *emfs, gint response, struct _select_folder_data *d) -{ - if (response == GTK_RESPONSE_OK) { - const gchar *uri = em_folder_selector_get_selected_uri(emfs); - - d->done(uri, d->data); - } - - gtk_widget_destroy((GtkWidget *)emfs); -} - void -em_select_folder (GtkWindow *parent_window, const gchar *title, const gchar *oklabel, const gchar *default_uri, - EMFTExcludeFunc exclude, - void (*done) (const gchar *uri, gpointer user_data), gpointer user_data) +em_select_folder (const gchar *title, + const gchar *oklabel, + const gchar *default_uri, + EMFTExcludeFunc exclude, + void (*done) (const gchar *uri, gpointer user_data), + gpointer user_data) { - struct _select_folder_data *d; - EMFolderTreeModel *model; GtkWidget *dialog; EMFolderTree *emft; - model = mail_component_peek_tree_model (mail_component_peek ()); - emft = (EMFolderTree *) em_folder_tree_new_with_model (model); + g_return_if_fail (done != NULL); + + /* XXX Do we leak this reference? */ + emft = (EMFolderTree *) em_folder_tree_new (); + if (exclude) - em_folder_tree_set_excluded_func(emft, exclude, user_data); + em_folder_tree_set_excluded_func (emft, exclude, user_data); else - em_folder_tree_set_excluded (emft, EMFT_EXCLUDE_NOSELECT|EMFT_EXCLUDE_VIRTUAL|EMFT_EXCLUDE_VTRASH); + em_folder_tree_set_excluded ( + emft, EMFT_EXCLUDE_NOSELECT | + EMFT_EXCLUDE_VIRTUAL | EMFT_EXCLUDE_VTRASH); - dialog = em_folder_selector_new(emft, EM_FOLDER_SELECTOR_CAN_CREATE, title, NULL, oklabel); + dialog = em_folder_selector_new ( + emft, EM_FOLDER_SELECTOR_CAN_CREATE, title, NULL, oklabel); - d = g_malloc0(sizeof(*d)); - d->data = user_data; - d->done = done; - g_signal_connect(dialog, "response", G_CALLBACK (emfs_selector_response), d); - g_object_set_data_full((GObject *)dialog, "e-select-data", d, (GDestroyNotify)g_free); - gtk_widget_show(dialog); + if (default_uri != NULL) + em_folder_selector_set_selected ( + EM_FOLDER_SELECTOR (dialog), default_uri); + + if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + const gchar *uri; + + uri = em_folder_selector_get_selected_uri ( + EM_FOLDER_SELECTOR (dialog)); + done (uri, user_data); + } - if (default_uri) - em_folder_selector_set_selected((EMFolderSelector *)dialog, default_uri); + gtk_widget_destroy (dialog); } |