aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/gui
diff options
context:
space:
mode:
authorMilan Crha <mcrha@redhat.com>2010-09-01 02:36:20 +0800
committerMilan Crha <mcrha@redhat.com>2010-09-01 02:36:20 +0800
commit062a67cc1465d7a4d02b0308e4faaa5784d02af1 (patch)
tree64dd369215e2417da98676c92cda44978f2fb89d /calendar/gui
parent96414281ab7be1080b1db902d6b5a6d83b256cc2 (diff)
downloadgsoc2013-evolution-062a67cc1465d7a4d02b0308e4faaa5784d02af1.tar.gz
gsoc2013-evolution-062a67cc1465d7a4d02b0308e4faaa5784d02af1.tar.zst
gsoc2013-evolution-062a67cc1465d7a4d02b0308e4faaa5784d02af1.zip
Bug #624021 - Honour weeks shown in a multi week view on print
Diffstat (limited to 'calendar/gui')
-rw-r--r--calendar/gui/e-cal-model.c4
-rw-r--r--calendar/gui/print.c28
2 files changed, 28 insertions, 4 deletions
diff --git a/calendar/gui/e-cal-model.c b/calendar/gui/e-cal-model.c
index d0166b9f0e..a48fc5d8ca 100644
--- a/calendar/gui/e-cal-model.c
+++ b/calendar/gui/e-cal-model.c
@@ -2779,7 +2779,9 @@ e_cal_model_generate_instances (ECalModel *model, time_t start, time_t end,
mdata.comp_data = comp_data;
mdata.cb_data = cb_data;
- e_cal_generate_instances_for_object (comp_data->client, comp_data->icalcomp, start, end, cb, &mdata);
+
+ if (comp_data->instance_start < end && comp_data->instance_end > start)
+ e_cal_generate_instances_for_object (comp_data->client, comp_data->icalcomp, start, end, cb, &mdata);
}
}
diff --git a/calendar/gui/print.c b/calendar/gui/print.c
index 1371f2d516..84ad29c8b9 100644
--- a/calendar/gui/print.c
+++ b/calendar/gui/print.c
@@ -1955,19 +1955,39 @@ print_month_summary (GtkPrintContext *context, GnomeCalendar *gcal, time_t whenc
gchar buffer[100];
PangoFontDescription *font;
gboolean compress_weekend;
- gint columns, col, weekday, month;
+ gint columns, col, weekday, month, weeks;
gdouble font_size, cell_width, x1, x2, y1, y2;
weekday = calendar_config_get_week_start_day ();
compress_weekend = calendar_config_get_compress_weekend ();
+ date = 0;
+ weeks = 6;
+ if (gnome_calendar_get_view (gcal) == GNOME_CAL_MONTH_VIEW) {
+ GnomeCalendarViewType view_type;
+ ECalendarView *calendar_view;
+ EWeekView *week_view;
+
+ view_type = gnome_calendar_get_view (gcal);
+ calendar_view = gnome_calendar_get_calendar_view (gcal, view_type);
+ week_view = E_WEEK_VIEW (calendar_view);
+
+ if (week_view && week_view->multi_week_view
+ && !(week_view->weeks_shown >= 4 &&
+ g_date_valid (&week_view->first_day_shown))) {
+ weeks = week_view->weeks_shown;
+ date = whence;
+ }
+ }
+
/* Remember which month we want. */
tt = icaltime_from_timet_with_zone (whence, FALSE, zone);
month = tt.month - 1;
/* Find the start of the month, and then the start of the week on
or before that day. */
- date = time_month_begin_with_zone (whence, zone);
+ if (!date)
+ date = time_month_begin_with_zone (whence, zone);
date = time_week_begin_with_zone (date, weekday, zone);
/* If weekends are compressed then we can't start on a Sunday. */
@@ -2015,7 +2035,7 @@ print_month_summary (GtkPrintContext *context, GnomeCalendar *gcal, time_t whenc
pango_font_description_free (font);
top = y2;
- print_week_summary (context, gcal, date, TRUE, 6, month,
+ print_week_summary (context, gcal, date, TRUE, weeks, month,
MONTH_NORMAL_FONT_SIZE,
left, right, top, bottom);
}
@@ -2517,6 +2537,8 @@ print_calendar (GnomeCalendar *gcal,
start_tt.day = g_date_get_day (&date);
start = icaltime_as_timet (start_tt);
+ } else if (week_view && week_view->multi_week_view) {
+ start = week_view->day_starts[0];
}
}