diff options
author | Matthew Barnes <mbarnes@redhat.com> | 2012-06-15 03:40:42 +0800 |
---|---|---|
committer | Matthew Barnes <mbarnes@redhat.com> | 2012-06-15 03:43:27 +0800 |
commit | ca6348199249989e124c45402ed5b78c1bc92f16 (patch) | |
tree | c910a37501dee412c27796eb57fe0c6b3a1ff201 /calendar | |
parent | aef5c895087b4930cce4d2eb5d382c99f1f2ad5c (diff) | |
download | gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar.gz gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar.bz2 gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar.lz gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar.xz gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.tar.zst gsoc2013-evolution-ca6348199249989e124c45402ed5b78c1bc92f16.zip |
Move ECalSourceConfig to /widgets/misc.
ECalSourceConfig drags in no additional dependencies, and although we do
publish a libevolution-calendar.so, this keeps all the ESource config UI
in one place so it can more easily be moved to Evolution-Data-Server.
Diffstat (limited to 'calendar')
-rw-r--r-- | calendar/gui/Makefile.am | 3 | ||||
-rw-r--r-- | calendar/gui/e-cal-source-config.c | 398 | ||||
-rw-r--r-- | calendar/gui/e-cal-source-config.h | 72 |
3 files changed, 0 insertions, 473 deletions
diff --git a/calendar/gui/Makefile.am b/calendar/gui/Makefile.am index 3e27988f69..75991807df 100644 --- a/calendar/gui/Makefile.am +++ b/calendar/gui/Makefile.am @@ -16,7 +16,6 @@ ecalendarinclude_HEADERS = \ e-cal-list-view.h \ e-cal-model-calendar.h \ e-cal-model.h \ - e-cal-source-config.h \ e-calendar-selector.h \ e-calendar-view.h \ e-cell-date-edit-text.h \ @@ -108,8 +107,6 @@ libevolution_calendar_la_SOURCES = \ e-cal-model-memos.h \ e-cal-model-tasks.c \ e-cal-model-tasks.h \ - e-cal-source-config.c \ - e-cal-source-config.h \ e-calendar-selector.c \ e-calendar-selector.h \ e-calendar-view.c \ diff --git a/calendar/gui/e-cal-source-config.c b/calendar/gui/e-cal-source-config.c deleted file mode 100644 index 1d3243c77b..0000000000 --- a/calendar/gui/e-cal-source-config.c +++ /dev/null @@ -1,398 +0,0 @@ -/* - * e-cal-source-config.c - * - * 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; either - * version 2 of the License, or (at your option) version 3. - * - * 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 the program; if not, see <http://www.gnu.org/licenses/> - * - */ - -#include "e-cal-source-config.h" - -#include <config.h> -#include <glib/gi18n-lib.h> - -#include <e-util/e-util.h> - -#define E_CAL_SOURCE_CONFIG_GET_PRIVATE(obj) \ - (G_TYPE_INSTANCE_GET_PRIVATE \ - ((obj), E_TYPE_CAL_SOURCE_CONFIG, ECalSourceConfigPrivate)) - -struct _ECalSourceConfigPrivate { - ECalClientSourceType source_type; - GtkWidget *color_button; - GtkWidget *default_button; -}; - -enum { - PROP_0, - PROP_SOURCE_TYPE -}; - -G_DEFINE_TYPE ( - ECalSourceConfig, - e_cal_source_config, - E_TYPE_SOURCE_CONFIG) - -static ESource * -cal_source_config_ref_default (ESourceConfig *config) -{ - ECalSourceConfigPrivate *priv; - ESourceRegistry *registry; - - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (config); - registry = e_source_config_get_registry (config); - - if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_EVENTS) - return e_source_registry_ref_default_calendar (registry); - else if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_MEMOS) - return e_source_registry_ref_default_memo_list (registry); - else if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_TASKS) - return e_source_registry_ref_default_task_list (registry); - - g_return_val_if_reached (NULL); -} - -static void -cal_source_config_set_default (ESourceConfig *config, - ESource *source) -{ - ECalSourceConfigPrivate *priv; - ESourceRegistry *registry; - - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (config); - registry = e_source_config_get_registry (config); - - if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_EVENTS) - e_source_registry_set_default_calendar (registry, source); - else if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_MEMOS) - e_source_registry_set_default_memo_list (registry, source); - else if (priv->source_type == E_CAL_CLIENT_SOURCE_TYPE_TASKS) - e_source_registry_set_default_task_list (registry, source); -} - -static void -cal_source_config_set_source_type (ECalSourceConfig *config, - ECalClientSourceType source_type) -{ - config->priv->source_type = source_type; -} - -static void -cal_source_config_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_SOURCE_TYPE: - cal_source_config_set_source_type ( - E_CAL_SOURCE_CONFIG (object), - g_value_get_enum (value)); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -cal_source_config_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) -{ - switch (property_id) { - case PROP_SOURCE_TYPE: - g_value_set_enum ( - value, - e_cal_source_config_get_source_type ( - E_CAL_SOURCE_CONFIG (object))); - return; - } - - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); -} - -static void -cal_source_config_dispose (GObject *object) -{ - ECalSourceConfigPrivate *priv; - - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (object); - - if (priv->color_button != NULL) { - g_object_unref (priv->color_button); - priv->color_button = NULL; - } - - if (priv->default_button != NULL) { - g_object_unref (priv->default_button); - priv->default_button = NULL; - } - - /* Chain up to parent's dispose() method. */ - G_OBJECT_CLASS (e_cal_source_config_parent_class)->dispose (object); -} - -static void -cal_source_config_constructed (GObject *object) -{ - ECalSourceConfigPrivate *priv; - ESource *default_source; - ESource *original_source; - ESourceConfig *config; - GObjectClass *class; - GtkWidget *widget; - const gchar *label; - - /* Chain up to parent's constructed() method. */ - class = G_OBJECT_CLASS (e_cal_source_config_parent_class); - class->constructed (object); - - config = E_SOURCE_CONFIG (object); - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (object); - - widget = gtk_color_button_new (); - priv->color_button = g_object_ref_sink (widget); - gtk_widget_show (widget); - - switch (priv->source_type) { - case E_CAL_CLIENT_SOURCE_TYPE_EVENTS: - label = _("Mark as default calendar"); - break; - case E_CAL_CLIENT_SOURCE_TYPE_TASKS: - label = _("Mark as default task list"); - break; - case E_CAL_CLIENT_SOURCE_TYPE_MEMOS: - label = _("Mark as default memo list"); - break; - default: - /* No need to translate this string. */ - label = "Invalid ECalSourceType value"; - g_warn_if_reached (); - } - - widget = gtk_check_button_new_with_label (label); - priv->default_button = g_object_ref_sink (widget); - gtk_widget_show (widget); - - default_source = cal_source_config_ref_default (config); - original_source = e_source_config_get_original_source (config); - - if (original_source != NULL) { - gboolean active; - - active = e_source_equal (original_source, default_source); - g_object_set (priv->default_button, "active", active, NULL); - } - - g_object_unref (default_source); - - e_source_config_insert_widget ( - config, NULL, _("Color:"), priv->color_button); - - e_source_config_insert_widget ( - config, NULL, NULL, priv->default_button); -} - -static const gchar * -cal_source_config_get_backend_extension_name (ESourceConfig *config) -{ - ECalSourceConfig *cal_config; - const gchar *extension_name; - - cal_config = E_CAL_SOURCE_CONFIG (config); - - switch (e_cal_source_config_get_source_type (cal_config)) { - case E_CAL_CLIENT_SOURCE_TYPE_EVENTS: - extension_name = E_SOURCE_EXTENSION_CALENDAR; - break; - case E_CAL_CLIENT_SOURCE_TYPE_TASKS: - extension_name = E_SOURCE_EXTENSION_TASK_LIST; - break; - case E_CAL_CLIENT_SOURCE_TYPE_MEMOS: - extension_name = E_SOURCE_EXTENSION_MEMO_LIST; - break; - default: - g_return_val_if_reached (NULL); - } - - return extension_name; -} - -static void -cal_source_config_init_candidate (ESourceConfig *config, - ESource *scratch_source) -{ - ECalSourceConfigPrivate *priv; - ESourceConfigClass *class; - ESourceExtension *extension; - const gchar *extension_name; - - /* Chain up to parent's init_candidate() method. */ - class = E_SOURCE_CONFIG_CLASS (e_cal_source_config_parent_class); - class->init_candidate (config, scratch_source); - - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (config); - - extension_name = e_source_config_get_backend_extension_name (config); - extension = e_source_get_extension (scratch_source, extension_name); - - g_object_bind_property_full ( - extension, "color", - priv->color_button, "color", - G_BINDING_BIDIRECTIONAL | - G_BINDING_SYNC_CREATE, - e_binding_transform_string_to_color, - e_binding_transform_color_to_string, - NULL, (GDestroyNotify) NULL); -} - -static void -cal_source_config_commit_changes (ESourceConfig *config, - ESource *scratch_source) -{ - ECalSourceConfigPrivate *priv; - GtkToggleButton *toggle_button; - ESourceConfigClass *class; - ESource *default_source; - - priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (config); - toggle_button = GTK_TOGGLE_BUTTON (priv->default_button); - - /* Chain up to parent's commit_changes() method. */ - class = E_SOURCE_CONFIG_CLASS (e_cal_source_config_parent_class); - class->commit_changes (config, scratch_source); - - default_source = cal_source_config_ref_default (config); - - /* The default setting is a little tricky to get right. If - * the toggle button is active, this ESource is now the default. - * That much is simple. But if the toggle button is NOT active, - * then we have to inspect the old default. If this ESource WAS - * the default, reset the default to 'system'. If this ESource - * WAS NOT the old default, leave it alone. */ - if (gtk_toggle_button_get_active (toggle_button)) - cal_source_config_set_default (config, scratch_source); - else if (e_source_equal (scratch_source, default_source)) - cal_source_config_set_default (config, NULL); - - g_object_unref (default_source); -} - -static void -e_cal_source_config_class_init (ECalSourceConfigClass *class) -{ - GObjectClass *object_class; - ESourceConfigClass *source_config_class; - - g_type_class_add_private (class, sizeof (ECalSourceConfigPrivate)); - - object_class = G_OBJECT_CLASS (class); - object_class->set_property = cal_source_config_set_property; - object_class->get_property = cal_source_config_get_property; - object_class->dispose = cal_source_config_dispose; - object_class->constructed = cal_source_config_constructed; - - source_config_class = E_SOURCE_CONFIG_CLASS (class); - source_config_class->get_backend_extension_name = - cal_source_config_get_backend_extension_name; - source_config_class->init_candidate = cal_source_config_init_candidate; - source_config_class->commit_changes = cal_source_config_commit_changes; - - g_object_class_install_property ( - object_class, - PROP_SOURCE_TYPE, - g_param_spec_enum ( - "source-type", - "Source Type", - "The iCalendar object type", - E_TYPE_CAL_CLIENT_SOURCE_TYPE, - E_CAL_CLIENT_SOURCE_TYPE_EVENTS, - G_PARAM_READWRITE | - G_PARAM_CONSTRUCT_ONLY | - G_PARAM_STATIC_STRINGS)); -} - -static void -e_cal_source_config_init (ECalSourceConfig *config) -{ - config->priv = E_CAL_SOURCE_CONFIG_GET_PRIVATE (config); -} - -GtkWidget * -e_cal_source_config_new (ESourceRegistry *registry, - ESource *original_source, - ECalClientSourceType source_type) -{ - g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), NULL); - - if (original_source != NULL) - g_return_val_if_fail (E_IS_SOURCE (original_source), NULL); - - return g_object_new ( - E_TYPE_CAL_SOURCE_CONFIG, "registry", registry, - "original-source", original_source, "source-type", - source_type, NULL); -} - -ECalClientSourceType -e_cal_source_config_get_source_type (ECalSourceConfig *config) -{ - g_return_val_if_fail (E_IS_CAL_SOURCE_CONFIG (config), 0); - - return config->priv->source_type; -} - -void -e_cal_source_config_add_offline_toggle (ECalSourceConfig *config, - ESource *scratch_source) -{ - GtkWidget *widget; - ESourceExtension *extension; - const gchar *extension_name; - const gchar *label; - - g_return_if_fail (E_IS_CAL_SOURCE_CONFIG (config)); - g_return_if_fail (E_IS_SOURCE (scratch_source)); - - extension_name = E_SOURCE_EXTENSION_OFFLINE; - extension = e_source_get_extension (scratch_source, extension_name); - - switch (e_cal_source_config_get_source_type (config)) { - case E_CAL_CLIENT_SOURCE_TYPE_EVENTS: - label = _("Copy calendar contents locally " - "for offline operation"); - break; - case E_CAL_CLIENT_SOURCE_TYPE_TASKS: - label = _("Copy task list contents locally " - "for offline operation"); - break; - case E_CAL_CLIENT_SOURCE_TYPE_MEMOS: - label = _("Copy memo list contents locally " - "for offline operation"); - break; - default: - g_return_if_reached (); - } - - widget = gtk_check_button_new_with_label (label); - e_source_config_insert_widget ( - E_SOURCE_CONFIG (config), scratch_source, NULL, widget); - gtk_widget_show (widget); - - g_object_bind_property ( - extension, "stay-synchronized", - widget, "active", - G_BINDING_BIDIRECTIONAL | - G_BINDING_SYNC_CREATE); -} diff --git a/calendar/gui/e-cal-source-config.h b/calendar/gui/e-cal-source-config.h deleted file mode 100644 index 4db861069e..0000000000 --- a/calendar/gui/e-cal-source-config.h +++ /dev/null @@ -1,72 +0,0 @@ -/* - * e-cal-source-config.h - * - * 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; either - * version 2 of the License, or (at your option) version 3. - * - * 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 the program; if not, see <http://www.gnu.org/licenses/> - * - */ - -#ifndef E_CAL_SOURCE_CONFIG_H -#define E_CAL_SOURCE_CONFIG_H - -#include <libecal/libecal.h> -#include <misc/e-source-config.h> - -/* Standard GObject macros */ -#define E_TYPE_CAL_SOURCE_CONFIG \ - (e_cal_source_config_get_type ()) -#define E_CAL_SOURCE_CONFIG(obj) \ - (G_TYPE_CHECK_INSTANCE_CAST \ - ((obj), E_TYPE_CAL_SOURCE_CONFIG, ECalSourceConfig)) -#define E_CAL_SOURCE_CONFIG_CLASS(cls) \ - (G_TYPE_CHECK_CLASS_CAST \ - ((cls), E_TYPE_CAL_SOURCE_CONFIG, ECalSourceConfigClass)) -#define E_IS_CAL_SOURCE_CONFIG(obj) \ - (G_TYPE_CHECK_INSTANCE_TYPE \ - ((obj), E_TYPE_CAL_SOURCE_CONFIG)) -#define E_IS_CAL_SOURCE_CONFIG_CLASS(cls) \ - (G_TYPE_CHECK_CLASS_TYPE \ - ((cls), E_TYPE_CAL_SOURCE_CONFIG)) -#define E_CAL_SOURCE_CONFIG_GET_CLASS(obj) \ - (G_TYPE_INSTANCE_GET_CLASS \ - ((obj), E_TYPE_CAL_SOURCE_CONFIG, ECalSourceConfigClass)) - -G_BEGIN_DECLS - -typedef struct _ECalSourceConfig ECalSourceConfig; -typedef struct _ECalSourceConfigClass ECalSourceConfigClass; -typedef struct _ECalSourceConfigPrivate ECalSourceConfigPrivate; - -struct _ECalSourceConfig { - ESourceConfig parent; - ECalSourceConfigPrivate *priv; -}; - -struct _ECalSourceConfigClass { - ESourceConfigClass parent_class; -}; - -GType e_cal_source_config_get_type (void) G_GNUC_CONST; -GtkWidget * e_cal_source_config_new (ESourceRegistry *registry, - ESource *original_source, - ECalClientSourceType source_type); -ECalClientSourceType - e_cal_source_config_get_source_type - (ECalSourceConfig *config); -void e_cal_source_config_add_offline_toggle - (ECalSourceConfig *config, - ESource *scratch_source); - -G_END_DECLS - -#endif /* E_CAL_SOURCE_CONFIG_H */ |