From 876befb7b17f99d6baf2d6dfb42e8f3f64af93ff Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Mon, 20 Jun 2011 13:57:48 +0200 Subject: Bug #269413 - Search treats "4 weeks" and "1 month" as synonymous --- filter/e-filter-datespec.c | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) (limited to 'filter') diff --git a/filter/e-filter-datespec.c b/filter/e-filter-datespec.c index d7aa93adc1..a7c2aa2f61 100644 --- a/filter/e-filter-datespec.c +++ b/filter/e-filter-datespec.c @@ -432,12 +432,30 @@ filter_datespec_format_sexp (EFilterElement *element, g_string_append_printf (out, "%d", (gint) fds->value); break; case FDST_X_AGO: - g_string_append_printf ( - out, "(- (get-current-date) %d)", (gint) fds->value); + switch (get_best_span (fds->value)) { + case 5: /* months */ + g_string_append_printf (out, "(get-relative-months (- 0 %d))", (gint) (fds->value / timespans[5].seconds)); + break; + case 6: /* years */ + g_string_append_printf (out, "(get-relative-months (- 0 %d))", (gint) (12 * fds->value / timespans[6].seconds)); + break; + default: + g_string_append_printf (out, "(- (get-current-date) %d)", (gint) fds->value); + break; + } break; case FDST_X_FUTURE: - g_string_append_printf ( - out, "(+ (get-current-date) %d)", (gint) fds->value); + switch (get_best_span (fds->value)) { + case 5: /* months */ + g_string_append_printf (out, "(get-relative-months %d)", (gint) (fds->value / timespans[5].seconds)); + break; + case 6: /* years */ + g_string_append_printf (out, "(get-relative-months %d)", (gint) (12 * fds->value / timespans[6].seconds)); + break; + default: + g_string_append_printf (out, "(+ (get-current-date) %d)", (gint) fds->value); + break; + } break; } } -- cgit v1.2.3