[evolution-groupwise] Bug #664572 - Change e_cal_backend_notify_component* to use ECalComponent
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-groupwise] Bug #664572 - Change e_cal_backend_notify_component* to use ECalComponent
- Date: Thu, 24 Nov 2011 11:37:45 +0000 (UTC)
commit 99543430a5074a5607499117ffd82899324e57ad
Author: Milan Crha <mcrha redhat com>
Date: Thu Nov 24 12:37:26 2011 +0100
Bug #664572 - Change e_cal_backend_notify_component* to use ECalComponent
src/calendar/e-cal-backend-groupwise.c | 131 ++++++++++++++++----------------
1 files changed, 67 insertions(+), 64 deletions(-)
---
diff --git a/src/calendar/e-cal-backend-groupwise.c b/src/calendar/e-cal-backend-groupwise.c
index ab40b61..656985e 100644
--- a/src/calendar/e-cal-backend-groupwise.c
+++ b/src/calendar/e-cal-backend-groupwise.c
@@ -361,12 +361,9 @@ populate_cache (ECalBackendGroupwise *cbgw)
notify_view_progress (E_CAL_BACKEND (cbgw), percent, _("Loading items"));
if (E_IS_CAL_COMPONENT (comp)) {
- gchar *comp_str;
-
e_cal_component_commit_sequence (comp);
- comp_str = e_cal_component_get_as_string (comp);
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), (const gchar *) comp_str);
- g_free (comp_str);
+ e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), comp);
+
put_component_to_store (cbgw, comp);
g_object_unref (comp);
}
@@ -504,7 +501,7 @@ get_deltas (gpointer handle)
for (; item_list != NULL; item_list = g_list_next (item_list)) {
EGwItem *item = NULL;
ECalComponent *modified_comp = NULL, *cache_comp = NULL;
- gchar *cache_comp_str = NULL, *modif_comp_str, *rid = NULL;
+ gchar *rid = NULL;
icaltimetype *tt = NULL, *c_tt = NULL;
const gchar *uid;
@@ -528,20 +525,14 @@ get_deltas (gpointer handle)
e_cal_component_commit_sequence (cache_comp);
}
- if (!c_tt || icaltime_compare (*tt, *c_tt) == 1)
- {
- modif_comp_str = e_cal_component_get_as_string (modified_comp);
+ if (!c_tt || icaltime_compare (*tt, *c_tt) == 1) {
if (cache_comp) {
- cache_comp_str = e_cal_component_get_as_string (cache_comp);
- e_cal_backend_notify_object_modified (E_CAL_BACKEND (cbgw), cache_comp_str, modif_comp_str);
+ e_cal_backend_notify_component_modified (E_CAL_BACKEND (cbgw), cache_comp, modified_comp);
} else {
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), modif_comp_str);
+ e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), modified_comp);
}
- g_free (modif_comp_str);
- g_free (cache_comp_str);
- cache_comp_str = NULL;
put_component_to_store (cbgw, modified_comp);
}
@@ -681,16 +672,13 @@ get_deltas (gpointer handle)
icalcomp = e_cal_component_get_icalcomponent (comp);
if (kind == icalcomponent_isa (icalcomp)) {
- gchar *comp_str = NULL;
ECalComponentId *id = e_cal_component_get_id (comp);
- comp_str = e_cal_component_get_as_string (comp);
- e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw),
- id, comp_str, NULL);
+ e_cal_backend_notify_component_removed (E_CAL_BACKEND (cbgw),
+ id, comp, NULL);
e_cal_backend_store_remove_component (store, id->uid, id->rid);
e_cal_component_free_id (id);
- g_free (comp_str);
}
g_object_unref (comp);
}
@@ -704,7 +692,6 @@ get_deltas (gpointer handle)
for (l = item_list; l != NULL; l = l->next) {
ECalComponent *comp = NULL;
EGwItem *item = NULL;
- gchar *tmp = NULL;
item = (EGwItem *) l->data;
comp = e_gw_item_to_cal_component (item, cbgw);
@@ -712,9 +699,7 @@ get_deltas (gpointer handle)
e_cal_component_commit_sequence (comp);
put_component_to_store (cbgw, comp);
if (kind == icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
- tmp = e_cal_component_get_as_string (comp);
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), tmp);
- g_free (tmp);
+ e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), comp);
}
g_object_unref (comp);
}
@@ -1672,26 +1657,52 @@ static void
e_cal_backend_groupwise_start_view (ECalBackend *backend,
EDataCalView *query)
{
- GSList *objects = NULL;
+ ECalBackendGroupwise *cbgw;
+ ECalBackendGroupwisePrivate *priv;
+ ECalBackendSExp *cbsexp;
+ GSList *components, *l;
+ gboolean search_needed = TRUE;
+ time_t occur_start = -1, occur_end = -1;
+ gboolean prunning_by_time;
+ const gchar *sexp;
GError *err = NULL;
- e_cal_backend_groupwise_get_object_list (E_CAL_BACKEND_SYNC (backend), NULL, NULL,
- e_data_cal_view_get_text (query), &objects, &err);
- if (err) {
+ cbgw = E_CAL_BACKEND_GROUPWISE (backend);
+ priv = cbgw->priv;
+
+ cbsexp = e_data_cal_view_get_object_sexp (query);
+ if (!cbsexp) {
+ err = EDC_ERROR (InvalidQuery);
e_data_cal_view_notify_complete (query, err);
g_error_free (err);
return;
}
- /* notify listeners of all objects */
- if (objects) {
- e_data_cal_view_notify_objects_added (query, objects);
+ sexp = e_data_cal_view_get_text (query);
+ if (!sexp || !*sexp || g_str_equal (sexp, "#t"))
+ search_needed = FALSE;
+
+ prunning_by_time = e_cal_backend_sexp_evaluate_occur_times (cbsexp,
+ &occur_start,
+ &occur_end);
+ components = prunning_by_time ?
+ e_cal_backend_store_get_components_occuring_in_range (priv->store, occur_start, occur_end)
+ : e_cal_backend_store_get_components (priv->store);
+
+ for (l = components; l != NULL; l = l->next) {
+ ECalComponent *comp = E_CAL_COMPONENT (l->data);
- /* free memory */
- g_slist_foreach (objects, (GFunc) g_free, NULL);
- g_slist_free (objects);
+ if (e_cal_backend_get_kind (E_CAL_BACKEND (backend)) ==
+ icalcomponent_isa (e_cal_component_get_icalcomponent (comp))) {
+ if ((!search_needed) ||
+ (e_cal_backend_sexp_match_comp (cbsexp, comp, E_CAL_BACKEND (backend)))) {
+ e_data_cal_view_notify_components_added_1 (query, comp);
+ }
+ }
}
+ g_slist_free_full (components, g_object_unref);
+
e_data_cal_view_notify_complete (query, NULL);
}
@@ -1749,7 +1760,7 @@ e_cal_backend_groupwise_internal_get_timezone (ECalBackend *backend,
static EGwConnectionStatus
update_from_server (ECalBackendGroupwise *cbgw,
GSList *uid_list,
- icalcomponent **new_icalcomp,
+ ECalComponent **new_ecalcomp,
ECalComponent *comp)
{
EGwConnectionStatus stat;
@@ -1787,11 +1798,11 @@ update_from_server (ECalBackendGroupwise *cbgw,
put_component_to_store (cbgw, e_cal_comp);
if (i == 0) {
- *new_icalcomp = icalcomponent_new_clone (e_cal_component_get_icalcomponent (e_cal_comp));
+ *new_ecalcomp = e_cal_component_clone (e_cal_comp);
}
if (i != 0) {
- e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), e_cal_component_get_icalcomponent (e_cal_comp));
+ e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), e_cal_comp);
}
g_object_unref (e_cal_comp);
@@ -1807,7 +1818,7 @@ e_cal_backend_groupwise_create_object (ECalBackendSync *backend,
GCancellable *cancellable,
const gchar *in_calobj,
gchar **uid,
- icalcomponent **new_icalcomp,
+ ECalComponent **new_ecalcomp,
GError **error)
{
ECalBackendGroupwise *cbgw;
@@ -1822,7 +1833,7 @@ e_cal_backend_groupwise_create_object (ECalBackendSync *backend,
e_return_data_cal_error_if_fail (E_IS_CAL_BACKEND_GROUPWISE (cbgw), InvalidArg);
e_return_data_cal_error_if_fail (in_calobj != NULL, InvalidArg);
- e_return_data_cal_error_if_fail (new_icalcomp != NULL, InvalidArg);
+ e_return_data_cal_error_if_fail (new_ecalcomp != NULL, InvalidArg);
if (!e_backend_get_online (E_BACKEND (backend))) {
in_offline (cbgw);
@@ -1876,7 +1887,7 @@ e_cal_backend_groupwise_create_object (ECalBackendSync *backend,
}
/* Get the item back from server to update the last-modified time */
- status = update_from_server (cbgw, uid_list, new_icalcomp, comp);
+ status = update_from_server (cbgw, uid_list, new_ecalcomp, comp);
if (status != E_GW_CONNECTION_STATUS_OK) {
g_propagate_error (error, EDC_ERROR_FAILED_STATUS (OtherError, status));
return;
@@ -1932,8 +1943,8 @@ e_cal_backend_groupwise_modify_object (ECalBackendSync *backend,
GCancellable *cancellable,
const gchar *calobj,
CalObjModType mod,
- icalcomponent **old_icalcomp,
- icalcomponent **new_icalcomp,
+ ECalComponent **old_ecalcomp,
+ ECalComponent **new_ecalcomp,
GError **error)
{
ECalBackendGroupwise *cbgw;
@@ -1945,7 +1956,7 @@ e_cal_backend_groupwise_modify_object (ECalBackendSync *backend,
const gchar *uid = NULL;
gchar *rid = NULL;
- *old_icalcomp = NULL;
+ *old_ecalcomp = NULL;
cbgw = E_CAL_BACKEND_GROUPWISE (backend);
priv = cbgw->priv;
@@ -2005,7 +2016,7 @@ e_cal_backend_groupwise_modify_object (ECalBackendSync *backend,
}
put_component_to_store (cbgw, comp);
- *new_icalcomp = icalcomponent_new_clone (e_cal_component_get_icalcomponent (comp));
+ *new_ecalcomp = e_cal_component_clone (comp);
break;
}
@@ -2064,7 +2075,7 @@ e_cal_backend_groupwise_modify_object (ECalBackendSync *backend,
put_component_to_store (cbgw, comp);
}
- *old_icalcomp = icalcomponent_new_clone (e_cal_component_get_icalcomponent (cache_comp));
+ *old_ecalcomp = e_cal_component_clone (cache_comp);
g_object_unref (cache_comp);
g_object_unref (comp);
g_free (rid);
@@ -2099,8 +2110,8 @@ e_cal_backend_groupwise_remove_object (ECalBackendSync *backend,
const gchar *uid,
const gchar *rid,
CalObjModType mod,
- icalcomponent **old_icalcomp,
- icalcomponent **new_icalcomp,
+ ECalComponent **old_ecalcomp,
+ ECalComponent **new_ecalcomp,
GError **perror)
{
ECalBackendGroupwise *cbgw;
@@ -2112,7 +2123,7 @@ e_cal_backend_groupwise_remove_object (ECalBackendSync *backend,
cbgw = E_CAL_BACKEND_GROUPWISE (backend);
priv = cbgw->priv;
- *old_icalcomp = *new_icalcomp = NULL;
+ *old_ecalcomp = *new_ecalcomp = NULL;
/* if online, remove the item from the server */
if (e_backend_get_online (E_BACKEND (backend))) {
@@ -2153,8 +2164,8 @@ e_cal_backend_groupwise_remove_object (ECalBackendSync *backend,
g_propagate_error (perror, EDC_ERROR (ObjectNotFound));
return;
}
- *new_icalcomp = NULL;
- *old_icalcomp = icalparser_parse_string (calobj);
+ *new_ecalcomp = NULL;
+ *old_ecalcomp = e_cal_component_new_from_icalcomponent (icalparser_parse_string (calobj));
g_free (calobj);
return;
} else {
@@ -2197,9 +2208,7 @@ e_cal_backend_groupwise_remove_object (ECalBackendSync *backend,
e_cal_backend_store_remove_component (priv->store, id->uid,
id->rid);
if (!id->rid || !g_str_equal (id->rid, rid)) {
- gchar *comp_str = e_cal_component_get_as_string (comp);
- e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, comp_str, NULL);
- g_free (comp_str);
+ e_cal_backend_notify_component_removed (E_CAL_BACKEND (cbgw), id, comp, NULL);
}
e_cal_component_free_id (id);
@@ -2209,8 +2218,8 @@ e_cal_backend_groupwise_remove_object (ECalBackendSync *backend,
/* Setting NULL would trigger another signal.
* We do not set the *object to NULL */
g_slist_free (comp_list);
- *old_icalcomp = icalparser_parse_string (calobj);
- *new_icalcomp = NULL;
+ *old_ecalcomp = e_cal_component_new_from_icalcomponent (icalparser_parse_string (calobj));
+ *new_ecalcomp = NULL;
g_free (calobj);
return;
} else {
@@ -2423,28 +2432,22 @@ receive_object (ECalBackendGroupwise *cbgw,
ECalComponentId *id = e_cal_component_get_id (component);
if (e_cal_backend_store_remove_component (priv->store, id->uid, id->rid)) {
- gchar *comp_str = e_cal_component_get_as_string (component);
- e_cal_backend_notify_object_removed (E_CAL_BACKEND (cbgw), id, comp_str, NULL);
- g_free (comp_str);
+ e_cal_backend_notify_component_removed (E_CAL_BACKEND (cbgw), id, component, NULL);
}
e_cal_component_free_id (id);
} else {
- gchar *comp_str = NULL;
ECalComponentTransparency transp;
change_status (component, pstatus, e_gw_connection_get_user_email (priv->cnc));
e_cal_component_get_transparency (comp, &transp);
e_cal_component_set_transparency (component, transp);
put_component_to_store (cbgw, comp);
- comp_str = e_cal_component_get_as_string (component);
if (found)
- e_cal_backend_notify_object_modified (E_CAL_BACKEND (cbgw), comp_str, comp_str);
+ e_cal_backend_notify_component_modified (E_CAL_BACKEND (cbgw), component, component);
else
- e_cal_backend_notify_object_created (E_CAL_BACKEND (cbgw), comp_str);
-
- g_free (comp_str);
+ e_cal_backend_notify_component_created (E_CAL_BACKEND (cbgw), component);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]