Blame src/modules/calendar/e-cal-base-shell-content.c

Packit Service de44cd
/*
Packit Service de44cd
 * Copyright (C) 2014 Red Hat, Inc. (www.redhat.com)
Packit Service de44cd
 *
Packit Service de44cd
 * This program is free software; you can redistribute it and/or modify it
Packit Service de44cd
 * under the terms of the GNU Lesser General Public License as published by
Packit Service de44cd
 * the Free Software Foundation.
Packit Service de44cd
 *
Packit Service de44cd
 * This program is distributed in the hope that it will be useful, but
Packit Service de44cd
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit Service de44cd
 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License
Packit Service de44cd
 * for more details.
Packit Service de44cd
 *
Packit Service de44cd
 * You should have received a copy of the GNU Lesser General Public License
Packit Service de44cd
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
Packit Service de44cd
 *
Packit Service de44cd
 * Authors: Milan Crha <mcrha@redhat.com>
Packit Service de44cd
 */
Packit Service de44cd
Packit Service de44cd
#include "evolution-config.h"
Packit Service de44cd
Packit Service de44cd
#include <string.h>
Packit Service de44cd
#include <glib/gi18n-lib.h>
Packit Service de44cd
Packit Service de44cd
#include "e-cal-base-shell-sidebar.h"
Packit Service de44cd
#include "e-cal-base-shell-view.h"
Packit Service de44cd
#include "e-cal-base-shell-content.h"
Packit Service de44cd
Packit Service de44cd
struct _ECalBaseShellContentPrivate {
Packit Service de44cd
	ECalDataModel *data_model;
Packit Service de44cd
	ECalModel *model;
Packit Service de44cd
	gulong object_created_id;
Packit Service de44cd
	gulong view_state_changed_id;
Packit Service de44cd
};
Packit Service de44cd
Packit Service de44cd
enum {
Packit Service de44cd
	PROP_0,
Packit Service de44cd
	PROP_DATA_MODEL,
Packit Service de44cd
	PROP_MODEL
Packit Service de44cd
};
Packit Service de44cd
Packit Service de44cd
G_DEFINE_ABSTRACT_TYPE (ECalBaseShellContent, e_cal_base_shell_content, E_TYPE_SHELL_CONTENT)
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_client_opened_cb (ECalBaseShellSidebar *cal_base_shell_sidebar,
Packit Service de44cd
					 ECalClient *client,
Packit Service de44cd
					 ECalBaseShellContent *shell_content)
Packit Service de44cd
{
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_CLIENT (client));
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (shell_content));
Packit Service de44cd
Packit Service de44cd
	e_cal_data_model_add_client (shell_content->priv->data_model, client);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_client_closed_cb (ECalBaseShellSidebar *cal_base_shell_sidebar,
Packit Service de44cd
					 ESource *source,
Packit Service de44cd
					 ECalBaseShellContent *shell_content)
Packit Service de44cd
{
Packit Service de44cd
	g_return_if_fail (E_IS_SOURCE (source));
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (shell_content));
Packit Service de44cd
Packit Service de44cd
	e_cal_data_model_remove_client (shell_content->priv->data_model, e_source_get_uid (source));
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_primary_selection_changed_cb (ESourceSelector *selector,
Packit Service de44cd
						     GParamSpec *param,
Packit Service de44cd
						     ECalBaseShellContent *shell_content)
Packit Service de44cd
{
Packit Service de44cd
	ESource *source;
Packit Service de44cd
Packit Service de44cd
	g_return_if_fail (E_IS_SOURCE_SELECTOR (selector));
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (shell_content));
Packit Service de44cd
Packit Service de44cd
	source = e_source_selector_ref_primary_selection (selector);
Packit Service de44cd
	if (source)
Packit Service de44cd
		e_cal_model_set_default_source_uid (shell_content->priv->model, e_source_get_uid (source));
Packit Service de44cd
Packit Service de44cd
	g_clear_object (&source);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_object_created_cb (ECalBaseShellContent *cal_base_shell_content,
Packit Service de44cd
					  ECalClient *client,
Packit Service de44cd
					  ECalModel *model)
Packit Service de44cd
{
Packit Service de44cd
	EShellView *shell_view;
Packit Service de44cd
	EShellSidebar *shell_sidebar;
Packit Service de44cd
	ESourceSelector *selector;
Packit Service de44cd
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_CLIENT (client));
Packit Service de44cd
Packit Service de44cd
	shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
Packit Service de44cd
Packit Service de44cd
	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
Packit Service de44cd
	selector = e_cal_base_shell_sidebar_get_selector (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
	e_source_selector_select_source (selector, e_client_get_source (E_CLIENT (client)));
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_view_state_changed_cb (ECalDataModel *data_model,
Packit Service de44cd
					      ECalClientView *view,
Packit Service de44cd
					      ECalDataModelViewState state,
Packit Service de44cd
					      guint percent,
Packit Service de44cd
					      const gchar *message,
Packit Service de44cd
					      const GError *error,
Packit Service de44cd
					      ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	EShellView *shell_view;
Packit Service de44cd
	EShellSidebar *shell_sidebar;
Packit Service de44cd
	ESourceSelector *selector;
Packit Service de44cd
	ESource *source;
Packit Service de44cd
	ECalClient *client;
Packit Service de44cd
Packit Service de44cd
	shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
Packit Service de44cd
Packit Service de44cd
	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
Packit Service de44cd
	selector = e_cal_base_shell_sidebar_get_selector (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
	client = e_cal_client_view_ref_client (view);
Packit Service de44cd
	/* Can be NULL when the corresponding source had been removed or disabled */
Packit Service de44cd
	if (!client)
Packit Service de44cd
		return;
Packit Service de44cd
Packit Service de44cd
	source = e_client_get_source (E_CLIENT (client));
Packit Service de44cd
	g_clear_object (&client);
Packit Service de44cd
Packit Service de44cd
	if (state == E_CAL_DATA_MODEL_VIEW_STATE_START ||
Packit Service de44cd
	    state == E_CAL_DATA_MODEL_VIEW_STATE_PROGRESS) {
Packit Service de44cd
		e_source_selector_set_source_is_busy (selector, source, TRUE);
Packit Service de44cd
Packit Service de44cd
		if (message) {
Packit Service de44cd
			gchar *tooltip;
Packit Service de44cd
Packit Service de44cd
			/* Translators: This is a running activity whose percent complete is known. */
Packit Service de44cd
			tooltip = g_strdup_printf (_("%s (%d%% complete)"), message, percent);
Packit Service de44cd
			e_source_selector_set_source_tooltip (selector, source, tooltip);
Packit Service de44cd
			g_free (tooltip);
Packit Service de44cd
		}
Packit Service de44cd
	} else {
Packit Service de44cd
		e_source_selector_set_source_is_busy (selector, source, FALSE);
Packit Service de44cd
		e_source_selector_set_source_tooltip (selector, source, NULL);
Packit Service de44cd
	}
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_view_created_cb (EShellWindow *shell_window,
Packit Service de44cd
					EShellView *shell_view,
Packit Service de44cd
					ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	EShellSidebar *shell_sidebar;
Packit Service de44cd
	ECalBaseShellContentClass *klass;
Packit Service de44cd
	ESourceSelector *selector;
Packit Service de44cd
Packit Service de44cd
	g_signal_handlers_disconnect_by_func (
Packit Service de44cd
		shell_window,
Packit Service de44cd
		cal_base_shell_content_view_created_cb, cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
Packit Service de44cd
	shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_VIEW (shell_view));
Packit Service de44cd
Packit Service de44cd
	shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
Packit Service de44cd
	g_return_if_fail (E_IS_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
Packit Service de44cd
	g_signal_connect (shell_sidebar, "client-opened",
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_client_opened_cb), cal_base_shell_content);
Packit Service de44cd
	g_signal_connect (shell_sidebar, "client-closed",
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_client_closed_cb), cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content->priv->object_created_id = g_signal_connect_swapped (
Packit Service de44cd
		cal_base_shell_content->priv->model, "object-created",
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_object_created_cb), cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	selector = e_cal_base_shell_sidebar_get_selector (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
	g_signal_connect (selector, "notify::primary-selection",
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_primary_selection_changed_cb), cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content->priv->view_state_changed_id = g_signal_connect (
Packit Service de44cd
		cal_base_shell_content->priv->data_model, "view-state-changed",
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_view_state_changed_cb), cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	e_cal_base_shell_sidebar_ensure_sources_open (E_CAL_BASE_SHELL_SIDEBAR (shell_sidebar));
Packit Service de44cd
Packit Service de44cd
	klass = E_CAL_BASE_SHELL_CONTENT_GET_CLASS (cal_base_shell_content);
Packit Service de44cd
	g_return_if_fail (klass != NULL);
Packit Service de44cd
Packit Service de44cd
	if (klass->view_created)
Packit Service de44cd
		klass->view_created (cal_base_shell_content);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static GCancellable *
Packit Service de44cd
cal_base_shell_content_submit_data_model_thread_job (GObject *responder,
Packit Service de44cd
						     const gchar *description,
Packit Service de44cd
						     const gchar *alert_ident,
Packit Service de44cd
						     const gchar *alert_arg_0,
Packit Service de44cd
						     EAlertSinkThreadJobFunc func,
Packit Service de44cd
						     gpointer user_data,
Packit Service de44cd
						     GDestroyNotify free_user_data)
Packit Service de44cd
{
Packit Service de44cd
	EShellView *shell_view;
Packit Service de44cd
	EActivity *activity;
Packit Service de44cd
	GCancellable *cancellable = NULL;
Packit Service de44cd
Packit Service de44cd
	g_return_val_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (responder), NULL);
Packit Service de44cd
Packit Service de44cd
	shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (responder));
Packit Service de44cd
	activity = e_shell_view_submit_thread_job (shell_view, description,
Packit Service de44cd
		alert_ident, alert_arg_0, func, user_data, free_user_data);
Packit Service de44cd
Packit Service de44cd
	if (activity) {
Packit Service de44cd
		cancellable = e_activity_get_cancellable (activity);
Packit Service de44cd
		if (cancellable)
Packit Service de44cd
			g_object_ref (cancellable);
Packit Service de44cd
		g_object_unref (activity);
Packit Service de44cd
	}
Packit Service de44cd
Packit Service de44cd
	return cancellable;
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_get_property (GObject *object,
Packit Service de44cd
				     guint property_id,
Packit Service de44cd
				     GValue *value,
Packit Service de44cd
				     GParamSpec *pspec)
Packit Service de44cd
{
Packit Service de44cd
	switch (property_id) {
Packit Service de44cd
		case PROP_DATA_MODEL:
Packit Service de44cd
			g_value_set_object (
Packit Service de44cd
				value, e_cal_base_shell_content_get_data_model (
Packit Service de44cd
				E_CAL_BASE_SHELL_CONTENT (object)));
Packit Service de44cd
			return;
Packit Service de44cd
Packit Service de44cd
		case PROP_MODEL:
Packit Service de44cd
			g_value_set_object (
Packit Service de44cd
				value, e_cal_base_shell_content_get_model (
Packit Service de44cd
				E_CAL_BASE_SHELL_CONTENT (object)));
Packit Service de44cd
			return;
Packit Service de44cd
	}
Packit Service de44cd
Packit Service de44cd
	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_dispose (GObject *object)
Packit Service de44cd
{
Packit Service de44cd
	ECalBaseShellContent *cal_base_shell_content;
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content = E_CAL_BASE_SHELL_CONTENT (object);
Packit Service de44cd
Packit Service de44cd
	e_cal_data_model_set_disposing (cal_base_shell_content->priv->data_model, TRUE);
Packit Service de44cd
Packit Service de44cd
	if (cal_base_shell_content->priv->view_state_changed_id != 0) {
Packit Service de44cd
		g_signal_handler_disconnect (cal_base_shell_content->priv->data_model,
Packit Service de44cd
			cal_base_shell_content->priv->view_state_changed_id);
Packit Service de44cd
		cal_base_shell_content->priv->view_state_changed_id = 0;
Packit Service de44cd
	}
Packit Service de44cd
Packit Service de44cd
	if (cal_base_shell_content->priv->object_created_id != 0) {
Packit Service de44cd
		g_signal_handler_disconnect (cal_base_shell_content->priv->model,
Packit Service de44cd
			cal_base_shell_content->priv->object_created_id);
Packit Service de44cd
		cal_base_shell_content->priv->object_created_id = 0;
Packit Service de44cd
	}
Packit Service de44cd
Packit Service de44cd
	/* Chain up to parent's method. */
Packit Service de44cd
	G_OBJECT_CLASS (e_cal_base_shell_content_parent_class)->dispose (object);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_finalize (GObject *object)
Packit Service de44cd
{
Packit Service de44cd
	ECalBaseShellContent *cal_base_shell_content;
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content = E_CAL_BASE_SHELL_CONTENT (object);
Packit Service de44cd
Packit Service de44cd
	if (cal_base_shell_content->priv->model &&
Packit Service de44cd
	    cal_base_shell_content->priv->data_model)
Packit Service de44cd
		e_cal_data_model_unsubscribe (cal_base_shell_content->priv->data_model,
Packit Service de44cd
			E_CAL_DATA_MODEL_SUBSCRIBER (cal_base_shell_content->priv->model));
Packit Service de44cd
Packit Service de44cd
	g_clear_object (&cal_base_shell_content->priv->model);
Packit Service de44cd
	g_clear_object (&cal_base_shell_content->priv->data_model);
Packit Service de44cd
Packit Service de44cd
	/* Chain up to parent's method. */
Packit Service de44cd
	G_OBJECT_CLASS (e_cal_base_shell_content_parent_class)->finalize (object);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
cal_base_shell_content_constructed (GObject *object)
Packit Service de44cd
{
Packit Service de44cd
	EShell *shell;
Packit Service de44cd
	EShellView *shell_view;
Packit Service de44cd
	EShellWindow *shell_window;
Packit Service de44cd
	ECalBaseShellContent *cal_base_shell_content;
Packit Service de44cd
	ECalBaseShellContentClass *klass;
Packit Service de44cd
	ESourceRegistry *registry;
Packit Service de44cd
	ESource *default_source = NULL;
Packit Service de44cd
	const gchar *created_signal_name = NULL;
Packit Service de44cd
Packit Service de44cd
	/* Chain up to parent's method. */
Packit Service de44cd
	G_OBJECT_CLASS (e_cal_base_shell_content_parent_class)->constructed (object);
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content = E_CAL_BASE_SHELL_CONTENT (object);
Packit Service de44cd
	cal_base_shell_content->priv->data_model = e_cal_base_shell_content_create_new_data_model (cal_base_shell_content);
Packit Service de44cd
Packit Service de44cd
	klass = E_CAL_BASE_SHELL_CONTENT_GET_CLASS (cal_base_shell_content);
Packit Service de44cd
	g_return_if_fail (klass != NULL);
Packit Service de44cd
	g_return_if_fail (klass->new_cal_model != NULL);
Packit Service de44cd
Packit Service de44cd
	shell_view = e_shell_content_get_shell_view (E_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
	shell_window = e_shell_view_get_shell_window (shell_view);
Packit Service de44cd
	shell = e_shell_window_get_shell (shell_window);
Packit Service de44cd
	registry = e_shell_get_registry (shell);
Packit Service de44cd
Packit Service de44cd
	cal_base_shell_content->priv->model = klass->new_cal_model (
Packit Service de44cd
		cal_base_shell_content->priv->data_model, registry, shell);
Packit Service de44cd
Packit Service de44cd
	e_binding_bind_property (
Packit Service de44cd
		cal_base_shell_content->priv->model, "timezone",
Packit Service de44cd
		cal_base_shell_content->priv->data_model, "timezone",
Packit Service de44cd
		G_BINDING_SYNC_CREATE);
Packit Service de44cd
Packit Service de44cd
	switch (e_cal_base_shell_view_get_source_type (shell_view)) {
Packit Service de44cd
		case E_CAL_CLIENT_SOURCE_TYPE_EVENTS:
Packit Service de44cd
			e_cal_data_model_set_expand_recurrences (cal_base_shell_content->priv->data_model, TRUE);
Packit Service de44cd
			default_source = e_source_registry_ref_default_calendar (registry);
Packit Service de44cd
			created_signal_name = "shell-view-created::calendar";
Packit Service de44cd
			break;
Packit Service de44cd
		case E_CAL_CLIENT_SOURCE_TYPE_MEMOS:
Packit Service de44cd
			default_source = e_source_registry_ref_default_memo_list (registry);
Packit Service de44cd
			created_signal_name = "shell-view-created::memos";
Packit Service de44cd
			break;
Packit Service de44cd
		case E_CAL_CLIENT_SOURCE_TYPE_TASKS:
Packit Service de44cd
			default_source = e_source_registry_ref_default_task_list (registry);
Packit Service de44cd
			created_signal_name = "shell-view-created::tasks";
Packit Service de44cd
			break;
Packit Service de44cd
		case E_CAL_CLIENT_SOURCE_TYPE_LAST:
Packit Service de44cd
			g_warn_if_reached ();
Packit Service de44cd
			return;
Packit Service de44cd
	}
Packit Service de44cd
Packit Service de44cd
	e_cal_model_set_default_source_uid (cal_base_shell_content->priv->model, e_source_get_uid (default_source));
Packit Service de44cd
Packit Service de44cd
	g_clear_object (&default_source);
Packit Service de44cd
Packit Service de44cd
	g_signal_connect (
Packit Service de44cd
		shell_window, created_signal_name,
Packit Service de44cd
		G_CALLBACK (cal_base_shell_content_view_created_cb),
Packit Service de44cd
		cal_base_shell_content);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
e_cal_base_shell_content_class_init (ECalBaseShellContentClass *class)
Packit Service de44cd
{
Packit Service de44cd
	GObjectClass *object_class;
Packit Service de44cd
Packit Service de44cd
	g_type_class_add_private (class, sizeof (ECalBaseShellContentPrivate));
Packit Service de44cd
Packit Service de44cd
	object_class = G_OBJECT_CLASS (class);
Packit Service de44cd
	object_class->get_property = cal_base_shell_content_get_property;
Packit Service de44cd
	object_class->dispose = cal_base_shell_content_dispose;
Packit Service de44cd
	object_class->finalize = cal_base_shell_content_finalize;
Packit Service de44cd
	object_class->constructed = cal_base_shell_content_constructed;
Packit Service de44cd
Packit Service de44cd
	g_object_class_install_property (
Packit Service de44cd
		object_class,
Packit Service de44cd
		PROP_DATA_MODEL,
Packit Service de44cd
		g_param_spec_object (
Packit Service de44cd
			"data-model",
Packit Service de44cd
			NULL,
Packit Service de44cd
			NULL,
Packit Service de44cd
			E_TYPE_CAL_DATA_MODEL,
Packit Service de44cd
			G_PARAM_READABLE));
Packit Service de44cd
Packit Service de44cd
	g_object_class_install_property (
Packit Service de44cd
		object_class,
Packit Service de44cd
		PROP_MODEL,
Packit Service de44cd
		g_param_spec_object (
Packit Service de44cd
			"model",
Packit Service de44cd
			NULL,
Packit Service de44cd
			NULL,
Packit Service de44cd
			E_TYPE_CAL_MODEL,
Packit Service de44cd
			G_PARAM_READABLE));
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
static void
Packit Service de44cd
e_cal_base_shell_content_init (ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	cal_base_shell_content->priv = G_TYPE_INSTANCE_GET_PRIVATE (
Packit Service de44cd
		cal_base_shell_content, E_TYPE_CAL_BASE_SHELL_CONTENT, ECalBaseShellContentPrivate);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
ECalDataModel *
Packit Service de44cd
e_cal_base_shell_content_get_data_model (ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	g_return_val_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content), NULL);
Packit Service de44cd
Packit Service de44cd
	return cal_base_shell_content->priv->data_model;
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
ECalModel *
Packit Service de44cd
e_cal_base_shell_content_get_model (ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	g_return_val_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content), NULL);
Packit Service de44cd
Packit Service de44cd
	return cal_base_shell_content->priv->model;
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
void
Packit Service de44cd
e_cal_base_shell_content_prepare_for_quit (ECalBaseShellContent *cal_base_shell_content,
Packit Service de44cd
					   EActivity *activity)
Packit Service de44cd
{
Packit Service de44cd
	ECalBaseShellContentClass *klass;
Packit Service de44cd
Packit Service de44cd
	g_return_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content));
Packit Service de44cd
Packit Service de44cd
	klass = E_CAL_BASE_SHELL_CONTENT_GET_CLASS (cal_base_shell_content);
Packit Service de44cd
	g_return_if_fail (klass != NULL);
Packit Service de44cd
Packit Service de44cd
	if (klass->prepare_for_quit)
Packit Service de44cd
		klass->prepare_for_quit (cal_base_shell_content, activity);
Packit Service de44cd
}
Packit Service de44cd
Packit Service de44cd
ECalDataModel *
Packit Service de44cd
e_cal_base_shell_content_create_new_data_model (ECalBaseShellContent *cal_base_shell_content)
Packit Service de44cd
{
Packit Service de44cd
	g_return_val_if_fail (E_IS_CAL_BASE_SHELL_CONTENT (cal_base_shell_content), NULL);
Packit Service de44cd
Packit Service de44cd
	return e_cal_data_model_new (cal_base_shell_content_submit_data_model_thread_job, G_OBJECT (cal_base_shell_content));
Packit Service de44cd
}