aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/pcs/query.c
diff options
context:
space:
mode:
authorDamon Chaplin <damon@ximian.com>2001-09-18 09:35:46 +0800
committerDamon Chaplin <damon@src.gnome.org>2001-09-18 09:35:46 +0800
commit999889586bbb251669c5a384f1b5d03bd72d0a6d (patch)
tree7041172cea75e0ee3556c3629425a8cda60bd58f /calendar/pcs/query.c
parent5772dcbe43079dd8cf59e5458cb44a7a749df66f (diff)
downloadgsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar.gz
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar.bz2
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar.lz
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar.xz
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.tar.zst
gsoc2013-evolution-999889586bbb251669c5a384f1b5d03bd72d0a6d.zip
added a timeout to refresh the list every 10 minutes. Not ideal, as the
2001-09-17 Damon Chaplin <damon@ximian.com> * gui/calendar-model.c: added a timeout to refresh the list every 10 minutes. Not ideal, as the user may be editing a task when it gets refreshed. (adjust_query_sexp): use the 'completed-before?' operator to filter out tasks according to the config settings. * gui/dialogs/task-details-page.c (task_details_page_fill_widgets): added support for the 'Completed' date. This code must have got lost somewhere, as it used to work. (date_changed_cb): set the priv->updating flag while updating the other widgets. * pcs/cal-backend-file.c (cal_backend_file_update_objects): made sure we freed the components. * pcs/query.c (func_completed_before): added 'completed-before?' operator. * gui/calendar-config.c (calendar_config_configure_e_cell_date_edit): don't set the lower & upper hour. Use 0-24 like the EDateEdit does. * gui/dialogs/cal-prefs-dialog.c (cal_prefs_dialog_show_config): set the 12/24-hour time format options sensitive only if we support both. * gui/calendar-config.c (config_read): if the locale doesn't define 'am' and 'pm' strings then we must use 24-hour format. * gui/calendar-commands.c (calendar_set_folder_bar_label): don't translate the '%d' as it doesn't make much sense. Resolves bug #8027. svn path=/trunk/; revision=12925
Diffstat (limited to 'calendar/pcs/query.c')
-rw-r--r--calendar/pcs/query.c72
1 files changed, 71 insertions, 1 deletions
diff --git a/calendar/pcs/query.c b/calendar/pcs/query.c
index 1b991a85ea..3efd2bde50 100644
--- a/calendar/pcs/query.c
+++ b/calendar/pcs/query.c
@@ -830,6 +830,75 @@ func_is_completed (ESExp *esexp, int argc, ESExpResult **argv, void *data)
return result;
}
+/* (completed-before? TIME)
+ *
+ * TIME - time_t
+ *
+ * Returns a boolean indicating whether the component was completed on or
+ * before the given time (i.e. it checks the COMPLETED property).
+ * This is really only useful for TODO components.
+ */
+static ESExpResult *
+func_completed_before (ESExp *esexp, int argc, ESExpResult **argv, void *data)
+{
+ Query *query;
+ QueryPrivate *priv;
+ CalComponent *comp;
+ ESExpResult *result;
+ struct icaltimetype *tt;
+ icaltimezone *zone;
+ gboolean retval = FALSE;
+ time_t before_time, completed_time;
+
+ query = QUERY (data);
+ priv = query->priv;
+
+ g_assert (priv->next_comp != NULL);
+ comp = priv->next_comp;
+
+ /* Check argument types */
+
+ if (argc != 1) {
+ e_sexp_fatal_error (esexp, _("completed-before? expects 1 argument"));
+ return NULL;
+ }
+
+ if (argv[0]->type != ESEXP_RES_TIME) {
+ e_sexp_fatal_error (esexp, _("completed-before? expects argument 1 "
+ "to be a time_t"));
+ return NULL;
+ }
+ before_time = argv[0]->value.time;
+
+ cal_component_get_completed (comp, &tt);
+ if (tt) {
+ /* COMPLETED must be in UTC. */
+ zone = icaltimezone_get_utc_timezone ();
+ completed_time = icaltime_as_timet_with_zone (*tt, zone);
+
+#if 0
+ g_print ("Query Time : %s", ctime (&before_time));
+ g_print ("Completed Time: %s", ctime (&completed_time));
+#endif
+
+ /* We want to return TRUE if before_time is after
+ completed_time. */
+ if (difftime (before_time, completed_time) > 0) {
+#if 0
+ g_print (" Returning TRUE\n");
+#endif
+ retval = TRUE;
+ }
+
+ cal_component_free_icaltimetype (tt);
+ }
+
+ result = e_sexp_result_new (esexp, ESEXP_RES_BOOL);
+ result->value.bool = retval;
+
+ return result;
+}
+
/* Adds a component to our the UIDs hash table and notifies the client */
@@ -948,7 +1017,8 @@ static struct {
{ "occur-in-time-range?", func_occur_in_time_range },
{ "contains?", func_contains },
{ "has-categories?", func_has_categories },
- { "is-completed?", func_is_completed }
+ { "is-completed?", func_is_completed },
+ { "completed-before?", func_completed_before }
};
/* Initializes a sexp by interning our own symbols */