Blame src/mail/e-mail-config-summary-page.c

Packit 15f964
/*
Packit 15f964
 * e-mail-config-summary-page.c
Packit 15f964
 *
Packit 15f964
 * This program is free software; you can redistribute it and/or modify it
Packit 15f964
 * under the terms of the GNU Lesser General Public License as published by
Packit 15f964
 * the Free Software Foundation.
Packit 15f964
 *
Packit 15f964
 * This program is distributed in the hope that it will be useful, but
Packit 15f964
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
Packit 15f964
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
Packit 15f964
 * for more details.
Packit 15f964
 *
Packit 15f964
 * You should have received a copy of the GNU Lesser General Public License
Packit 15f964
 * along with this program; if not, see <http://www.gnu.org/licenses/>.
Packit 15f964
 *
Packit 15f964
 */
Packit 15f964
Packit 15f964
#include "evolution-config.h"
Packit 15f964
Packit 15f964
#include <glib/gi18n-lib.h>
Packit 15f964
Packit 15f964
#include <camel/camel.h>
Packit 15f964
#include <libebackend/libebackend.h>
Packit 15f964
#include <e-util/e-util.h>
Packit 15f964
Packit 15f964
#include "e-mail-config-summary-page.h"
Packit 15f964
Packit 15f964
#define E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE(obj) \
Packit 15f964
	(G_TYPE_INSTANCE_GET_PRIVATE \
Packit 15f964
	((obj), E_TYPE_MAIL_CONFIG_SUMMARY_PAGE, EMailConfigSummaryPagePrivate))
Packit 15f964
Packit 15f964
struct _EMailConfigSummaryPagePrivate {
Packit 15f964
	ESource *account_source;
Packit 15f964
	ESource *identity_source;
Packit 15f964
	ESource *transport_source;
Packit 15f964
	EMailConfigServiceBackend *account_backend;
Packit 15f964
	EMailConfigServiceBackend *transport_backend;
Packit 15f964
Packit 15f964
	gulong account_source_changed_id;
Packit 15f964
	gulong identity_source_changed_id;
Packit 15f964
	gulong transport_source_changed_id;
Packit 15f964
Packit 15f964
	/* Widgets (not referenced) */
Packit 15f964
	GtkBox *main_box;
Packit 15f964
	GtkLabel *name_label;
Packit 15f964
	GtkLabel *address_label;
Packit 15f964
	GtkLabel *recv_backend_label;
Packit 15f964
	GtkLabel *recv_host_label;
Packit 15f964
	GtkLabel *recv_user_label;
Packit 15f964
	GtkLabel *recv_security_label;
Packit 15f964
	GtkLabel *send_backend_label;
Packit 15f964
	GtkLabel *send_host_label;
Packit 15f964
	GtkLabel *send_user_label;
Packit 15f964
	GtkLabel *send_security_label;
Packit 15f964
	GtkEntry *account_name_entry;
Packit Service ce6d95
Packit Service ce6d95
	GBinding *account_name_binding;
Packit 15f964
};
Packit 15f964
Packit 15f964
enum {
Packit 15f964
	PROP_0,
Packit 15f964
	PROP_ACCOUNT_BACKEND,
Packit 15f964
	PROP_ACCOUNT_SOURCE,
Packit 15f964
	PROP_IDENTITY_SOURCE,
Packit 15f964
	PROP_TRANSPORT_BACKEND,
Packit 15f964
	PROP_TRANSPORT_SOURCE
Packit 15f964
};
Packit 15f964
Packit 15f964
enum {
Packit 15f964
	REFRESH,
Packit 15f964
	LAST_SIGNAL
Packit 15f964
};
Packit 15f964
Packit 15f964
static gulong signals[LAST_SIGNAL];
Packit 15f964
Packit 15f964
/* Forward Declarations */
Packit 15f964
static void	e_mail_config_summary_page_interface_init
Packit 15f964
					(EMailConfigPageInterface *iface);
Packit 15f964
Packit 15f964
G_DEFINE_TYPE_WITH_CODE (
Packit 15f964
	EMailConfigSummaryPage,
Packit 15f964
	e_mail_config_summary_page,
Packit 15f964
	GTK_TYPE_SCROLLED_WINDOW,
Packit 15f964
	G_IMPLEMENT_INTERFACE (
Packit 15f964
		E_TYPE_EXTENSIBLE, NULL)
Packit 15f964
	G_IMPLEMENT_INTERFACE (
Packit 15f964
		E_TYPE_MAIL_CONFIG_PAGE,
Packit 15f964
		e_mail_config_summary_page_interface_init))
Packit 15f964
Packit 15f964
/* Helper for mail_config_summary_page_refresh() */
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_refresh_auth_labels (ESource *source,
Packit 15f964
                                              GtkLabel *host_label,
Packit 15f964
                                              GtkLabel *user_label)
Packit 15f964
{
Packit 15f964
	ESourceAuthentication *extension;
Packit 15f964
	const gchar *extension_name;
Packit 15f964
	const gchar *value;
Packit 15f964
Packit 15f964
	extension_name = E_SOURCE_EXTENSION_AUTHENTICATION;
Packit 15f964
	if (!e_source_has_extension (source, extension_name))
Packit 15f964
		return;
Packit 15f964
Packit 15f964
	extension = e_source_get_extension (source, extension_name);
Packit 15f964
Packit 15f964
	value = e_source_authentication_get_host (extension);
Packit 15f964
	gtk_label_set_text (host_label, value);
Packit 15f964
Packit 15f964
	value = e_source_authentication_get_user (extension);
Packit 15f964
	gtk_label_set_text (user_label, value);
Packit 15f964
}
Packit 15f964
Packit 15f964
/* Helper for mail_config_summary_page_refresh() */
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_refresh_security_label (ESource *source,
Packit 15f964
                                                 GtkLabel *security_label)
Packit 15f964
{
Packit 15f964
	GEnumClass *enum_class;
Packit 15f964
	GEnumValue *enum_value;
Packit 15f964
	ESourceSecurity *extension;
Packit 15f964
	const gchar *extension_name;
Packit 15f964
	const gchar *value;
Packit 15f964
Packit 15f964
	extension_name = E_SOURCE_EXTENSION_SECURITY;
Packit 15f964
	if (!e_source_has_extension (source, extension_name))
Packit 15f964
		return;
Packit 15f964
Packit 15f964
	extension = e_source_get_extension (source, extension_name);
Packit 15f964
Packit 15f964
	/* XXX This is a pain in the butt, but we want to avoid hard-coding
Packit 15f964
	 *     string values from the CamelNetworkSecurityMethod enum class
Packit 15f964
	 *     in case they change in the future. */
Packit 15f964
	enum_class = g_type_class_ref (CAMEL_TYPE_NETWORK_SECURITY_METHOD);
Packit 15f964
	value = e_source_security_get_method (extension);
Packit 15f964
	if (value != NULL)
Packit 15f964
		enum_value = g_enum_get_value_by_nick (enum_class, value);
Packit 15f964
	else
Packit 15f964
		enum_value = NULL;
Packit 15f964
	if (enum_value == NULL) {
Packit 15f964
		gtk_label_set_text (security_label, value);
Packit 15f964
	} else switch ((CamelNetworkSecurityMethod) enum_value->value) {
Packit 15f964
		case CAMEL_NETWORK_SECURITY_METHOD_NONE:
Packit 15f964
			gtk_label_set_text (security_label, _("None"));
Packit 15f964
			break;
Packit 15f964
		case CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT:
Packit 15f964
			gtk_label_set_text (security_label, _("TLS"));
Packit 15f964
			break;
Packit 15f964
		case CAMEL_NETWORK_SECURITY_METHOD_STARTTLS_ON_STANDARD_PORT:
Packit 15f964
			gtk_label_set_text (security_label, _("STARTTLS"));
Packit 15f964
			break;
Packit 15f964
	}
Packit 15f964
	g_type_class_unref (enum_class);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_source_changed (ESource *source,
Packit 15f964
                                         EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	e_mail_config_summary_page_refresh (page);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_set_property (GObject *object,
Packit 15f964
                                       guint property_id,
Packit 15f964
                                       const GValue *value,
Packit 15f964
                                       GParamSpec *pspec)
Packit 15f964
{
Packit 15f964
	switch (property_id) {
Packit 15f964
		case PROP_ACCOUNT_BACKEND:
Packit 15f964
			e_mail_config_summary_page_set_account_backend (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object),
Packit 15f964
				g_value_get_object (value));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_IDENTITY_SOURCE:
Packit 15f964
			e_mail_config_summary_page_set_identity_source (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object),
Packit 15f964
				g_value_get_object (value));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_TRANSPORT_BACKEND:
Packit 15f964
			e_mail_config_summary_page_set_transport_backend (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object),
Packit 15f964
				g_value_get_object (value));
Packit 15f964
			return;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_get_property (GObject *object,
Packit 15f964
                                       guint property_id,
Packit 15f964
                                       GValue *value,
Packit 15f964
                                       GParamSpec *pspec)
Packit 15f964
{
Packit 15f964
	switch (property_id) {
Packit 15f964
		case PROP_ACCOUNT_BACKEND:
Packit 15f964
			g_value_set_object (
Packit 15f964
				value,
Packit 15f964
				e_mail_config_summary_page_get_account_backend (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object)));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_ACCOUNT_SOURCE:
Packit 15f964
			g_value_set_object (
Packit 15f964
				value,
Packit 15f964
				e_mail_config_summary_page_get_account_source (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object)));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_IDENTITY_SOURCE:
Packit 15f964
			g_value_set_object (
Packit 15f964
				value,
Packit 15f964
				e_mail_config_summary_page_get_identity_source (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object)));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_TRANSPORT_BACKEND:
Packit 15f964
			g_value_set_object (
Packit 15f964
				value,
Packit 15f964
				e_mail_config_summary_page_get_transport_backend (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object)));
Packit 15f964
			return;
Packit 15f964
Packit 15f964
		case PROP_TRANSPORT_SOURCE:
Packit 15f964
			g_value_set_object (
Packit 15f964
				value,
Packit 15f964
				e_mail_config_summary_page_get_transport_source (
Packit 15f964
				E_MAIL_CONFIG_SUMMARY_PAGE (object)));
Packit 15f964
			return;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_dispose (GObject *object)
Packit 15f964
{
Packit 15f964
	EMailConfigSummaryPagePrivate *priv;
Packit 15f964
Packit 15f964
	priv = E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE (object);
Packit 15f964
Packit 15f964
	if (priv->account_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			priv->account_source,
Packit 15f964
			priv->account_source_changed_id);
Packit 15f964
		g_object_unref (priv->account_source);
Packit 15f964
		priv->account_source = NULL;
Packit 15f964
		priv->account_source_changed_id = 0;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (priv->identity_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			priv->identity_source,
Packit 15f964
			priv->identity_source_changed_id);
Packit 15f964
		g_object_unref (priv->identity_source);
Packit 15f964
		priv->identity_source = NULL;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (priv->transport_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			priv->transport_source,
Packit 15f964
			priv->transport_source_changed_id);
Packit 15f964
		g_object_unref (priv->transport_source);
Packit 15f964
		priv->transport_source = NULL;
Packit 15f964
		priv->transport_source_changed_id = 0;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (priv->account_backend != NULL) {
Packit 15f964
		g_object_unref (priv->account_backend);
Packit 15f964
		priv->account_backend = NULL;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (priv->transport_backend != NULL) {
Packit 15f964
		g_object_unref (priv->transport_backend);
Packit 15f964
		priv->transport_backend = NULL;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	/* Chain up to parent's dispose() method. */
Packit 15f964
	G_OBJECT_CLASS (e_mail_config_summary_page_parent_class)->
Packit 15f964
		dispose (object);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_constructed (GObject *object)
Packit 15f964
{
Packit 15f964
	EMailConfigSummaryPage *page;
Packit 15f964
	GtkLabel *label;
Packit 15f964
	GtkWidget *widget;
Packit 15f964
	GtkWidget *container;
Packit 15f964
	GtkWidget *main_box;
Packit 15f964
	GtkSizeGroup *size_group;
Packit 15f964
	const gchar *text;
Packit 15f964
	gchar *markup;
Packit 15f964
Packit 15f964
	page = E_MAIL_CONFIG_SUMMARY_PAGE (object);
Packit 15f964
Packit 15f964
	/* Chain up to parent's constructed() method. */
Packit 15f964
	G_OBJECT_CLASS (e_mail_config_summary_page_parent_class)->constructed (object);
Packit 15f964
Packit 15f964
	/* This page is dense with information,
Packit 15f964
	 * so put extra space between sections. */
Packit 15f964
	main_box = gtk_box_new (GTK_ORIENTATION_VERTICAL, 24);
Packit 15f964
Packit 15f964
	size_group = gtk_size_group_new (GTK_SIZE_GROUP_HORIZONTAL);
Packit 15f964
Packit 15f964
	text = _("This is a summary of the settings which will be used "
Packit 15f964
		 "to access your mail.");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_box_pack_start (GTK_BOX (main_box), widget, FALSE, FALSE, 0);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	/*** Account Information ***/
Packit 15f964
Packit 15f964
	widget = gtk_grid_new ();
Packit 15f964
	gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
Packit 15f964
	gtk_grid_set_column_spacing (GTK_GRID (widget), 6);
Packit 15f964
	gtk_box_pack_start (GTK_BOX (main_box), widget, FALSE, FALSE, 0);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	container = widget;
Packit 15f964
Packit 15f964
	text = _("Account Information");
Packit 15f964
	markup = g_markup_printf_escaped ("%s", text);
Packit 15f964
	widget = gtk_label_new (markup);
Packit 15f964
	gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 2, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
	g_free (markup);
Packit 15f964
Packit 15f964
	text = _("_Name:");
Packit 15f964
	widget = gtk_label_new_with_mnemonic (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	label = GTK_LABEL (widget);
Packit 15f964
Packit 15f964
	widget = gtk_entry_new ();
Packit 15f964
	gtk_widget_set_hexpand (widget, TRUE);
Packit 15f964
	gtk_label_set_mnemonic_widget (label, widget);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 1, 1);
Packit 15f964
	page->priv->account_name_entry = GTK_ENTRY (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	/* This entry affects the "check-complete" result. */
Packit 15f964
	g_signal_connect_swapped (
Packit 15f964
		widget, "changed",
Packit 15f964
		G_CALLBACK (e_mail_config_page_changed), page);
Packit 15f964
Packit 15f964
	text = _("The above name will be used to identify this account.\n"
Packit 15f964
		 "Use for example, “Work” or “Personal”.");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	/*** Details ***/
Packit 15f964
Packit 15f964
	widget = gtk_grid_new ();
Packit 15f964
	gtk_grid_set_row_spacing (GTK_GRID (widget), 6);
Packit 15f964
	gtk_grid_set_column_spacing (GTK_GRID (widget), 12);
Packit 15f964
	gtk_box_pack_start (GTK_BOX (main_box), widget, FALSE, FALSE, 0);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	container = widget;
Packit 15f964
Packit 15f964
	text = _("Personal Details");
Packit 15f964
	markup = g_markup_printf_escaped ("%s", text);
Packit 15f964
	widget = gtk_label_new (markup);
Packit 15f964
	gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 0, 3, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
	g_free (markup);
Packit 15f964
Packit 15f964
	text = _("Full Name:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 1, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 1, 2, 1);
Packit 15f964
	page->priv->name_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	text = _("Email Address:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 2, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 2, 2, 1);
Packit 15f964
	page->priv->address_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	text = _("Receiving");
Packit 15f964
	markup = g_markup_printf_escaped ("%s", text);
Packit 15f964
	widget = gtk_label_new (markup);
Packit 15f964
	gtk_widget_set_hexpand (widget, TRUE);
Packit 15f964
	gtk_widget_set_margin_top (widget, 6);
Packit 15f964
	gtk_size_group_add_widget (size_group, widget);
Packit 15f964
	gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 3, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
	g_free (markup);
Packit 15f964
Packit 15f964
	text = _("Sending");
Packit 15f964
	markup = g_markup_printf_escaped ("%s", text);
Packit 15f964
	widget = gtk_label_new (markup);
Packit 15f964
	gtk_widget_set_hexpand (widget, TRUE);
Packit 15f964
	gtk_widget_set_margin_top (widget, 6);
Packit 15f964
	gtk_size_group_add_widget (size_group, widget);
Packit 15f964
	gtk_label_set_use_markup (GTK_LABEL (widget), TRUE);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 2, 3, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
	g_free (markup);
Packit 15f964
Packit 15f964
	text = _("Server Type:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 4, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 4, 1, 1);
Packit 15f964
	page->priv->recv_backend_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 2, 4, 1, 1);
Packit 15f964
	page->priv->send_backend_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	text = _("Server:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 5, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 5, 1, 1);
Packit 15f964
	page->priv->recv_host_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 2, 5, 1, 1);
Packit 15f964
	page->priv->send_host_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	text = _("Username:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 6, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 6, 1, 1);
Packit 15f964
	page->priv->recv_user_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 2, 6, 1, 1);
Packit 15f964
	page->priv->send_user_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	text = _("Security:");
Packit 15f964
	widget = gtk_label_new (text);
Packit 15f964
	gtk_widget_set_margin_left (widget, 12);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 1.0, 0.5);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 0, 7, 1, 1);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 1, 7, 1, 1);
Packit 15f964
	page->priv->recv_security_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	widget = gtk_label_new (NULL);
Packit 15f964
	gtk_misc_set_alignment (GTK_MISC (widget), 0.0, 0.5);
Packit 15f964
	gtk_label_set_ellipsize (GTK_LABEL (widget), PANGO_ELLIPSIZE_END);
Packit 15f964
	gtk_grid_attach (GTK_GRID (container), widget, 2, 7, 1, 1);
Packit 15f964
	page->priv->send_security_label = GTK_LABEL (widget);
Packit 15f964
	gtk_widget_show (widget);
Packit 15f964
Packit 15f964
	g_object_unref (size_group);
Packit 15f964
Packit 15f964
	page->priv->main_box = GTK_BOX (main_box);
Packit 15f964
Packit 15f964
	e_mail_config_page_set_content (E_MAIL_CONFIG_PAGE (page), main_box);
Packit 15f964
Packit 15f964
	e_extensible_load_extensions (E_EXTENSIBLE (page));
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_refresh (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	EMailConfigSummaryPagePrivate *priv;
Packit 15f964
	ESource *source;
Packit 15f964
	gboolean account_is_transport = FALSE;
Packit 15f964
Packit 15f964
	priv = E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE (page);
Packit 15f964
Packit 15f964
	/* Clear all labels. */
Packit 15f964
	gtk_label_set_text (priv->name_label, "");
Packit 15f964
	gtk_label_set_text (priv->address_label, "");
Packit 15f964
	gtk_label_set_text (priv->recv_backend_label, "");
Packit 15f964
	gtk_label_set_text (priv->recv_host_label, "");
Packit 15f964
	gtk_label_set_text (priv->recv_user_label, "");
Packit 15f964
	gtk_label_set_text (priv->recv_security_label, "");
Packit 15f964
	gtk_label_set_text (priv->send_backend_label, "");
Packit 15f964
	gtk_label_set_text (priv->send_host_label, "");
Packit 15f964
	gtk_label_set_text (priv->send_user_label, "");
Packit 15f964
	gtk_label_set_text (priv->send_security_label, "");
Packit 15f964
Packit 15f964
	source = e_mail_config_summary_page_get_identity_source (page);
Packit 15f964
Packit 15f964
	if (source != NULL) {
Packit 15f964
		ESourceMailIdentity *extension;
Packit 15f964
		const gchar *extension_name;
Packit 15f964
		const gchar *value;
Packit 15f964
Packit 15f964
		extension_name = E_SOURCE_EXTENSION_MAIL_IDENTITY;
Packit 15f964
		extension = e_source_get_extension (source, extension_name);
Packit 15f964
Packit 15f964
		value = e_source_mail_identity_get_name (extension);
Packit 15f964
		gtk_label_set_text (priv->name_label, value);
Packit 15f964
Packit 15f964
		value = e_source_mail_identity_get_address (extension);
Packit 15f964
		gtk_label_set_text (priv->address_label, value);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	source = e_mail_config_summary_page_get_account_source (page);
Packit 15f964
Packit 15f964
	if (source != NULL) {
Packit 15f964
		ESourceBackend *extension;
Packit 15f964
		const gchar *extension_name;
Packit 15f964
		const gchar *value;
Packit 15f964
Packit 15f964
		extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT;
Packit 15f964
		extension = e_source_get_extension (source, extension_name);
Packit 15f964
Packit 15f964
		value = e_source_backend_get_backend_name (extension);
Packit 15f964
		gtk_label_set_text (priv->recv_backend_label, value);
Packit 15f964
Packit 15f964
		mail_config_summary_page_refresh_auth_labels (
Packit 15f964
			source,
Packit 15f964
			priv->recv_host_label,
Packit 15f964
			priv->recv_user_label);
Packit 15f964
Packit 15f964
		mail_config_summary_page_refresh_security_label (
Packit 15f964
			source,
Packit 15f964
			priv->recv_security_label);
Packit 15f964
Packit 15f964
		extension_name = E_SOURCE_EXTENSION_MAIL_TRANSPORT;
Packit 15f964
		if (e_source_has_extension (source, extension_name))
Packit 15f964
			account_is_transport = TRUE;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (account_is_transport)
Packit 15f964
		source = e_mail_config_summary_page_get_account_source (page);
Packit 15f964
	else
Packit 15f964
		source = e_mail_config_summary_page_get_transport_source (page);
Packit 15f964
Packit 15f964
	if (source != NULL) {
Packit 15f964
		ESourceBackend *extension;
Packit 15f964
		const gchar *extension_name;
Packit 15f964
		const gchar *value;
Packit 15f964
Packit 15f964
		extension_name = E_SOURCE_EXTENSION_MAIL_TRANSPORT;
Packit 15f964
		extension = e_source_get_extension (source, extension_name);
Packit 15f964
Packit 15f964
		value = e_source_backend_get_backend_name (extension);
Packit 15f964
		gtk_label_set_text (priv->send_backend_label, value);
Packit 15f964
Packit 15f964
		mail_config_summary_page_refresh_auth_labels (
Packit 15f964
			source,
Packit 15f964
			priv->send_host_label,
Packit 15f964
			priv->send_user_label);
Packit 15f964
Packit 15f964
		mail_config_summary_page_refresh_security_label (
Packit 15f964
			source,
Packit 15f964
			priv->send_security_label);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	e_mail_config_page_changed (E_MAIL_CONFIG_PAGE (page));
Packit 15f964
}
Packit 15f964
Packit 15f964
static gboolean
Packit 15f964
mail_config_summary_page_check_complete (EMailConfigPage *page)
Packit 15f964
{
Packit 15f964
	EMailConfigSummaryPagePrivate *priv;
Packit 15f964
	gchar *stripped_text;
Packit 15f964
	const gchar *text;
Packit 15f964
	gboolean complete;
Packit 15f964
Packit 15f964
	priv = E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE (page);
Packit 15f964
Packit 15f964
	/* Strip the account name of leading and trailing
Packit 15f964
	 * whitespace as e_source_set_display_name() does. */
Packit 15f964
	text = gtk_entry_get_text (priv->account_name_entry);
Packit 15f964
	stripped_text = g_strstrip (g_strdup ((text != NULL) ? text : ""));
Packit 15f964
	complete = (*stripped_text != '\0');
Packit 15f964
	g_free (stripped_text);
Packit 15f964
Packit 15f964
	e_util_set_entry_issue_hint (GTK_WIDGET (priv->account_name_entry), complete ? NULL : _("Account Name cannot be empty"));
Packit 15f964
Packit 15f964
	if (complete) {
Packit 15f964
		gboolean recv_is_none, send_is_none;
Packit 15f964
Packit 15f964
		recv_is_none = gtk_widget_get_visible (GTK_WIDGET (priv->recv_backend_label)) &&
Packit 15f964
				g_strcmp0 (gtk_label_get_text (priv->recv_backend_label), "none") == 0;
Packit 15f964
Packit 15f964
		send_is_none = gtk_widget_get_visible (GTK_WIDGET (priv->send_backend_label)) &&
Packit 15f964
				g_strcmp0 (gtk_label_get_text (priv->send_backend_label), "none") == 0;
Packit 15f964
Packit 15f964
		complete = !recv_is_none || !send_is_none;
Packit 15f964
Packit 15f964
		e_util_set_entry_issue_hint (GTK_WIDGET (priv->account_name_entry), complete ? NULL : _("Cannot have both receiving and sending parts set to None"));
Packit 15f964
	}
Packit 15f964
Packit 15f964
	return complete;
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
mail_config_summary_page_commit_changes (EMailConfigPage *page,
Packit 15f964
                                         GQueue *source_queue)
Packit 15f964
{
Packit 15f964
	EMailConfigSummaryPagePrivate *priv;
Packit 15f964
	EMailConfigServiceBackend *backend;
Packit 15f964
	ESource *account_source;
Packit 15f964
	ESource *identity_source;
Packit 15f964
	ESource *transport_source;
Packit 15f964
	ESource *collection_source;
Packit 15f964
	ESourceExtension *extension;
Packit 15f964
	const gchar *extension_name;
Packit 15f964
	const gchar *parent_uid;
Packit 15f964
	const gchar *text;
Packit 15f964
Packit 15f964
	priv = E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE (page);
Packit 15f964
Packit 15f964
	backend = e_mail_config_summary_page_get_account_backend (
Packit 15f964
		E_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
	account_source =
Packit 15f964
		e_mail_config_service_backend_get_source (backend);
Packit 15f964
	collection_source =
Packit 15f964
		e_mail_config_service_backend_get_collection (backend);
Packit 15f964
Packit 15f964
	/* The transport backend is NULL when the Sending Page is hidden. */
Packit 15f964
	backend = e_mail_config_summary_page_get_transport_backend (
Packit 15f964
		E_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
	transport_source = (backend != NULL) ?
Packit 15f964
		e_mail_config_service_backend_get_source (backend) : NULL;
Packit 15f964
Packit 15f964
	identity_source = e_mail_config_summary_page_get_identity_source (
Packit 15f964
		E_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
Packit 15f964
	/* This should propagate to the other sources through bindings. */
Packit 15f964
	text = gtk_entry_get_text (priv->account_name_entry);
Packit 15f964
	e_source_set_display_name (identity_source, text);
Packit 15f964
Packit 15f964
	/* Setup parent/child relationships and cross-references. */
Packit 15f964
Packit 15f964
	if (collection_source != NULL) {
Packit 15f964
		parent_uid = e_source_get_uid (collection_source);
Packit 15f964
		e_source_set_parent (account_source, parent_uid);
Packit 15f964
		e_source_set_parent (identity_source, parent_uid);
Packit 15f964
		if (transport_source != NULL)
Packit 15f964
			e_source_set_parent (transport_source, parent_uid);
Packit 15f964
	} else {
Packit 15f964
		parent_uid = e_source_get_uid (account_source);
Packit 15f964
		e_source_set_parent (identity_source, parent_uid);
Packit 15f964
		if (transport_source != NULL)
Packit 15f964
			e_source_set_parent (transport_source, parent_uid);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	extension_name = E_SOURCE_EXTENSION_MAIL_ACCOUNT;
Packit 15f964
	extension = e_source_get_extension (account_source, extension_name);
Packit 15f964
	e_source_mail_account_set_identity_uid (
Packit 15f964
		E_SOURCE_MAIL_ACCOUNT (extension),
Packit 15f964
		e_source_get_uid (identity_source));
Packit 15f964
Packit 15f964
	extension_name = E_SOURCE_EXTENSION_MAIL_SUBMISSION;
Packit 15f964
	extension = e_source_get_extension (identity_source, extension_name);
Packit 15f964
	if (transport_source != NULL)
Packit 15f964
		e_source_mail_submission_set_transport_uid (
Packit 15f964
			E_SOURCE_MAIL_SUBMISSION (extension),
Packit 15f964
			e_source_get_uid (transport_source));
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
e_mail_config_summary_page_class_init (EMailConfigSummaryPageClass *class)
Packit 15f964
{
Packit 15f964
	GObjectClass *object_class;
Packit 15f964
Packit 15f964
	g_type_class_add_private (
Packit 15f964
		class, sizeof (EMailConfigSummaryPagePrivate));
Packit 15f964
Packit 15f964
	object_class = G_OBJECT_CLASS (class);
Packit 15f964
	object_class->set_property = mail_config_summary_page_set_property;
Packit 15f964
	object_class->get_property = mail_config_summary_page_get_property;
Packit 15f964
	object_class->dispose = mail_config_summary_page_dispose;
Packit 15f964
	object_class->constructed = mail_config_summary_page_constructed;
Packit 15f964
Packit 15f964
	class->refresh = mail_config_summary_page_refresh;
Packit 15f964
Packit 15f964
	g_object_class_install_property (
Packit 15f964
		object_class,
Packit 15f964
		PROP_ACCOUNT_BACKEND,
Packit 15f964
		g_param_spec_object (
Packit 15f964
			"account-backend",
Packit 15f964
			"Account Backend",
Packit 15f964
			"Active mail account service backend",
Packit 15f964
			E_TYPE_MAIL_CONFIG_SERVICE_BACKEND,
Packit 15f964
			G_PARAM_READWRITE |
Packit 15f964
			G_PARAM_STATIC_STRINGS));
Packit 15f964
Packit 15f964
	g_object_class_install_property (
Packit 15f964
		object_class,
Packit 15f964
		PROP_ACCOUNT_SOURCE,
Packit 15f964
		g_param_spec_object (
Packit 15f964
			"account-source",
Packit 15f964
			"Account Source",
Packit 15f964
			"Mail account source being edited",
Packit 15f964
			E_TYPE_SOURCE,
Packit 15f964
			G_PARAM_READABLE |
Packit 15f964
			G_PARAM_STATIC_STRINGS));
Packit 15f964
Packit 15f964
	g_object_class_install_property (
Packit 15f964
		object_class,
Packit 15f964
		PROP_IDENTITY_SOURCE,
Packit 15f964
		g_param_spec_object (
Packit 15f964
			"identity-source",
Packit 15f964
			"Identity Source",
Packit 15f964
			"Mail identity source being edited",
Packit 15f964
			E_TYPE_SOURCE,
Packit 15f964
			G_PARAM_READWRITE |
Packit 15f964
			G_PARAM_STATIC_STRINGS));
Packit 15f964
Packit 15f964
	g_object_class_install_property (
Packit 15f964
		object_class,
Packit 15f964
		PROP_TRANSPORT_BACKEND,
Packit 15f964
		g_param_spec_object (
Packit 15f964
			"transport-backend",
Packit 15f964
			"Transport Backend",
Packit 15f964
			"Active mail transport service backend",
Packit 15f964
			E_TYPE_MAIL_CONFIG_SERVICE_BACKEND,
Packit 15f964
			G_PARAM_READWRITE |
Packit 15f964
			G_PARAM_STATIC_STRINGS));
Packit 15f964
Packit 15f964
	g_object_class_install_property (
Packit 15f964
		object_class,
Packit 15f964
		PROP_TRANSPORT_SOURCE,
Packit 15f964
		g_param_spec_object (
Packit 15f964
			"transport-source",
Packit 15f964
			"Transport Source",
Packit 15f964
			"Mail transport source being edited",
Packit 15f964
			E_TYPE_SOURCE,
Packit 15f964
			G_PARAM_READABLE |
Packit 15f964
			G_PARAM_STATIC_STRINGS));
Packit 15f964
Packit 15f964
	signals[REFRESH] = g_signal_new (
Packit 15f964
		"refresh",
Packit 15f964
		G_TYPE_FROM_CLASS (class),
Packit 15f964
		G_SIGNAL_RUN_LAST,
Packit 15f964
		G_STRUCT_OFFSET (EMailConfigSummaryPageClass, refresh),
Packit 15f964
		NULL, NULL,
Packit 15f964
		g_cclosure_marshal_VOID__VOID,
Packit 15f964
		G_TYPE_NONE, 0);
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
e_mail_config_summary_page_interface_init (EMailConfigPageInterface *iface)
Packit 15f964
{
Packit 15f964
	iface->title = _("Account Summary");
Packit 15f964
	iface->sort_order = E_MAIL_CONFIG_SUMMARY_PAGE_SORT_ORDER;
Packit 15f964
	iface->check_complete = mail_config_summary_page_check_complete;
Packit 15f964
	iface->commit_changes = mail_config_summary_page_commit_changes;
Packit 15f964
}
Packit 15f964
Packit 15f964
static void
Packit 15f964
e_mail_config_summary_page_init (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	page->priv = E_MAIL_CONFIG_SUMMARY_PAGE_GET_PRIVATE (page);
Packit 15f964
}
Packit 15f964
Packit 15f964
EMailConfigPage *
Packit 15f964
e_mail_config_summary_page_new (void)
Packit 15f964
{
Packit 15f964
	return g_object_new (E_TYPE_MAIL_CONFIG_SUMMARY_PAGE, NULL);
Packit 15f964
}
Packit 15f964
Packit 15f964
GtkBox *
Packit 15f964
e_mail_config_summary_page_get_internal_box (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->main_box;
Packit 15f964
}
Packit 15f964
Packit Service ce6d95
const gchar *
Packit Service ce6d95
e_mail_config_summary_page_get_account_name (EMailConfigSummaryPage *page)
Packit Service ce6d95
{
Packit Service ce6d95
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit Service ce6d95
Packit Service ce6d95
	return gtk_entry_get_text (page->priv->account_name_entry);
Packit Service ce6d95
}
Packit Service ce6d95
Packit 15f964
void
Packit 15f964
e_mail_config_summary_page_refresh (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
Packit 15f964
	g_signal_emit (page, signals[REFRESH], 0);
Packit 15f964
}
Packit 15f964
Packit 15f964
EMailConfigServiceBackend *
Packit 15f964
e_mail_config_summary_page_get_account_backend (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->account_backend;
Packit 15f964
}
Packit 15f964
Packit 15f964
void
Packit 15f964
e_mail_config_summary_page_set_account_backend (EMailConfigSummaryPage *page,
Packit 15f964
                                                EMailConfigServiceBackend *backend)
Packit 15f964
{
Packit 15f964
	g_return_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
Packit 15f964
	if (backend != NULL) {
Packit 15f964
		g_return_if_fail (E_IS_MAIL_CONFIG_SERVICE_BACKEND (backend));
Packit 15f964
		g_object_ref (backend);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (page->priv->account_backend != NULL)
Packit 15f964
		g_object_unref (page->priv->account_backend);
Packit 15f964
Packit 15f964
	page->priv->account_backend = backend;
Packit 15f964
Packit 15f964
	if (page->priv->account_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			page->priv->account_source,
Packit 15f964
			page->priv->account_source_changed_id);
Packit 15f964
		g_object_unref (page->priv->account_source);
Packit 15f964
		page->priv->account_source = NULL;
Packit 15f964
		page->priv->account_source_changed_id = 0;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (backend != NULL) {
Packit 15f964
		ESource *source;
Packit 15f964
		gulong handler_id;
Packit 15f964
Packit 15f964
		source = e_mail_config_service_backend_get_source (backend);
Packit 15f964
Packit 15f964
		handler_id = g_signal_connect (
Packit 15f964
			source, "changed",
Packit 15f964
			G_CALLBACK (mail_config_summary_page_source_changed),
Packit 15f964
			page);
Packit 15f964
Packit 15f964
		page->priv->account_source = g_object_ref (source);
Packit 15f964
		page->priv->account_source_changed_id = handler_id;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	g_object_freeze_notify (G_OBJECT (page));
Packit 15f964
	g_object_notify (G_OBJECT (page), "account-backend");
Packit 15f964
	g_object_notify (G_OBJECT (page), "account-source");
Packit 15f964
	g_object_thaw_notify (G_OBJECT (page));
Packit 15f964
Packit 15f964
	e_mail_config_summary_page_refresh (page);
Packit 15f964
}
Packit 15f964
Packit 15f964
ESource *
Packit 15f964
e_mail_config_summary_page_get_account_source (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->account_source;
Packit 15f964
}
Packit 15f964
Packit 15f964
ESource *
Packit 15f964
e_mail_config_summary_page_get_identity_source (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->identity_source;
Packit 15f964
}
Packit 15f964
Packit 15f964
void
Packit 15f964
e_mail_config_summary_page_set_identity_source (EMailConfigSummaryPage *page,
Packit 15f964
                                                ESource *identity_source)
Packit 15f964
{
Packit 15f964
	g_return_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
Packit 15f964
	if (page->priv->identity_source == identity_source)
Packit 15f964
		return;
Packit 15f964
Packit 15f964
	if (identity_source != NULL) {
Packit 15f964
		g_return_if_fail (E_IS_SOURCE (identity_source));
Packit 15f964
		g_object_ref (identity_source);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (page->priv->identity_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			page->priv->identity_source,
Packit 15f964
			page->priv->identity_source_changed_id);
Packit 15f964
		g_object_unref (page->priv->identity_source);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	page->priv->identity_source = identity_source;
Packit 15f964
	page->priv->identity_source_changed_id = 0;
Packit 15f964
Packit Service ce6d95
	if (page->priv->account_name_binding) {
Packit Service ce6d95
		g_binding_unbind (page->priv->account_name_binding);
Packit Service ce6d95
		page->priv->account_name_binding = NULL;
Packit Service ce6d95
	}
Packit Service ce6d95
Packit 15f964
	if (identity_source != NULL) {
Packit 15f964
		gulong handler_id;
Packit 15f964
Packit 15f964
		handler_id = g_signal_connect (
Packit 15f964
			identity_source, "changed",
Packit 15f964
			G_CALLBACK (mail_config_summary_page_source_changed),
Packit 15f964
			page);
Packit 15f964
Packit 15f964
		page->priv->identity_source_changed_id = handler_id;
Packit Service ce6d95
Packit Service ce6d95
		page->priv->account_name_binding =
Packit Service ce6d95
			e_binding_bind_property (identity_source, "display-name",
Packit Service ce6d95
				page->priv->account_name_entry, "text",
Packit Service ce6d95
				G_BINDING_BIDIRECTIONAL | G_BINDING_SYNC_CREATE);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	g_object_notify (G_OBJECT (page), "identity-source");
Packit 15f964
Packit 15f964
	e_mail_config_summary_page_refresh (page);
Packit 15f964
}
Packit 15f964
Packit 15f964
EMailConfigServiceBackend *
Packit 15f964
e_mail_config_summary_page_get_transport_backend (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->transport_backend;
Packit 15f964
}
Packit 15f964
Packit 15f964
void
Packit 15f964
e_mail_config_summary_page_set_transport_backend (EMailConfigSummaryPage *page,
Packit 15f964
                                                  EMailConfigServiceBackend *backend)
Packit 15f964
{
Packit 15f964
	g_return_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page));
Packit 15f964
Packit 15f964
	if (backend != NULL) {
Packit 15f964
		g_return_if_fail (E_IS_MAIL_CONFIG_SERVICE_BACKEND (backend));
Packit 15f964
		g_object_ref (backend);
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (page->priv->transport_backend != NULL)
Packit 15f964
		g_object_unref (page->priv->transport_backend);
Packit 15f964
Packit 15f964
	page->priv->transport_backend = backend;
Packit 15f964
Packit 15f964
	if (page->priv->transport_source != NULL) {
Packit 15f964
		g_signal_handler_disconnect (
Packit 15f964
			page->priv->transport_source,
Packit 15f964
			page->priv->transport_source_changed_id);
Packit 15f964
		g_object_unref (page->priv->transport_source);
Packit 15f964
		page->priv->transport_source = NULL;
Packit 15f964
		page->priv->transport_source_changed_id = 0;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	if (backend != NULL) {
Packit 15f964
		ESource *source;
Packit 15f964
		gulong handler_id;
Packit 15f964
Packit 15f964
		source = e_mail_config_service_backend_get_source (backend);
Packit 15f964
Packit 15f964
		handler_id = g_signal_connect (
Packit 15f964
			source, "changed",
Packit 15f964
			G_CALLBACK (mail_config_summary_page_source_changed),
Packit 15f964
			page);
Packit 15f964
Packit 15f964
		page->priv->transport_source = g_object_ref (source);
Packit 15f964
		page->priv->transport_source_changed_id = handler_id;
Packit 15f964
	}
Packit 15f964
Packit 15f964
	g_object_freeze_notify (G_OBJECT (page));
Packit 15f964
	g_object_notify (G_OBJECT (page), "transport-backend");
Packit 15f964
	g_object_notify (G_OBJECT (page), "transport-source");
Packit 15f964
	g_object_thaw_notify (G_OBJECT (page));
Packit 15f964
Packit 15f964
	e_mail_config_summary_page_refresh (page);
Packit 15f964
}
Packit 15f964
Packit 15f964
ESource *
Packit 15f964
e_mail_config_summary_page_get_transport_source (EMailConfigSummaryPage *page)
Packit 15f964
{
Packit 15f964
	g_return_val_if_fail (E_IS_MAIL_CONFIG_SUMMARY_PAGE (page), NULL);
Packit 15f964
Packit 15f964
	return page->priv->transport_source;
Packit 15f964
}
Packit 15f964