|
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 |
}
|