/* * Copyright (C) 2014 Red Hat, Inc. (www.redhat.com) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser 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 Lesser General Public License * for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this program; if not, see . * * Authors: Milan Crha */ #ifdef HAVE_CONFIG_H #include #endif #include "e-cal-data-model-subscriber.h" G_DEFINE_INTERFACE (ECalDataModelSubscriber, e_cal_data_model_subscriber, G_TYPE_OBJECT) static void e_cal_data_model_subscriber_default_init (ECalDataModelSubscriberInterface *iface) { } /** * e_cal_data_model_subscriber_component_added: * @subscriber: an #ECalDataModelSubscriber * @client: an #ECalClient, which notifies about the component addition * @icalcomp: an #ECalComponent which was added * * Notifies the @subscriber about an added component which belongs * to the time range used by the @subscriber. * * Note: The @subscriber can be frozen during these calls, to be able * to cumulate multiple changes and propagate them at once. **/ void e_cal_data_model_subscriber_component_added (ECalDataModelSubscriber *subscriber, ECalClient *client, ECalComponent *comp) { ECalDataModelSubscriberInterface *iface; g_return_if_fail (E_IS_CAL_DATA_MODEL_SUBSCRIBER (subscriber)); g_return_if_fail (E_IS_CAL_COMPONENT (comp)); iface = E_CAL_DATA_MODEL_SUBSCRIBER_GET_INTERFACE (subscriber); g_return_if_fail (iface->component_added != NULL); iface->component_added (subscriber, client, comp); } /** * e_cal_data_model_subscriber_component_modified: * @subscriber: an #ECalDataModelSubscriber * @client: an #ECalClient, which notifies about the component modification * @comp: an #ECalComponent which was modified * * Notifies the @subscriber about a modified component which belongs * to the time range used by the @subscriber. * * Note: The @subscriber can be frozen during these calls, to be able * to cumulate multiple changes and propagate them at once. **/ void e_cal_data_model_subscriber_component_modified (ECalDataModelSubscriber *subscriber, ECalClient *client, ECalComponent *comp) { ECalDataModelSubscriberInterface *iface; g_return_if_fail (E_IS_CAL_DATA_MODEL_SUBSCRIBER (subscriber)); g_return_if_fail (E_IS_CAL_COMPONENT (comp)); iface = E_CAL_DATA_MODEL_SUBSCRIBER_GET_INTERFACE (subscriber); g_return_if_fail (iface->component_modified != NULL); iface->component_modified (subscriber, client, comp); } /** * e_cal_data_model_subscriber_component_removed: * @subscriber: an #ECalDataModelSubscriber * @client: an #ECalClient, which notifies about the component removal * @uid: UID of a removed component * @rid: RID of a removed component * * Notifies the @subscriber about a removed component identified * by @uid and @rid. This component may or may not be within * the time range specified by the @subscriber. * * Note: The @subscriber can be frozen during these calls, to be able * to cumulate multiple changes and propagate them at once. **/ void e_cal_data_model_subscriber_component_removed (ECalDataModelSubscriber *subscriber, ECalClient *client, const gchar *uid, const gchar *rid) { ECalDataModelSubscriberInterface *iface; g_return_if_fail (E_IS_CAL_DATA_MODEL_SUBSCRIBER (subscriber)); iface = E_CAL_DATA_MODEL_SUBSCRIBER_GET_INTERFACE (subscriber); g_return_if_fail (iface->component_removed != NULL); iface->component_removed (subscriber, client, uid, rid); } /** * e_cal_data_model_subscriber_freeze: * @subscriber: an #ECalDataModelSubscriber * * Tells the @subscriber that it'll be notified about multiple * changes. Once all the notifications are done, * a e_cal_data_model_subscriber_thaw() is called. * * Note: This function can be called multiple times/recursively, with * the same count of the e_cal_data_model_subscriber_thaw(), thus * count with it. **/ void e_cal_data_model_subscriber_freeze (ECalDataModelSubscriber *subscriber) { ECalDataModelSubscriberInterface *iface; g_return_if_fail (E_IS_CAL_DATA_MODEL_SUBSCRIBER (subscriber)); iface = E_CAL_DATA_MODEL_SUBSCRIBER_GET_INTERFACE (subscriber); g_return_if_fail (iface->freeze != NULL); iface->freeze (subscriber); } /** * e_cal_data_model_subscriber_thaw: * @subscriber: an #ECalDataModelSubscriber * * A pair function for e_cal_data_model_subscriber_freeze(), which notifies * about the end of a content update. **/ void e_cal_data_model_subscriber_thaw (ECalDataModelSubscriber *subscriber) { ECalDataModelSubscriberInterface *iface; g_return_if_fail (E_IS_CAL_DATA_MODEL_SUBSCRIBER (subscriber)); iface = E_CAL_DATA_MODEL_SUBSCRIBER_GET_INTERFACE (subscriber); g_return_if_fail (iface->thaw != NULL); iface->thaw (subscriber); }