aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui/dialogs/event-page.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/gui/dialogs/event-page.c')
-rw-r--r--calendar/gui/dialogs/event-page.c172
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;
}