aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/modules/e-task-shell-view-private.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2008-10-04 12:46:50 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2008-10-04 12:46:50 +0800
commit2c71859895d091f51dea23f9ed9552a0962b7ba4 (patch)
tree0b5e24581de31595b494e9c1b359d487ad1f3f48 /calendar/modules/e-task-shell-view-private.c
parentff5e0b312d04daf97b35616b55280ae7f2d17cf7 (diff)
downloadgsoc2013-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.c93
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 ();