From 3e208eabe5395ae452b99b5ba9fd27e7128ee1b2 Mon Sep 17 00:00:00 2001 From: JP Rosevear Date: Wed, 14 Aug 2002 16:16:41 +0000 Subject: listen for the time editors to change 2002-08-14 JP Rosevear * gui/dialogs/cal-prefs-dialog.c (init_widgets): listen for the time editors to change (cal_prefs_dialog_start_of_day_changed): make sure the start is never after the end (cal_prefs_dialog_end_of_day_changed): make sure the end is never after the start * gui/e-meeting-time-sel.c (e_meeting_time_selector_set_working_hours): make sure to show a minimum of 1 hour for work day * gui/e-day-view-main-item.c (e_day_view_main_item_draw): calculate the work/not working color boxes to the nearest pixel, rather the the nearest time division Fixes #10286, #26285 svn path=/trunk/; revision=17776 --- calendar/ChangeLog | 19 +++++++++++ calendar/gui/dialogs/cal-prefs-dialog.c | 59 +++++++++++++++++++++++++++++++++ calendar/gui/e-day-view-main-item.c | 7 ++-- calendar/gui/e-meeting-time-sel.c | 11 ++++-- 4 files changed, 89 insertions(+), 7 deletions(-) (limited to 'calendar') diff --git a/calendar/ChangeLog b/calendar/ChangeLog index db920eb809..406b18dc12 100644 --- a/calendar/ChangeLog +++ b/calendar/ChangeLog @@ -1,3 +1,22 @@ +2002-08-14 JP Rosevear + + * gui/dialogs/cal-prefs-dialog.c (init_widgets): listen for the + time editors to change + (cal_prefs_dialog_start_of_day_changed): make sure the start is + never after the end + (cal_prefs_dialog_end_of_day_changed): make sure the end is never + after the start + + * gui/e-meeting-time-sel.c + (e_meeting_time_selector_set_working_hours): make sure to show a + minimum of 1 hour for work day + + * gui/e-day-view-main-item.c (e_day_view_main_item_draw): + calculate the work/not working color boxes to the nearest pixel, + rather the the nearest time division + + Fixes #10286, #26285 + 2002-08-13 Dan Winship * gui/e-itip-control.c: Remove a bunch of old #if 0 code. diff --git a/calendar/gui/dialogs/cal-prefs-dialog.c b/calendar/gui/dialogs/cal-prefs-dialog.c index 639738c3bc..533101c7a0 100644 --- a/calendar/gui/dialogs/cal-prefs-dialog.c +++ b/calendar/gui/dialogs/cal-prefs-dialog.c @@ -110,6 +110,8 @@ static void config_control_apply_callback (EvolutionConfigControl *config_contro static void config_control_destroy_callback (GtkObject *object, void *data); static void cal_prefs_dialog_use_24_hour_toggled(GtkWidget *button, void *data); +static void cal_prefs_dialog_end_of_day_changed (GtkWidget *button, void *data); +static void cal_prefs_dialog_start_of_day_changed (GtkWidget *button, void *data); static void cal_prefs_dialog_hide_completed_tasks_toggled (GtkWidget *button, void *data); GtkWidget *cal_prefs_dialog_create_time_edit (void); @@ -359,6 +361,14 @@ init_widgets (DialogData *dialog_data) GTK_SIGNAL_FUNC (cal_prefs_dialog_use_24_hour_toggled), dialog_data); + gtk_signal_connect (GTK_OBJECT (dialog_data->start_of_day), "changed", + GTK_SIGNAL_FUNC (cal_prefs_dialog_start_of_day_changed), + dialog_data); + + gtk_signal_connect (GTK_OBJECT (dialog_data->end_of_day), "changed", + GTK_SIGNAL_FUNC (cal_prefs_dialog_end_of_day_changed), + dialog_data); + gtk_signal_connect (GTK_OBJECT (dialog_data->tasks_hide_completed_checkbutton), "toggled", GTK_SIGNAL_FUNC (cal_prefs_dialog_hide_completed_tasks_toggled), @@ -381,6 +391,55 @@ cal_prefs_dialog_use_24_hour_toggled (GtkWidget *button, e_date_edit_set_use_24_hour_format (E_DATE_EDIT (dialog_data->end_of_day), use_24_hour); } +static void +cal_prefs_dialog_start_of_day_changed (GtkWidget *button, void *data) +{ + DialogData *dialog_data; + EDateEdit *start, *end; + int start_hour, start_minute, end_hour, end_minute; + + dialog_data = (DialogData *) data; + + start = E_DATE_EDIT (dialog_data->start_of_day); + end = E_DATE_EDIT (dialog_data->end_of_day); + + e_date_edit_get_time_of_day (start, &start_hour, &start_minute); + e_date_edit_get_time_of_day (end, &end_hour, &end_minute); + + if ((start_hour > end_hour) + || (start_hour == end_hour && start_minute > end_minute)) { + + if (start_hour < 23) + e_date_edit_set_time_of_day (end, start_hour + 1, start_minute); + else + e_date_edit_set_time_of_day (end, 23, 59); + } +} + +static void +cal_prefs_dialog_end_of_day_changed (GtkWidget *button, void *data) +{ + DialogData *dialog_data; + EDateEdit *start, *end; + int start_hour, start_minute, end_hour, end_minute; + + dialog_data = (DialogData *) data; + + start = E_DATE_EDIT (dialog_data->start_of_day); + end = E_DATE_EDIT (dialog_data->end_of_day); + + e_date_edit_get_time_of_day (start, &start_hour, &start_minute); + e_date_edit_get_time_of_day (end, &end_hour, &end_minute); + + if ((end_hour < start_hour) + || (end_hour == start_hour && end_minute < start_minute)) { + if (end_hour < 1) + e_date_edit_set_time_of_day (start, 0, 0); + else + e_date_edit_set_time_of_day (start, end_hour - 1, end_minute); + } +} + static void cal_prefs_dialog_hide_completed_tasks_toggled (GtkWidget *button, void *data) diff --git a/calendar/gui/e-day-view-main-item.c b/calendar/gui/e-day-view-main-item.c index 201f0cbc52..ebdac5c2de 100644 --- a/calendar/gui/e-day-view-main-item.c +++ b/calendar/gui/e-day-view-main-item.c @@ -187,7 +187,6 @@ e_day_view_main_item_draw (GnomeCanvasItem *canvas_item, GdkDrawable *drawable, GdkFont *font; gint row, row_y, grid_x1, grid_x2; gint day, grid_y1, grid_y2; - gint work_day_start_row, work_day_end_row; gint work_day_start_y, work_day_end_y; gint day_x, day_w, work_day; gint start_row, end_row, rect_x, rect_y, rect_width, rect_height; @@ -207,10 +206,8 @@ e_day_view_main_item_draw (GnomeCanvasItem *canvas_item, GdkDrawable *drawable, /* Paint the background colors. */ gc = day_view->main_gc; - work_day_start_row = e_day_view_convert_time_to_row (day_view, day_view->work_day_start_hour, day_view->work_day_start_minute); - work_day_start_y = work_day_start_row * day_view->row_height - y; - work_day_end_row = e_day_view_convert_time_to_row (day_view, day_view->work_day_end_hour, day_view->work_day_end_minute); - work_day_end_y = work_day_end_row * day_view->row_height - y; + work_day_start_y = e_day_view_convert_time_to_position (day_view, day_view->work_day_start_hour, day_view->work_day_start_minute) - y; + work_day_end_y = e_day_view_convert_time_to_position (day_view, day_view->work_day_end_hour, day_view->work_day_end_minute) - y; for (day = 0; day < day_view->days_shown; day++) { day_start_tt = icaltime_from_timet_with_zone (day_view->day_starts[day], FALSE, day_view->zone); diff --git a/calendar/gui/e-meeting-time-sel.c b/calendar/gui/e-meeting-time-sel.c index dbe8a58c6d..7df2996013 100644 --- a/calendar/gui/e-meeting-time-sel.c +++ b/calendar/gui/e-meeting-time-sel.c @@ -1202,9 +1202,16 @@ e_meeting_time_selector_set_working_hours (EMeetingTimeSelector *mts, mts->day_start_hour = day_start_hour; mts->day_start_minute = day_start_minute; - mts->day_end_hour = day_end_hour; - mts->day_end_minute = day_end_minute; + /* Make sure we always show atleast an hour */ + if (day_start_hour * 60 + day_start_minute + 60 < day_end_hour * 60 + day_end_minute) { + mts->day_end_hour = day_end_hour; + mts->day_end_minute = day_end_minute; + } else { + mts->day_end_hour = day_start_hour + 1; + mts->day_end_minute = day_start_minute; + } + e_meeting_time_selector_save_position (mts, &saved_time); e_meeting_time_selector_recalc_grid (mts); e_meeting_time_selector_restore_position (mts, &saved_time); -- cgit