/* Miscellaneous utility functions for the calendar view widgets * * Copyright (C) 1998 The Free Software Foundation * * Author: Federico Mena */ #include #include "view-utils.h" /* FIXME: remove this function later */ static GList * calendar_get_events_in_range (Calendar *cal, time_t start, time_t end, GCompareFunc sort_func) { static iCalObject objs[24]; static int ready = 0; int i; GList *list; if (!ready) { struct tm tm; time_t tim; ready = 1; for (i = 0; i < 24; i++) { tim = time (NULL); tm = *localtime (&tim); tm.tm_hour = i; tm.tm_min = 0; tm.tm_sec = 0; objs[i].dtstart = mktime (&tm); tm.tm_hour = i; tm.tm_min = 30; tm.tm_sec = 0; objs[i].dtend = mktime (&tm); objs[i].summary = "Ir a chingar a tu madre"; } } list = NULL; for (i = 0; i < 8; i++) list = g_list_append (list, &objs[i]); return list; } void view_utils_draw_events (GtkWidget *widget, GdkWindow *window, GdkGC *gc, GdkRectangle *area, int flags, Calendar *calendar, time_t start, time_t end) { int font_height; int x, y, max_y; char buf[512]; int len; struct tm tm_start, tm_end; char *str; iCalObject *ico; GList *the_list, *list; gdk_gc_set_clip_rectangle (gc, area); font_height = widget->style->font->ascent + widget->style->font->descent; max_y = area->y + area->height - font_height * ((flags & VIEW_UTILS_DRAW_SPLIT) ? 2 : 1); the_list = calendar_get_events_in_range (calendar, start, end, calendar_compare_by_dtstart); for (y = area->y, list = the_list; (y < max_y) && list; y += font_height, list = list->next) { ico = list->data; tm_start = *localtime (&ico->dtstart); tm_end = *localtime (&ico->dtend); str = ico->summary; if (flags & VIEW_UTILS_DRAW_END) { strftime (buf, 512, "%X - ", &tm_start); len = strlen (buf); strftime (buf + len, 512 - len, "%X ", &tm_end); } else strftime (buf, 512, "%X ", &tm_start); gdk_draw_string (window, widget->style->font, gc, area->x, y + widget->style->font->ascent, buf); if (flags & VIEW_UTILS_DRAW_SPLIT) { y += font_height; x = widget->style->font->ascent; /* some indentation */ } else x = gdk_string_width (widget->style->font, buf); gdk_draw_string (window, widget->style->font, gc, x, y + widget->style->font->ascent, str); } g_list_free (the_list); gdk_gc_set_clip_rectangle (gc, NULL); }