new method.

2002-04-05  Rodrigo Moya <rodrigo@ximian.com>

	* pcs/cal-backend.[ch] (cal_backend_get_query): new method.

	* pcs/cal-backend-file.c (cal_backend_file_get_query): new method.

	* pcs/cal.c (impl_Cal_get_query): call the CalBackend's implementation
	instead of calling query_new directly.

	* pcs/query.[ch]: fixed headers.

svn path=/trunk/; revision=16443
This commit is contained in:
Rodrigo Moya
2002-04-11 23:05:56 +00:00
committed by Rodrigo Moya
parent 48182f64e8
commit 045c2a07b9
7 changed files with 69 additions and 2 deletions

View File

@ -1,3 +1,14 @@
2002-04-05 Rodrigo Moya <rodrigo@ximian.com>
* pcs/cal-backend.[ch] (cal_backend_get_query): new method.
* pcs/cal-backend-file.c (cal_backend_file_get_query): new method.
* pcs/cal.c (impl_Cal_get_query): call the CalBackend's implementation
instead of calling query_new directly.
* pcs/query.[ch]: fixed headers.
2002-04-10 Dan Winship <danw@ximian.com>
* gui/gnome-cal.c (gnome_calendar_open): Fix this: Rodrigo's patch

View File

@ -95,6 +95,9 @@ static CalBackendOpenStatus cal_backend_file_open (CalBackend *backend,
const char *uristr,
gboolean only_if_exists);
static gboolean cal_backend_file_is_loaded (CalBackend *backend);
static Query *cal_backend_file_get_query (CalBackend *backend,
GNOME_Evolution_Calendar_QueryListener ql,
const char *sexp);
static CalMode cal_backend_file_get_mode (CalBackend *backend);
static void cal_backend_file_set_mode (CalBackend *backend, CalMode mode);
@ -180,6 +183,7 @@ cal_backend_file_class_init (CalBackendFileClass *class)
backend_class->get_uri = cal_backend_file_get_uri;
backend_class->open = cal_backend_file_open;
backend_class->is_loaded = cal_backend_file_is_loaded;
backend_class->get_query = cal_backend_file_get_query;
backend_class->get_mode = cal_backend_file_get_mode;
backend_class->set_mode = cal_backend_file_set_mode;
backend_class->get_n_objects = cal_backend_file_get_n_objects;
@ -910,6 +914,19 @@ cal_backend_file_is_loaded (CalBackend *backend)
return (priv->icalcomp != NULL);
}
/* get_query handler for the file backend */
static Query *
cal_backend_file_get_query (CalBackend *backend,
GNOME_Evolution_Calendar_QueryListener ql,
const char *sexp)
{
CalBackendFile *cbfile;
cbfile = CAL_BACKEND_FILE (backend);
return query_new (backend, ql, sexp);
}
/* is_remote handler for the file backend */
static CalMode
cal_backend_file_get_mode (CalBackend *backend)

View File

@ -143,6 +143,7 @@ cal_backend_class_init (CalBackendClass *class)
class->get_uri = NULL;
class->open = NULL;
class->is_loaded = NULL;
class->get_query = NULL;
class->get_mode = NULL;
class->set_mode = NULL;
class->get_n_objects = NULL;
@ -296,6 +297,32 @@ cal_backend_is_loaded (CalBackend *backend)
return result;
}
/**
* cal_backend_get_query:
* @backend: A calendar backend.
* @ql: The query listener.
* @sexp: Search expression.
*
* Create a query object for this backend.
*/
Query *
cal_backend_get_query (CalBackend *backend,
GNOME_Evolution_Calendar_QueryListener ql,
const char *sexp)
{
Query *result;
g_return_val_if_fail (backend != NULL, FALSE);
g_return_val_if_fail (IS_CAL_BACKEND (backend), FALSE);
if (CLASS (backend)->get_query != NULL)
result = (* CLASS (backend)->get_query) (backend, ql, sexp);
else
result = query_new (backend, ql, sexp);
return result;
}
/**
* cal_backend_get_mode:
* @backend: A calendar backend.

View File

@ -30,6 +30,7 @@
#include "evolution-calendar.h"
#include "cal-common.h"
#include "cal.h"
#include "query.h"
BEGIN_GNOME_DECLS
@ -80,6 +81,10 @@ struct _CalBackendClass {
gboolean (* is_loaded) (CalBackend *backend);
Query *(* get_query) (CalBackend *backend,
GNOME_Evolution_Calendar_QueryListener ql,
const char *sexp);
/* Mode relate virtual methods */
CalMode (* get_mode) (CalBackend *backend);
void (* set_mode) (CalBackend *backend, CalMode mode);
@ -127,6 +132,10 @@ CalBackendOpenStatus cal_backend_open (CalBackend *backend, const char *uristr,
gboolean cal_backend_is_loaded (CalBackend *backend);
Query *cal_backend_get_query (CalBackend *backend,
GNOME_Evolution_Calendar_QueryListener ql,
const char *sexp);
CalMode cal_backend_get_mode (CalBackend *backend);
void cal_backend_set_mode (CalBackend *backend, CalMode mode);

View File

@ -24,6 +24,7 @@
#include <ical.h>
#include <bonobo/bonobo-exception.h>
#include "cal.h"
#include "cal-backend.h"
#include "query.h"
#include "wombat.h"
@ -427,7 +428,7 @@ impl_Cal_get_query (PortableServer_Servant servant,
cal = CAL (bonobo_object_from_servant (servant));
priv = cal->priv;
query = query_new (priv->backend, ql, sexp);
query = cal_backend_get_query (priv->backend, ql, sexp);
if (!query) {
bonobo_exception_set (ev, ex_GNOME_Evolution_Calendar_Cal_CouldNotCreate);
return CORBA_OBJECT_NIL;

View File

@ -32,6 +32,7 @@
#include <e-util/e-sexp.h>
#include <cal-util/cal-recur.h>
#include <cal-util/timeutil.h>
#include "cal-backend.h"
#include "query.h"

View File

@ -23,7 +23,8 @@
#include <libgnome/gnome-defs.h>
#include <bonobo/bonobo-xobject.h>
#include "cal-backend.h"
#include "cal-common.h"
#include "evolution-calendar.h"
BEGIN_GNOME_DECLS