aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-config-identity-page.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-04-13 22:30:40 +0800
committerMatthew Barnes <mbarnes@redhat.com>2012-06-03 11:00:40 +0800
commit3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81 (patch)
treeff59febf4ac0c6316ef344ea25cee002088bd314 /mail/e-mail-config-identity-page.c
parentf78795f4dff8b225d78385c5e23e1cd44ee946ad (diff)
downloadgsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar.gz
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar.bz2
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar.lz
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar.xz
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.tar.zst
gsoc2013-evolution-3449e5fcc7f9c797fcde7f2a444b1eb7a934cd81.zip
Adapt mail to the new ESource API.
Diffstat (limited to 'mail/e-mail-config-identity-page.c')
-rw-r--r--mail/e-mail-config-identity-page.c738
1 files changed, 738 insertions, 0 deletions
diff --git a/mail/e-mail-config-identity-page.c b/mail/e-mail-config-identity-page.c
new file mode 100644
index 0000000000..a0920ab1a3
--- /dev/null
+++ b/mail/e-mail-config-identity-page.c
@@ -0,0 +1,738 @@
+/*
+ * e-mail-config-identity-page.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-mail-config-identity-page.h"
+
+#include <config.h>
+#include <glib/gi18n-lib.h>
+
+#include <libebackend/e-extensible.h>
+#include <libedataserver/e-source-mail-identity.h>
+
+#include <e-util/e-marshal.h>
+#include <misc/e-mail-signature-combo-box.h>
+#include <misc/e-mail-signature-editor.h>
+
+#define E_MAIL_CONFIG_IDENTITY_PAGE_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_MAIL_CONFIG_IDENTITY_PAGE, EMailConfigIdentityPagePrivate))
+
+struct _EMailConfigIdentityPagePrivate {
+ ESource *identity_source;
+ ESourceRegistry *registry;
+ gboolean show_account_info;
+ gboolean show_instructions;
+ gboolean show_signatures;
+};
+
+enum {
+ PROP_0,
+ PROP_IDENTITY_SOURCE,
+ PROP_REGISTRY,
+ PROP_SHOW_ACCOUNT_INFO,
+ PROP_SHOW_INSTRUCTIONS,
+ PROP_SHOW_SIGNATURES
+};
+
+/* Forward Declarations */
+static void e_mail_config_identity_page_interface_init
+ (EMailConfigPageInterface *interface);
+
+G_DEFINE_TYPE_WITH_CODE (
+ EMailConfigIdentityPage,
+ e_mail_config_identity_page,
+ GTK_TYPE_BOX,
+ G_IMPLEMENT_INTERFACE (
+ E_TYPE_EXTENSIBLE, NULL)
+ G_IMPLEMENT_INTERFACE (
+ E_TYPE_MAIL_CONFIG_PAGE,
+ e_mail_config_identity_page_interface_init))
+
+static gboolean
+mail_config_identity_page_is_email (const gchar *email_address)
+{
+ const gchar *cp;
+
+ /* Make sure we have a '@' between a name and domain part. */
+ cp = strchr (email_address, '@');
+
+ return (cp != NULL && cp != email_address && *(cp + 1) != '\0');
+}
+
+static void
+mail_config_identity_page_add_signature_cb (GtkButton *button,
+ EMailConfigIdentityPage *page)
+{
+ ESourceRegistry *registry;
+ GtkWidget *editor;
+
+ registry = e_mail_config_identity_page_get_registry (page);
+
+ editor = e_mail_signature_editor_new (registry, NULL);
+ gtk_window_set_position (GTK_WINDOW (editor), GTK_WIN_POS_CENTER);
+ gtk_widget_show (editor);
+}
+
+static void
+mail_config_identity_page_set_registry (EMailConfigIdentityPage *page,
+ ESourceRegistry *registry)
+{
+ g_return_if_fail (E_IS_SOURCE_REGISTRY (registry));
+ g_return_if_fail (page->priv->registry == NULL);
+
+ page->priv->registry = g_object_ref (registry);
+}
+
+static void
+mail_config_identity_page_set_identity_source (EMailConfigIdentityPage *page,
+ ESource *identity_source)
+{
+ g_return_if_fail (E_IS_SOURCE (identity_source));
+ g_return_if_fail (page->priv->identity_source == NULL);
+
+ page->priv->identity_source = g_object_ref (identity_source);
+}
+
+static void
+mail_config_identity_page_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_IDENTITY_SOURCE:
+ mail_config_identity_page_set_identity_source (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object),
+ g_value_get_object (value));
+ return;
+
+ case PROP_REGISTRY:
+ mail_config_identity_page_set_registry (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object),
+ g_value_get_object (value));
+ return;
+
+ case PROP_SHOW_ACCOUNT_INFO:
+ e_mail_config_identity_page_set_show_account_info (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_SHOW_INSTRUCTIONS:
+ e_mail_config_identity_page_set_show_instructions (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object),
+ g_value_get_boolean (value));
+ return;
+
+ case PROP_SHOW_SIGNATURES:
+ e_mail_config_identity_page_set_show_signatures (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object),
+ g_value_get_boolean (value));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mail_config_identity_page_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ switch (property_id) {
+ case PROP_IDENTITY_SOURCE:
+ g_value_set_object (
+ value,
+ e_mail_config_identity_page_get_identity_source (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object)));
+ return;
+
+ case PROP_REGISTRY:
+ g_value_set_object (
+ value,
+ e_mail_config_identity_page_get_registry (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object)));
+ return;
+
+ case PROP_SHOW_ACCOUNT_INFO:
+ g_value_set_boolean (
+ value,
+ e_mail_config_identity_page_get_show_account_info (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object)));
+ return;
+
+ case PROP_SHOW_INSTRUCTIONS:
+ g_value_set_boolean (
+ value,
+ e_mail_config_identity_page_get_show_instructions (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object)));
+ return;
+
+ case PROP_SHOW_SIGNATURES:
+ g_value_set_boolean (
+ value,
+ e_mail_config_identity_page_get_show_signatures (
+ E_MAIL_CONFIG_IDENTITY_PAGE (object)));
+ return;
+ }
+
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+}
+
+static void
+mail_config_identity_page_dispose (GObject *object)
+{
+ EMailConfigIdentityPagePrivate *priv;
+
+ priv = E_MAIL_CONFIG_IDENTITY_PAGE_GET_PRIVATE (object);
+
+ if (priv->identity_source != NULL) {
+ g_object_unref (priv->identity_source);
+ priv->identity_source = NULL;
+ }
+
+ if (priv->registry != NULL) {
+ g_object_unref (priv->registry);
+ priv->registry = NULL;
+ }
+
+ /* Chain up to parent's dispose() method. */
+ G_OBJECT_CLASS (e_mail_config_identity_page_parent_class)->
+ dispose (object);
+}
+
+static void
+mail_config_identity_page_constructed (GObject *object)
+{
+ EMailConfigIdentityPage *page;
+ ESource *source;
+ ESourceRegistry *registry;
+ ESourceMailIdentity *extension;
+ GtkLabel *label;
+ GtkWidget *widget;
+ GtkWidget *container;
+ GtkSizeGroup *size_group;
+ const gchar *extension_name;
+ const gchar *text;
+ gchar *markup;
+
+ page = E_MAIL_CONFIG_IDENTITY_PAGE (object);
+
+ /* Chain up to parent's constructed() method. */
+ G_OBJECT_CLASS (e_mail_config_identity_page_parent_class)->
+ constructed (object);
+
+ extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY;
+ registry = e_mail_config_identity_page_get_registry (page);
+ source = e_mail_config_identity_page_get_identity_source (page);
+ extension = e_source_get_extension (source, extension_name);
+
+ gtk_orientable_set_orientation (
+ GTK_ORIENTABLE (page), GTK_ORIENTATION_VERTICAL);
+
+ gtk_box_set_spacing (GTK_BOX (page), 12);
+
+ /* This keeps all mnemonic labels the same width. */
+ size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
+ gtk_size_group_set_ignore_hidden (size_group, TRUE);
+
+ text = _("Please enter your name and email address below. "
+ "The \"optional\" fields below do not need to be filled "
+ "in, unless you wish to include this information in email "
+ "you send.");
+ widget = gtk_label_new (text);
+ gtk_label_set_line_wrap (GTK_LABEL (widget), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
+ gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+
+ g_object_bind_property (
+ page, "show-instructions",
+ widget, "visible",
+ G_BINDING_SYNC_CREATE);
+
+ /*** Account Information ***/
+
+ widget = gtk_grid_new ();
+ gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
+ gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
+ gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+
+ g_object_bind_property (
+ page, "show-account-info",
+ widget, "visible",
+ G_BINDING_SYNC_CREATE);
+
+ container = widget;
+
+ text = _("Account Information");
+ markup = g_markup_printf_escaped ("<b>%s</b>", text);
+ widget = gtk_label_new (markup);
+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 2, 1);
+ gtk_widget_show (widget);
+ g_free (markup);
+
+ text = _("Type the name by which you would like to refer to "
+ "this account.\nFor example, \"Work\" or \"Personal\".");
+ widget = gtk_label_new (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 2, 1);
+ gtk_widget_show (widget);
+
+ text = _("_Name:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 2, 1, 1);
+ gtk_widget_show (widget);
+
+ label = GTK_LABEL (widget);
+
+ widget = gtk_entry_new ();
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ source, "display-name",
+ widget, "text",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ /* This entry affects the "check-complete" result. */
+ g_signal_connect_swapped (
+ widget, "changed",
+ G_CALLBACK (e_mail_config_page_changed), page);
+
+ /*** Required Information ***/
+
+ widget = gtk_grid_new ();
+ gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
+ gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
+ gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
+ container = widget;
+
+ text = _("Required Information");
+ markup = g_markup_printf_escaped ("<b>%s</b>", text);
+ widget = gtk_label_new (markup);
+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 2, 1);
+ gtk_widget_show (widget);
+ g_free (markup);
+
+ text = _("Full Nam_e:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1);
+ gtk_widget_show (widget);
+
+ label = GTK_LABEL (widget);
+
+ widget = gtk_entry_new ();
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ extension, "name",
+ widget, "text",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ /* This entry affects the "check-complete" result. */
+ g_signal_connect_swapped (
+ widget, "changed",
+ G_CALLBACK (e_mail_config_page_changed), page);
+
+ text = _("Email _Address:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 2, 1, 1);
+ gtk_widget_show (widget);
+
+ label = GTK_LABEL (widget);
+
+ widget = gtk_entry_new ();
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ extension, "address",
+ widget, "text",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ /* This entry affects the "check-complete" result. */
+ g_signal_connect_swapped (
+ widget, "changed",
+ G_CALLBACK (e_mail_config_page_changed), page);
+
+ /*** Optional Information ***/
+
+ widget = gtk_grid_new ();
+ gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
+ gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
+ gtk_box_pack_start (GTK_BOX (page), widget, FALSE, FALSE, 0);
+ gtk_widget_show (widget);
+
+ container = widget;
+
+ text = _("Optional Information");
+ markup = g_markup_printf_escaped ("<b>%s</b>", text);
+ widget = gtk_label_new (markup);
+ gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
+ gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 3, 1);
+ gtk_widget_show (widget);
+
+ text = _("Re_ply-To:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1);
+ gtk_widget_show (widget);
+
+ label = GTK_LABEL (widget);
+
+ widget = gtk_entry_new ();
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 2, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ extension, "reply-to",
+ widget, "text",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ /* This entry affects the "check-complete" result. */
+ g_signal_connect_swapped (
+ widget, "changed",
+ G_CALLBACK (e_mail_config_page_changed), page);
+
+ text = _("Or_ganization:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 2, 1, 1);
+ gtk_widget_show (widget);
+
+ label = GTK_LABEL (widget);
+
+ widget = gtk_entry_new ();
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 2, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ extension, "organization",
+ widget, "text",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ text = _("Si_gnature:");
+ widget = gtk_label_new_with_mnemonic (text);
+ gtk_widget_set_margin_left (widget, 12);
+ gtk_size_group_add_widget (size_group, widget);
+ gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
+ gtk_grid_attach (GTK_GRID (container), widget, 0, 3, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ page, "show-signatures",
+ widget, "visible",
+ G_BINDING_SYNC_CREATE);
+
+ label = GTK_LABEL (widget);
+
+ widget = e_mail_signature_combo_box_new (registry);
+ gtk_widget_set_hexpand (widget, TRUE);
+ gtk_widget_set_halign (widget, GTK_ALIGN_START);
+ gtk_label_set_mnemonic_widget (label, widget);
+ gtk_grid_attach (GTK_GRID (container), widget, 1, 3, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ extension, "signature-uid",
+ widget, "active-id",
+ G_BINDING_BIDIRECTIONAL |
+ G_BINDING_SYNC_CREATE);
+
+ g_object_bind_property (
+ page, "show-signatures",
+ widget, "visible",
+ G_BINDING_SYNC_CREATE);
+
+ text = _("Add Ne_w Signature...");
+ widget = gtk_button_new_with_mnemonic (text);
+ gtk_grid_attach (GTK_GRID (container), widget, 2, 3, 1, 1);
+ gtk_widget_show (widget);
+
+ g_object_bind_property (
+ page, "show-signatures",
+ widget, "visible",
+ G_BINDING_SYNC_CREATE);
+
+ g_signal_connect (
+ widget, "clicked",
+ G_CALLBACK (mail_config_identity_page_add_signature_cb), page);
+
+ g_object_unref (size_group);
+
+ e_extensible_load_extensions (E_EXTENSIBLE (page));
+}
+
+static gboolean
+mail_config_identity_page_check_complete (EMailConfigPage *page)
+{
+ EMailConfigIdentityPage *id_page;
+ ESource *source;
+ ESourceMailIdentity *extension;
+ const gchar *extension_name;
+ const gchar *name;
+ const gchar *address;
+ const gchar *reply_to;
+ const gchar *display_name;
+
+ id_page = E_MAIL_CONFIG_IDENTITY_PAGE (page);
+ extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY;
+ source = e_mail_config_identity_page_get_identity_source (id_page);
+ extension = e_source_get_extension (source, extension_name);
+
+ name = e_source_mail_identity_get_name (extension);
+ address = e_source_mail_identity_get_address (extension);
+ reply_to = e_source_mail_identity_get_reply_to (extension);
+
+ display_name = e_source_get_display_name (source);
+
+ if (name == NULL)
+ return FALSE;
+
+ if (address == NULL)
+ return FALSE;
+
+ if (!mail_config_identity_page_is_email (address))
+ return FALSE;
+
+ /* A NULL reply_to string is allowed. */
+ if (reply_to != NULL && !mail_config_identity_page_is_email (reply_to))
+ return FALSE;
+
+ /* Only enforce when account information is visible. */
+ if (e_mail_config_identity_page_get_show_account_info (id_page))
+ if (display_name == NULL || *display_name == '\0')
+ return FALSE;
+
+ return TRUE;
+}
+
+static void
+e_mail_config_identity_page_class_init (EMailConfigIdentityPageClass *class)
+{
+ GObjectClass *object_class;
+
+ g_type_class_add_private (
+ class, sizeof (EMailConfigIdentityPagePrivate));
+
+ object_class = G_OBJECT_CLASS (class);
+ object_class->set_property = mail_config_identity_page_set_property;
+ object_class->get_property = mail_config_identity_page_get_property;
+ object_class->dispose = mail_config_identity_page_dispose;
+ object_class->constructed = mail_config_identity_page_constructed;
+
+ g_object_class_install_property (
+ object_class,
+ PROP_REGISTRY,
+ g_param_spec_object (
+ "registry",
+ "Registry",
+ "Registry of data sources",
+ E_TYPE_SOURCE_REGISTRY,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_IDENTITY_SOURCE,
+ g_param_spec_object (
+ "identity-source",
+ "Identity Source",
+ "Mail identity source being edited",
+ E_TYPE_SOURCE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SHOW_ACCOUNT_INFO,
+ g_param_spec_boolean (
+ "show-account-info",
+ "Show Account Info",
+ "Show the \"Account Information\" section",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SHOW_INSTRUCTIONS,
+ g_param_spec_boolean (
+ "show-instructions",
+ "Show Instructions",
+ "Show helpful instructions",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
+
+ g_object_class_install_property (
+ object_class,
+ PROP_SHOW_SIGNATURES,
+ g_param_spec_boolean (
+ "show-signatures",
+ "Show Signatures",
+ "Show mail signature options",
+ TRUE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT |
+ G_PARAM_STATIC_STRINGS));
+}
+
+static void
+e_mail_config_identity_page_interface_init (EMailConfigPageInterface *interface)
+{
+ interface->title = _("Identity");
+ interface->sort_order = E_MAIL_CONFIG_IDENTITY_PAGE_SORT_ORDER;
+ interface->check_complete = mail_config_identity_page_check_complete;
+}
+
+static void
+e_mail_config_identity_page_init (EMailConfigIdentityPage *page)
+{
+ page->priv = E_MAIL_CONFIG_IDENTITY_PAGE_GET_PRIVATE (page);
+}
+
+EMailConfigPage *
+e_mail_config_identity_page_new (ESourceRegistry *registry,
+ ESource *identity_source)
+{
+ g_return_val_if_fail (E_IS_SOURCE_REGISTRY (registry), NULL);
+ g_return_val_if_fail (E_IS_SOURCE (identity_source), NULL);
+
+ return g_object_new (
+ E_TYPE_MAIL_CONFIG_IDENTITY_PAGE,
+ "registry", registry,
+ "identity-source", identity_source,
+ NULL);
+}
+
+ESourceRegistry *
+e_mail_config_identity_page_get_registry (EMailConfigIdentityPage *page)
+{
+ g_return_val_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page), NULL);
+
+ return page->priv->registry;
+}
+
+ESource *
+e_mail_config_identity_page_get_identity_source (EMailConfigIdentityPage *page)
+{
+ g_return_val_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page), NULL);
+
+ return page->priv->identity_source;
+}
+
+gboolean
+e_mail_config_identity_page_get_show_account_info (EMailConfigIdentityPage *page)
+{
+ g_return_val_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page), FALSE);
+
+ return page->priv->show_account_info;
+}
+
+void
+e_mail_config_identity_page_set_show_account_info (EMailConfigIdentityPage *page,
+ gboolean show_account_info)
+{
+ g_return_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page));
+
+ page->priv->show_account_info = show_account_info;
+
+ g_object_notify (G_OBJECT (page), "show-account-info");
+}
+
+gboolean
+e_mail_config_identity_page_get_show_instructions (EMailConfigIdentityPage *page)
+{
+ g_return_val_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page), FALSE);
+
+ return page->priv->show_instructions;
+}
+
+void
+e_mail_config_identity_page_set_show_instructions (EMailConfigIdentityPage *page,
+ gboolean show_instructions)
+{
+ g_return_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page));
+
+ page->priv->show_instructions = show_instructions;
+
+ g_object_notify (G_OBJECT (page), "show-instructions");
+}
+
+gboolean
+e_mail_config_identity_page_get_show_signatures (EMailConfigIdentityPage *page)
+{
+ g_return_val_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page), FALSE);
+
+ return page->priv->show_signatures;
+}
+
+void
+e_mail_config_identity_page_set_show_signatures (EMailConfigIdentityPage *page,
+ gboolean show_signatures)
+{
+ g_return_if_fail (E_IS_MAIL_CONFIG_IDENTITY_PAGE (page));
+
+ page->priv->show_signatures = show_signatures;
+
+ g_object_notify (G_OBJECT (page), "show-signatures");
+}
+