From ff523035dd2592f6ff25955e7f1e379f24640347 Mon Sep 17 00:00:00 2001 From: Damon Chaplin Date: Tue, 29 May 2001 02:18:00 +0000 Subject: new files to contain layout code split off from EDayView an EWeekView, so 2001-05-28 Damon Chaplin * gui/e-week-view-layout.[hc]: * gui/e-day-view-layout.[hc]: new files to contain layout code split off from EDayView an EWeekView, so we can use it for printing. * gui/print.c: rewritten to use the same layout code as the EDayView and EWeekView widgets. * gui/gnome-cal.c (gnome_calendar_get_task_pad_cal_client): added function so we can get the CalClient used for the TaskPad for printing. * gui/Makefile.am (evolution_calendar_SOURCES): added e-day-view-layout.[hc] amd e-week-view-layout.[hc]. * cal-util/timeutil.c (time_week_begin): (time_week_end): added week_start_day argument. * cal-util/cal-recur.c: added comments describing problems in it. svn path=/trunk/; revision=10037 --- calendar/cal-util/timeutil.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) (limited to 'calendar/cal-util/timeutil.c') diff --git a/calendar/cal-util/timeutil.c b/calendar/cal-util/timeutil.c index 764ec5d078..7bb4c904ec 100644 --- a/calendar/cal-util/timeutil.c +++ b/calendar/cal-util/timeutil.c @@ -319,35 +319,45 @@ time_month_end (time_t t) return mktime (&tm); } +/* Returns the start of the week. week_start_day should use the same values + as mktime(), i.e. 0 (Sun) to 6 (Sat). */ time_t -time_week_begin (time_t t) +time_week_begin (time_t t, int week_start_day) { struct tm tm; - - /* FIXME: make it take week_starts_on_monday into account */ + int offset; tm = *localtime (&t); + + /* Calculate the current offset from the week start day. */ + offset = (tm.tm_wday + 7 - week_start_day) % 7; + tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; - tm.tm_mday -= tm.tm_wday; + tm.tm_mday -= offset; tm.tm_isdst = -1; return mktime (&tm); } +/* Returns the end of the week. week_start_day should use the same values + as mktime(), i.e. 0 (Sun) to 6 (Sat). */ time_t -time_week_end (time_t t) +time_week_end (time_t t, int week_start_day) { struct tm tm; - - /* FIXME: make it take week_starts_on_monday into account */ + int offset; tm = *localtime (&t); + + /* Calculate the current offset from the week start day. */ + offset = (tm.tm_wday + 7 - week_start_day) % 7; + tm.tm_hour = 0; tm.tm_min = 0; tm.tm_sec = 0; - tm.tm_mday += 7 - tm.tm_wday; + tm.tm_mday += 7 - offset; tm.tm_isdst = -1; return mktime (&tm); -- cgit