diff options
author | Arturo Espinosa <unammx@src.gnome.org> | 1998-04-02 15:45:48 +0800 |
---|---|---|
committer | Arturo Espinosa <unammx@src.gnome.org> | 1998-04-02 15:45:48 +0800 |
commit | 33b0ab0d0f19c405445315446fd584748538a1ed (patch) | |
tree | 50e3d08bc900724b268698fdab5ba0e751b1235e /calendar/gui/view-utils.c | |
parent | 0b8a6756acbe25490201ec50441cc82f4f703cb8 (diff) | |
download | gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar.gz gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar.bz2 gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar.lz gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar.xz gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.tar.zst gsoc2013-evolution-33b0ab0d0f19c405445315446fd584748538a1ed.zip |
Oops, forgot these - Federico
svn path=/trunk/; revision=92
Diffstat (limited to 'calendar/gui/view-utils.c')
-rw-r--r-- | calendar/gui/view-utils.c | 113 |
1 files changed, 113 insertions, 0 deletions
diff --git a/calendar/gui/view-utils.c b/calendar/gui/view-utils.c new file mode 100644 index 0000000000..6b317fd70e --- /dev/null +++ b/calendar/gui/view-utils.c @@ -0,0 +1,113 @@ +/* Miscellaneous utility functions for the calendar view widgets + * + * Copyright (C) 1998 The Free Software Foundation + * + * Author: Federico Mena <federico@nuclecu.unam.mx> + */ + +#include <string.h> +#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); +} |