diff options
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/ChangeLog | 5 | ||||
-rw-r--r-- | calendar/gui/dialogs/select-source-dialog.c | 108 |
2 files changed, 12 insertions, 101 deletions
diff --git a/calendar/ChangeLog b/calendar/ChangeLog index 921a911d7b..7bb7e41149 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,8 @@ +2004-10-21 Rodrigo Moya <rodrigo@novell.com> + + * gui/dialogs/select-source-dialog.c: use the new source selector + dialog in libedataserverui. + 2004-10-20 JP Rosevear <jpr@novell.com> * gui/calendar-component.c: put an icon on the properties menu item diff --git a/calendar/gui/dialogs/select-source-dialog.c b/calendar/gui/dialogs/select-source-dialog.c index 66a671b1d3..408cb73b29 100644 --- a/calendar/gui/dialogs/select-source-dialog.c +++ b/calendar/gui/dialogs/select-source-dialog.c @@ -23,42 +23,11 @@ #endif #include <bonobo/bonobo-i18n.h> -#include <gtk/gtkbox.h> -#include <gtk/gtkvbox.h> -#include <gtk/gtkhbox.h> -#include <gtk/gtkdialog.h> -#include <gtk/gtklabel.h> -#include <gtk/gtkscrolledwindow.h> #include <gtk/gtkstock.h> #include <e-util/e-icon-factory.h> -#include <libedataserverui/e-source-selector.h> +#include <libedataserverui/e-source-selector-dialog.h> #include "select-source-dialog.h" -static void -row_activated_cb (GtkTreeView *tree_view, GtkTreePath *path, - GtkTreeViewColumn *column, GtkWidget *dialog) -{ - gtk_dialog_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); -} - -static void -primary_selection_changed_cb (ESourceSelector *selector, gpointer user_data) -{ - ESource **our_selection = user_data; - - if (*our_selection) - g_object_unref (*our_selection); - *our_selection = e_source_selector_peek_primary_selection (selector); - if (*our_selection) { - g_object_ref (*our_selection); - gtk_dialog_set_response_sensitive ( - GTK_DIALOG (gtk_widget_get_toplevel (GTK_WIDGET (selector))), GTK_RESPONSE_OK, TRUE); - } else { - gtk_dialog_set_response_sensitive ( - GTK_DIALOG (gtk_widget_get_toplevel (GTK_WIDGET (selector))), GTK_RESPONSE_OK, FALSE); - } -} - /** * select_source_dialog * @@ -67,12 +36,10 @@ primary_selection_changed_cb (ESourceSelector *selector, gpointer user_data) ESource * select_source_dialog (GtkWindow *parent, ECalSourceType obj_type) { - GtkWidget *dialog, *label, *scroll, *source_selector; - GtkWidget *vbox, *hbox, *spacer; + GtkWidget *dialog; ESourceList *source_list; ESource *selected_source = NULL; const char *gconf_key; - char *label_text; GConfClient *conf_client; GList *icon_list = NULL; @@ -83,71 +50,11 @@ select_source_dialog (GtkWindow *parent, ECalSourceType obj_type) else return NULL; - /* create the dialog */ - dialog = gtk_dialog_new (); - gtk_window_set_title (GTK_WINDOW (dialog), _("Select destination")); - gtk_window_set_transient_for (GTK_WINDOW (dialog), - GTK_WINDOW (parent)); - gtk_window_set_default_size (GTK_WINDOW (dialog), 320, 240); - - gtk_dialog_set_has_separator (GTK_DIALOG (dialog), FALSE); - gtk_widget_ensure_style (dialog); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), 0); - gtk_container_set_border_width (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area), 12); - - gtk_dialog_add_buttons (GTK_DIALOG (dialog), - GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, - GTK_STOCK_OK, GTK_RESPONSE_OK, - NULL); - gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK); - gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog), GTK_RESPONSE_OK, FALSE); - - vbox = gtk_vbox_new (FALSE, 12); - gtk_container_set_border_width (GTK_CONTAINER (vbox), 12); - gtk_container_add (GTK_CONTAINER (GTK_DIALOG (dialog)->vbox), vbox); - gtk_widget_show (vbox); - - label_text = g_strdup_printf ("<b>%s %s</b>", _("_Destination"), - obj_type == E_CAL_SOURCE_TYPE_EVENT ? - _("Calendar") : _("Task List")); - label = gtk_label_new_with_mnemonic (label_text); - gtk_label_set_use_markup (GTK_LABEL (label), TRUE); - gtk_misc_set_alignment (GTK_MISC (label), 0, 0.5); - g_free (label_text); - gtk_widget_show (label); - gtk_box_pack_start (GTK_BOX (vbox), label, FALSE, FALSE, 0); - - hbox = gtk_hbox_new (FALSE, 12); - gtk_box_pack_start (GTK_BOX (vbox), hbox, TRUE, TRUE, 0); - gtk_widget_show (hbox); - - spacer = gtk_label_new (""); - gtk_box_pack_start (GTK_BOX (hbox), spacer, FALSE, FALSE, 0); - gtk_widget_show (spacer); - conf_client = gconf_client_get_default (); source_list = e_source_list_new_for_gconf (conf_client, gconf_key); - scroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (scroll), - GTK_POLICY_AUTOMATIC, - GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (scroll), - GTK_SHADOW_IN); - gtk_widget_show (scroll); - source_selector = e_source_selector_new (source_list); - e_source_selector_show_selection (E_SOURCE_SELECTOR (source_selector), FALSE); - - g_signal_connect (G_OBJECT (source_selector), "row_activated", - G_CALLBACK (row_activated_cb), dialog); - - g_signal_connect (G_OBJECT (source_selector), "primary_selection_changed", - G_CALLBACK (primary_selection_changed_cb), &selected_source); - gtk_widget_show (source_selector); - gtk_container_add (GTK_CONTAINER (scroll), source_selector); - gtk_box_pack_start (GTK_BOX (hbox), scroll, TRUE, TRUE, 0); - - gtk_label_set_mnemonic_widget (GTK_LABEL (label), source_selector); + /* create the dialog */ + dialog = e_source_selector_dialog_new (parent, source_list); if (obj_type == E_CAL_SOURCE_TYPE_EVENT) icon_list = e_icon_factory_get_icon_list ("stock_calendar"); @@ -161,6 +68,7 @@ select_source_dialog (GtkWindow *parent, ECalSourceType obj_type) } if (gtk_dialog_run (GTK_DIALOG (dialog)) == GTK_RESPONSE_OK) { + selected_source = e_source_selector_dialog_peek_primary_selection (E_SOURCE_SELECTOR_DIALOG (dialog)); if (selected_source) { char *absolute_uri; @@ -169,13 +77,11 @@ select_source_dialog (GtkWindow *parent, ECalSourceType obj_type) absolute_uri = e_source_build_absolute_uri (selected_source); e_source_set_absolute_uri (selected_source, (const char *) absolute_uri); + g_object_ref (selected_source); g_free (absolute_uri); } - } else { - if (selected_source) - g_object_unref (selected_source); + } else selected_source = NULL; - } g_object_unref (conf_client); g_object_unref (source_list); |