From ae353b456cb569f4beb3e16ae2cf059d9a001c23 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Sat, 17 Jan 2004 23:34:46 +0000 Subject: month and week view printing works again, day view is next to fix 2004-01-18 Radek Doulik * gui/print.c (print_border_with_triangles): use rgb color as fillcolor (print_week_day_event): ditto * gui/e-cal-model.c (e_cal_model_get_rgb_color_for_component): new helper function, gets component color as rgb double values * gui/print.c (print_week_summary_cb): uncommented and updated for e_cal_model_generate_instances (print_week_summary): use e_cal_model_generate_instances (print_border_with_triangles): pass rgb fillcolor (print_border_rgb): new function to print border with rgb color background * gui/e-cal-model.c (e_cal_model_generate_instances): new function, similar to e_cal_generate_instances. see comments to understand how to use cb_data svn path=/trunk/; revision=24292 --- calendar/gui/e-cal-model.c | 53 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) (limited to 'calendar/gui/e-cal-model.c') diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c index 9ac1104380..cb463deb21 100644 --- a/calendar/gui/e-cal-model.c +++ b/calendar/gui/e-cal-model.c @@ -1517,6 +1517,31 @@ e_cal_model_get_color_for_component (ECalModel *model, ECalModelComponent *comp_ return color; } +/** + * e_cal_model_get_rgb_color_for_component + */ +gboolean +e_cal_model_get_rgb_color_for_component (ECalModel *model, ECalModelComponent *comp_data, double *red, double *green, double *blue) +{ + GdkColor gdk_color; + const gchar *color; + + color = e_cal_model_get_color_for_component (model, comp_data); + if (color && gdk_color_parse (color, &gdk_color)) { + + if (red) + *red = ((double) gdk_color.red)/0xffff; + if (green) + *green = ((double) gdk_color.green)/0xffff; + if (blue) + *blue = ((double) gdk_color.blue)/0xffff; + + return TRUE; + } + + return FALSE; +} + /** * e_cal_model_get_component_at */ @@ -1595,3 +1620,31 @@ e_cal_model_free_component_data (ECalModelComponent *comp_data) g_free (comp_data); } + +/** + * e_cal_model_generate_instances + * + * cb function is not called with cb_data, but with ECalModelGenerateInstancesData which contains cb_data + */ +void +e_cal_model_generate_instances (ECalModel *model, time_t start, time_t end, + ECalRecurInstanceFn cb, gpointer cb_data) +{ + ECalModelGenerateInstancesData mdata; + gint i, n; + + n = e_table_model_row_count (E_TABLE_MODEL (model)); + for (i = 0; i < n; i ++) { + ECalModelComponent *comp_data = e_cal_model_get_component_at (model, i); + ECalComponent *comp = e_cal_component_new (); + + e_cal_component_set_icalcomponent (comp, icalcomponent_new_clone (comp_data->icalcomp)); + mdata.comp_data = comp_data; + mdata.cb_data = cb_data; + e_cal_recur_generate_instances (comp, start, end, + cb, &mdata, + e_cal_resolve_tzid_cb, comp_data->client, + e_cal_model_get_timezone (model)); + g_object_unref (comp); + } +} -- cgit v1.2.3