diff options
author | Matthew Barnes <mbarnes@src.gnome.org> | 2008-10-04 12:46:50 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@src.gnome.org> | 2008-10-04 12:46:50 +0800 |
commit | 2c71859895d091f51dea23f9ed9552a0962b7ba4 (patch) | |
tree | 0b5e24581de31595b494e9c1b359d487ad1f3f48 /calendar/modules/e-task-shell-view-private.c | |
parent | ff5e0b312d04daf97b35616b55280ae7f2d17cf7 (diff) | |
download | gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar.gz gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar.bz2 gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar.lz gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar.xz gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.tar.zst gsoc2013-evolution-2c71859895d091f51dea23f9ed9552a0962b7ba4.zip |
Tweak some aspects of the Contacts module to be more consistent with
Tasks and Memos.
Take a crack at handling command-line URIs. It's far too long-winded
though. Will need to revisit and tighten up the code.
svn path=/branches/kill-bonobo/; revision=36554
Diffstat (limited to 'calendar/modules/e-task-shell-view-private.c')
-rw-r--r-- | calendar/modules/e-task-shell-view-private.c | 93 |
1 files changed, 91 insertions, 2 deletions
diff --git a/calendar/modules/e-task-shell-view-private.c b/calendar/modules/e-task-shell-view-private.c index 825b039420..bd48cf3f23 100644 --- a/calendar/modules/e-task-shell-view-private.c +++ b/calendar/modules/e-task-shell-view-private.c @@ -321,7 +321,11 @@ e_task_shell_view_execute_search (ETaskShellView *task_shell_view) FilterRule *rule; const gchar *format; const gchar *text; + time_t start_range; + time_t end_range; + gchar *start, *end; gchar *query; + gchar *temp; gint value; shell_view = E_SHELL_VIEW (task_shell_view); @@ -364,7 +368,92 @@ e_task_shell_view_execute_search (ETaskShellView *task_shell_view) /* Apply selected filter. */ value = e_shell_content_get_filter_value (shell_content); - /* FIXME */ + switch (value) { + case TASK_FILTER_ANY_CATEGORY: + break; + + case TASK_FILTER_UNMATCHED: + temp = g_strdup_printf ( + "(and (has-categories? #f) %s)", query); + g_free (query); + query = temp; + break; + + case TASK_FILTER_NEXT_7_DAYS_TASKS: + start_range = time (NULL); + end_range = time_add_day (start_range, 7); + start = isodate_from_time_t (start_range); + end = isodate_from_time_t (end_range); + + temp = g_strdup_printf ( + "(and %s (due-in-time-range? " + "(make-time \"%s\") (make-time \"%s\")))", + query, start, end); + g_free (query); + query = temp; + break; + + case TASK_FILTER_ACTIVE_TASKS: + start_range = time (NULL); + end_range = time_add_day (start_range, 365); + start = isodate_from_time_t (start_range); + end = isodate_from_time_t (end_range); + + temp = g_strdup_printf ( + "(and %s (due-in-time-range? " + "(make-time \"%s\") (make-time \"%s\")) " + "(not (is-completed?)))", + query, start, end); + g_free (query); + query = temp; + break; + + case TASK_FILTER_OVERDUE_TASKS: + start_range = 0; + end_range = time (NULL); + start = isodate_from_time_t (start_range); + end = isodate_from_time_t (end_range); + + temp = g_strdup_printf ( + "(and %s (due-in-time-range? " + "(make-time \"%s\") (make-time \"%s\")) " + "(not (is-completed?)))", + query, start, end); + g_free (query); + query = temp; + break; + + case TASK_FILTER_COMPLETED_TASKS: + temp = g_strdup_printf ( + "(and (is-completed?) %s)", query); + g_free (query); + query = temp; + break; + + case TASK_FILTER_TASKS_WITH_ATTACHMENTS: + temp = g_strdup_printf ( + "(and (has-attachments?) %s)", query); + g_free (query); + query = temp; + break; + + default: + { + GList *categories; + const gchar *category_name; + + categories = e_categories_get_list (); + category_name = g_list_nth_data (categories, value); + g_list_free (categories); + + temp = g_strdup_printf ( + "(and (has-categories? \"%s\") %s)", + category_name, query); + g_free (query); + query = temp; + break; + } + } /* XXX This is wrong. We need to programmatically construct a * FilterRule, tell it to build code, and pass the resulting @@ -402,7 +491,7 @@ e_task_shell_view_open_task (ETaskShellView *task_shell_view, uid = icalcomponent_get_uid (comp_data->icalcomp); editor = comp_editor_find_instance (uid); - if (editor == NULL) + if (editor != NULL) goto exit; comp = e_cal_component_new (); |