aboutsummaryrefslogtreecommitdiffstats
path: root/calendar/cal-client/cal-query.c
diff options
context:
space:
mode:
Diffstat (limited to 'calendar/cal-client/cal-query.c')
-rw-r--r--calendar/cal-client/cal-query.c374
1 files changed, 0 insertions, 374 deletions
diff --git a/calendar/cal-client/cal-query.c b/calendar/cal-client/cal-query.c
deleted file mode 100644
index e77f5ad3e9..0000000000
--- a/calendar/cal-client/cal-query.c
+++ /dev/null
@@ -1,374 +0,0 @@
-/* Evolution calendar - Live query client object
- *
- * Copyright (C) 2001 Ximian, Inc.
- *
- * Author: Federico Mena-Quintero <federico@ximian.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of version 2 of the GNU General Public
- * License as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
- */
-
-#ifdef HAVE_CONFIG_H
-#include <config.h>
-#endif
-
-#include <string.h>
-#include <bonobo/bonobo-exception.h>
-#include "cal-marshal.h"
-#include "cal-client.h"
-#include "cal-query.h"
-#include "query-listener.h"
-
-
-
-/* Private part of the CalQuery structure */
-struct _CalQueryPrivate {
- /* Handle to the query in the server */
- GNOME_Evolution_Calendar_Query query;
-
- /* Our query listener implementation */
- QueryListener *listener;
-
- /* The CalClient associated with this query */
- CalClient *client;
-};
-
-/* Property IDs */
-enum props {
- PROP_0,
- PROP_QUERY,
- PROP_LISTENER,
- PROP_CLIENT
-};
-
-/* Signal IDs */
-enum {
- OBJECTS_ADDED,
- OBJECTS_MODIFIED,
- OBJECTS_REMOVED,
- QUERY_PROGRESS,
- QUERY_DONE,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL];
-
-static GObjectClass *parent_class;
-
-
-
-static void
-objects_added_cb (QueryListener *listener, GList *objects, gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- g_signal_emit (G_OBJECT (query), signals[OBJECTS_ADDED], 0, objects);
-}
-
-static void
-objects_modified_cb (QueryListener *listener, GList *objects, gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- g_signal_emit (G_OBJECT (query), signals[OBJECTS_MODIFIED], 0, objects);
-}
-
-static void
-objects_removed_cb (QueryListener *listener, GList *uids, gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- g_signal_emit (G_OBJECT (query), signals[OBJECTS_REMOVED], 0, uids);
-}
-
-static void
-query_progress_cb (QueryListener *listener, const char *message, int percent, gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- g_signal_emit (G_OBJECT (query), signals[QUERY_PROGRESS], 0, message, percent);
-}
-
-static void
-query_done_cb (QueryListener *listener, ECalendarStatus status, gpointer data)
-{
- CalQuery *query;
-
- query = CAL_QUERY (data);
-
- g_signal_emit (G_OBJECT (query), signals[QUERY_DONE], 0, status);
-}
-
-/* Object initialization function for the calendar query */
-static void
-cal_query_init (CalQuery *query, CalQueryClass *klass)
-{
- CalQueryPrivate *priv;
-
- priv = g_new0 (CalQueryPrivate, 1);
- query->priv = priv;
-
- priv->listener = NULL;
- priv->query = CORBA_OBJECT_NIL;
-}
-
-static void
-cal_query_set_property (GObject *object, guint property_id, const GValue *value, GParamSpec *pspec)
-{
- CalQuery *query;
- CalQueryPrivate *priv;
-
- query = CAL_QUERY (object);
- priv = query->priv;
-
- switch (property_id) {
- case PROP_QUERY:
- priv->query = bonobo_object_dup_ref (g_value_get_pointer (value), NULL);
- break;
- case PROP_LISTENER:
- priv->listener = bonobo_object_ref (g_value_get_pointer (value));
-
- g_signal_connect (G_OBJECT (priv->listener), "objects_added",
- G_CALLBACK (objects_added_cb), query);
- g_signal_connect (G_OBJECT (priv->listener), "objects_modified",
- G_CALLBACK (objects_modified_cb), query);
- g_signal_connect (G_OBJECT (priv->listener), "objects_removed",
- G_CALLBACK (objects_removed_cb), query);
- g_signal_connect (G_OBJECT (priv->listener), "query_progress",
- G_CALLBACK (query_progress_cb), query);
- g_signal_connect (G_OBJECT (priv->listener), "query_done",
- G_CALLBACK (query_done_cb), query);
- break;
- case PROP_CLIENT:
- priv->client = CAL_CLIENT (g_value_dup_object (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-static void
-cal_query_get_property (GObject *object, guint property_id, GValue *value, GParamSpec *pspec)
-{
- CalQuery *query;
- CalQueryPrivate *priv;
-
- query = CAL_QUERY (object);
- priv = query->priv;
-
- switch (property_id) {
- case PROP_QUERY:
- g_value_set_pointer (value, priv->query);
- break;
- case PROP_LISTENER:
- g_value_set_pointer (value, priv->listener);
- break;
- case PROP_CLIENT:
- g_value_set_object (value, priv->client);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- break;
- }
-}
-
-
-/* Finalize handler for the calendar query */
-static void
-cal_query_finalize (GObject *object)
-{
- CalQuery *query;
- CalQueryPrivate *priv;
-
- g_return_if_fail (object != NULL);
- g_return_if_fail (IS_CAL_QUERY (object));
-
- query = CAL_QUERY (object);
- priv = query->priv;
-
- /* The server keeps a copy of the query listener, so we must unref it */
- g_signal_handlers_disconnect_matched (priv->listener, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, query);
- bonobo_object_unref (BONOBO_OBJECT (priv->listener));
-
- if (priv->query != CORBA_OBJECT_NIL)
- bonobo_object_release_unref (priv->query, NULL);
-
- g_free (priv);
-
- if (G_OBJECT_CLASS (parent_class)->finalize)
- (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-}
-
-/* Class initialization function for the calendar query */
-static void
-cal_query_class_init (CalQueryClass *klass)
-{
- GObjectClass *object_class;
- GParamSpec *param;
-
- object_class = (GObjectClass *) klass;
-
- parent_class = g_type_class_peek_parent (klass);
-
- object_class->set_property = cal_query_set_property;
- object_class->get_property = cal_query_get_property;
- object_class->finalize = cal_query_finalize;
-
- param = g_param_spec_pointer ("query", NULL, NULL,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_QUERY, param);
- param = g_param_spec_pointer ("listener", NULL, NULL,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_LISTENER, param);
- param = g_param_spec_object ("client", NULL, NULL, CAL_CLIENT_TYPE,
- G_PARAM_READABLE | G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY);
- g_object_class_install_property (object_class, PROP_CLIENT, param);
-
- signals[OBJECTS_ADDED] =
- g_signal_new ("objects_added",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (CalQueryClass, objects_added),
- NULL, NULL,
- cal_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, G_TYPE_POINTER);
- signals[OBJECTS_MODIFIED] =
- g_signal_new ("objects_modified",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (CalQueryClass, objects_modified),
- NULL, NULL,
- cal_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, G_TYPE_POINTER);
- signals[OBJECTS_REMOVED] =
- g_signal_new ("objects_removed",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (CalQueryClass, objects_removed),
- NULL, NULL,
- cal_marshal_VOID__POINTER,
- G_TYPE_NONE, 1, G_TYPE_POINTER);
- signals[QUERY_PROGRESS] =
- g_signal_new ("query_progress",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (CalQueryClass, query_progress),
- NULL, NULL,
- cal_marshal_VOID__POINTER,
- G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_INT);
- signals[QUERY_DONE] =
- g_signal_new ("query_done",
- G_TYPE_FROM_CLASS (klass),
- G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (CalQueryClass, query_done),
- NULL, NULL,
- cal_marshal_VOID__INT,
- G_TYPE_NONE, 1, G_TYPE_INT);
-}
-
-/**
- * cal_query_get_type:
- *
- * Registers the #CalQuery class if necessary, and returns the type ID assigned
- * to it.
- *
- * Return value: The type ID of the #CalQuery class.
- **/
-GType
-cal_query_get_type (void)
-{
- static GType cal_query_type = 0;
-
- if (!cal_query_type) {
- static GTypeInfo info = {
- sizeof (CalQueryClass),
- (GBaseInitFunc) NULL,
- (GBaseFinalizeFunc) NULL,
- (GClassInitFunc) cal_query_class_init,
- NULL, NULL,
- sizeof (CalQuery),
- 0,
- (GInstanceInitFunc) cal_query_init
- };
- cal_query_type = g_type_register_static (G_TYPE_OBJECT, "CalQuery", &info, 0);
- }
-
- return cal_query_type;
-}
-
-/**
- * cal_query_new:
- * @client: Client from which the query is being created.
- * @cal: Handle to an open calendar.
- * @sexp: S-expression that defines the query.
- *
- * Creates a new query object by issuing the query creation request to the
- * calendar server.
- *
- * Return value: A newly-created query object, or NULL if the request failed.
- **/
-CalQuery *
-cal_query_new (GNOME_Evolution_Calendar_Query corba_query, QueryListener *listener, CalClient *client)
-{
- CalQuery *query;
-
- query = g_object_new (CAL_QUERY_TYPE, "query", corba_query, "listener",
- listener, "client", client, NULL);
-
- return query;
-}
-
-/**
- * cal_query_get_client
- * @query: A #CalQuery object.
- *
- * Get the #CalClient associated with this query.
- *
- * Returns: the associated client.
- */
-CalClient *
-cal_query_get_client (CalQuery *query)
-{
- g_return_val_if_fail (IS_CAL_QUERY (query), NULL);
-
- return query->priv->client;
-}
-
-void
-cal_query_start (CalQuery *query)
-{
- CalQueryPrivate *priv;
- CORBA_Environment ev;
-
- g_return_if_fail (query != NULL);
- g_return_if_fail (IS_CAL_QUERY (query));
-
- priv = query->priv;
-
- CORBA_exception_init (&ev);
-
- GNOME_Evolution_Calendar_Query_start (priv->query, &ev);
- if (BONOBO_EX (&ev))
- g_warning (G_STRLOC ": Unable to start query");
-
- CORBA_exception_free (&ev);
-}