diff options
Diffstat (limited to 'calendar/gui/dialogs/event-page.c')
-rw-r--r-- | calendar/gui/dialogs/event-page.c | 172 |
1 files changed, 96 insertions, 76 deletions
diff --git a/calendar/gui/dialogs/event-page.c b/calendar/gui/dialogs/event-page.c index dc5a6ba0a2..e62885d2db 100644 --- a/calendar/gui/dialogs/event-page.c +++ b/calendar/gui/dialogs/event-page.c @@ -26,8 +26,8 @@ #endif #include <gtk/gtksignal.h> -#include <gtk/gtktext.h> #include <gtk/gtktogglebutton.h> +#include <libgnome/gnome-defs.h> #include <libgnome/gnome-i18n.h> #include <glade/glade.h> #include <gal/widgets/e-unicode.h> @@ -93,7 +93,7 @@ struct _EventPagePrivate { static void event_page_class_init (EventPageClass *class); static void event_page_init (EventPage *epage); -static void event_page_finalize (GObject *object); +static void event_page_destroy (GtkObject *object); static GtkWidget *event_page_get_widget (CompEditorPage *page); static void event_page_focus_main_widget (CompEditorPage *page); @@ -114,21 +114,41 @@ static CompEditorPageClass *parent_class = NULL; * * Return value: The type ID of the #EventPage class. **/ +GtkType +event_page_get_type (void) +{ + static GtkType event_page_type; + + if (!event_page_type) { + static const GtkTypeInfo event_page_info = { + "EventPage", + sizeof (EventPage), + sizeof (EventPageClass), + (GtkClassInitFunc) event_page_class_init, + (GtkObjectInitFunc) event_page_init, + NULL, /* reserved_1 */ + NULL, /* reserved_2 */ + (GtkClassInitFunc) NULL + }; + + event_page_type = gtk_type_unique (TYPE_COMP_EDITOR_PAGE, + &event_page_info); + } -E_MAKE_TYPE (event_page, "EventPage", EventPage, event_page_class_init, event_page_init, - TYPE_COMP_EDITOR_PAGE); + return event_page_type; +} /* Class initialization function for the event page */ static void event_page_class_init (EventPageClass *class) { CompEditorPageClass *editor_page_class; - GObjectClass *object_class; + GtkObjectClass *object_class; editor_page_class = (CompEditorPageClass *) class; - object_class = (GObjectClass *) class; + object_class = (GtkObjectClass *) class; - parent_class = g_type_class_ref (TYPE_COMP_EDITOR_PAGE); + parent_class = gtk_type_class (TYPE_COMP_EDITOR_PAGE); editor_page_class->get_widget = event_page_get_widget; editor_page_class->focus_main_widget = event_page_focus_main_widget; @@ -137,7 +157,7 @@ event_page_class_init (EventPageClass *class) editor_page_class->set_summary = event_page_set_summary; editor_page_class->set_dates = event_page_set_dates; - object_class->finalize = event_page_finalize; + object_class->destroy = event_page_destroy; } /* Object initialization function for the event page */ @@ -179,7 +199,7 @@ event_page_init (EventPage *epage) /* Destroy handler for the event page */ static void -event_page_finalize (GObject *object) +event_page_destroy (GtkObject *object) { EventPage *epage; EventPagePrivate *priv; @@ -199,15 +219,15 @@ event_page_finalize (GObject *object) } if (priv->xml) { - g_object_unref((priv->xml)); + gtk_object_unref (GTK_OBJECT (priv->xml)); priv->xml = NULL; } g_free (priv); epage->priv = NULL; - if (G_OBJECT_CLASS (parent_class)->finalize) - (* G_OBJECT_CLASS (parent_class)->finalize) (object); + if (GTK_OBJECT_CLASS (parent_class)->destroy) + (* GTK_OBJECT_CLASS (parent_class)->destroy) (object); } @@ -283,7 +303,7 @@ static void update_time (EventPage *epage, CalComponentDateTime *start_date, CalComponentDateTime *end_date) { EventPagePrivate *priv; - struct icaltimetype *start_tt, *end_tt; + struct icaltimetype *start_tt, *end_tt, implied_tt; icaltimezone *start_zone = NULL, *end_zone = NULL; CalClientGetStatus status; gboolean all_day_event; @@ -320,6 +340,12 @@ update_time (EventPage *epage, CalComponentDateTime *start_date, CalComponentDat all_day_event = FALSE; start_tt = start_date->value; end_tt = end_date->value; + if (!end_tt && start_tt->is_date) { + end_tt = &implied_tt; + *end_tt = *start_tt; + icaltime_adjust (end_tt, 1, 0, 0, 0); + } + if (start_tt->is_date && end_tt->is_date) { all_day_event = TRUE; if (icaltime_compare_date_only (*end_tt, *start_tt) > 0) { @@ -340,7 +366,7 @@ update_time (EventPage *epage, CalComponentDateTime *start_date, CalComponentDat gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage); - g_signal_handlers_block_matched (priv->end_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage); e_date_edit_set_date (E_DATE_EDIT (priv->start_time), start_tt->year, start_tt->month, start_tt->day); @@ -361,7 +387,7 @@ update_time (EventPage *epage, CalComponentDateTime *start_date, CalComponentDat are the same. */ gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_timezone), epage); - g_signal_handlers_block_matched (priv->end_timezone, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_timezone), epage); e_timezone_entry_set_timezone (E_TIMEZONE_ENTRY (priv->start_timezone), start_zone); @@ -393,7 +419,7 @@ clear_widgets (EventPage *epage) /* Start and end times */ gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage); - g_signal_handlers_block_matched (priv->end_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage); e_date_edit_set_time (E_DATE_EDIT (priv->start_time), 0); e_date_edit_set_time (E_DATE_EDIT (priv->end_time), 0); @@ -420,8 +446,8 @@ clear_widgets (EventPage *epage) static void contacts_changed_cb (BonoboListener *listener, - const char *event_name, - const CORBA_any *arg, + char *event_name, + CORBA_any *arg, CORBA_Environment *ev, gpointer data) { @@ -755,7 +781,7 @@ get_widgets (EventPage *epage) /* Get the GtkAccelGroup from the toplevel window, so we can install it when the notebook page is mapped. */ toplevel = gtk_widget_get_toplevel (priv->main); - accel_groups = gtk_accel_groups_from_object (G_OBJECT (toplevel)); + accel_groups = gtk_accel_groups_from_object (GTK_OBJECT (toplevel)); if (accel_groups) { page->accel_group = accel_groups->data; gtk_accel_group_ref (page->accel_group); @@ -767,12 +793,8 @@ get_widgets (EventPage *epage) priv->summary = GW ("general-summary"); priv->location = GW ("location"); - /* Glade's visibility flag doesn't seem to work for custom widgets */ priv->start_time = GW ("start-time"); - gtk_widget_show (priv->start_time); priv->end_time = GW ("end-time"); - gtk_widget_show (priv->end_time); - priv->start_timezone = GW ("start-timezone"); priv->end_timezone = GW ("end-timezone"); priv->all_day_event = GW ("all-day-event"); @@ -995,22 +1017,22 @@ times_updated (EventPage *epage, gboolean adjust_end_time) if (set_start_date) { - g_signal_handlers_block_matched (priv->start_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_block_by_data (GTK_OBJECT (priv->start_time), epage); e_date_edit_set_date (E_DATE_EDIT (priv->start_time), start_tt.year, start_tt.month, start_tt.day); e_date_edit_set_time_of_day (E_DATE_EDIT (priv->start_time), start_tt.hour, start_tt.minute); - g_signal_handlers_unblock_matched (priv->start_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->start_time), epage); } if (set_end_date) { - g_signal_handlers_block_matched (priv->end_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_block_by_data (GTK_OBJECT (priv->end_time), epage); e_date_edit_set_date (E_DATE_EDIT (priv->end_time), end_tt.year, end_tt.month, end_tt.day); e_date_edit_set_time_of_day (E_DATE_EDIT (priv->end_time), end_tt.hour, end_tt.minute); - g_signal_handlers_unblock_matched (priv->end_time, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, epage); + gtk_signal_handler_unblock_by_data (GTK_OBJECT (priv->end_time), epage); } /* Notify upstream */ @@ -1274,73 +1296,71 @@ init_widgets (EventPage *epage) epage, NULL); /* Summary */ - g_signal_connect((priv->summary), "changed", - G_CALLBACK (summary_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->summary), "changed", + GTK_SIGNAL_FUNC (summary_changed_cb), epage); /* Description - turn on word wrap. */ -#if 0 gtk_text_set_word_wrap (GTK_TEXT (priv->description), TRUE); -#endif /* Start and end times */ - g_signal_connect((priv->start_time), "changed", - G_CALLBACK (date_changed_cb), epage); - g_signal_connect((priv->end_time), "changed", - G_CALLBACK (date_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed", + GTK_SIGNAL_FUNC (date_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->end_time), "changed", + GTK_SIGNAL_FUNC (date_changed_cb), epage); - g_signal_connect((priv->start_timezone), "changed", - G_CALLBACK (start_timezone_changed_cb), epage); - g_signal_connect((priv->end_timezone), "changed", - G_CALLBACK (end_timezone_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->start_timezone), "changed", + GTK_SIGNAL_FUNC (start_timezone_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->end_timezone), "changed", + GTK_SIGNAL_FUNC (end_timezone_changed_cb), epage); - g_signal_connect((priv->all_day_event), "toggled", - G_CALLBACK (all_day_event_toggled_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->all_day_event), "toggled", + GTK_SIGNAL_FUNC (all_day_event_toggled_cb), epage); /* Contacts button */ - g_signal_connect((priv->contacts_btn), "clicked", - G_CALLBACK (contacts_clicked_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->contacts_btn), "clicked", + GTK_SIGNAL_FUNC (contacts_clicked_cb), epage); /* Categories button */ - g_signal_connect((priv->categories_btn), "clicked", - G_CALLBACK (categories_clicked_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->categories_btn), "clicked", + GTK_SIGNAL_FUNC (categories_clicked_cb), epage); /* Connect the default signal handler to use to make sure we notify * upstream of changes to the widget values. */ - g_signal_connect((priv->summary), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->location), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->start_time), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->end_time), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->start_timezone), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->end_timezone), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->all_day_event), "toggled", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->description), "changed", - G_CALLBACK (field_changed_cb), epage); - g_signal_connect((priv->classification_public), - "toggled", G_CALLBACK (field_changed_cb), + gtk_signal_connect (GTK_OBJECT (priv->summary), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->location), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->start_time), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->end_time), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->start_timezone), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->end_timezone), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->all_day_event), "toggled", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->description), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->classification_public), + "toggled", GTK_SIGNAL_FUNC (field_changed_cb), epage); - g_signal_connect((priv->classification_private), - "toggled", G_CALLBACK (field_changed_cb), + gtk_signal_connect (GTK_OBJECT (priv->classification_private), + "toggled", GTK_SIGNAL_FUNC (field_changed_cb), epage); - g_signal_connect((priv->classification_confidential), - "toggled", G_CALLBACK (field_changed_cb), + gtk_signal_connect (GTK_OBJECT (priv->classification_confidential), + "toggled", GTK_SIGNAL_FUNC (field_changed_cb), epage); - g_signal_connect((priv->show_time_as_free), - "toggled", G_CALLBACK (field_changed_cb), + gtk_signal_connect (GTK_OBJECT (priv->show_time_as_free), + "toggled", GTK_SIGNAL_FUNC (field_changed_cb), epage); - g_signal_connect((priv->show_time_as_busy), - "toggled", G_CALLBACK (field_changed_cb), + gtk_signal_connect (GTK_OBJECT (priv->show_time_as_busy), + "toggled", GTK_SIGNAL_FUNC (field_changed_cb), epage); - g_signal_connect((priv->categories), "changed", - G_CALLBACK (field_changed_cb), epage); + gtk_signal_connect (GTK_OBJECT (priv->categories), "changed", + GTK_SIGNAL_FUNC (field_changed_cb), epage); /* Create the contacts entry, a corba control from the address book. */ priv->corba_select_names = comp_editor_create_contacts_component (); @@ -1382,7 +1402,7 @@ event_page_construct (EventPage *epage) priv = epage->priv; priv->xml = glade_xml_new (EVOLUTION_GLADEDIR "/event-page.glade", - NULL, NULL); + NULL); if (!priv->xml) { g_message ("event_page_construct(): " "Could not load the Glade XML file!"); @@ -1417,9 +1437,9 @@ event_page_new (void) { EventPage *epage; - epage = g_object_new (TYPE_EVENT_PAGE, NULL); + epage = gtk_type_new (TYPE_EVENT_PAGE); if (!event_page_construct (epage)) { - g_object_unref ((epage)); + gtk_object_unref (GTK_OBJECT (epage)); return NULL; } |