aboutsummaryrefslogtreecommitdiffstats
path: root/composer
diff options
context:
space:
mode:
authorFederico Mena Quintero <federico@novell.com>2010-05-05 02:39:23 +0800
committerFederico Mena Quintero <federico@novell.com>2010-05-05 04:48:41 +0800
commitac2ef9fb41e51292b379c6dee62dd765f783dae0 (patch)
treef22b208c1816a88666506c352015775878a6a738 /composer
parente496f94b0433b22e1ecdf35328bcaf16b4abb6a4 (diff)
downloadgsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar.gz
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar.bz2
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar.lz
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar.xz
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.tar.zst
gsoc2013-evolution-ac2ef9fb41e51292b379c6dee62dd765f783dae0.zip
Hide the From header if only one account is set up
This lets us save vertical space in the mail composer in the common case where the user has only a single email account configured - then he doesn't need to choose which account to send from. Signed-off-by: Federico Mena Quintero <federico@novell.com>
Diffstat (limited to 'composer')
-rw-r--r--composer/e-composer-header-table.c44
1 files changed, 35 insertions, 9 deletions
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c
index f8ea8df272..8a252c66e2 100644
--- a/composer/e-composer-header-table.c
+++ b/composer/e-composer-header-table.c
@@ -276,6 +276,27 @@ skip_custom:
return new_destinations;
}
+static int
+count_from_accounts (EComposerHeaderTable *table)
+{
+ EComposerHeader *header;
+ EAccountComboBox *combo_box;
+
+ header = e_composer_header_table_get_header (table, E_COMPOSER_HEADER_FROM);
+ combo_box = E_ACCOUNT_COMBO_BOX (header->input_widget);
+
+ return e_account_combo_box_count_displayed_accounts (combo_box);
+}
+
+static gboolean
+from_header_should_be_visible (EComposerHeaderTable *table)
+{
+ int num_accounts;
+
+ num_accounts = count_from_accounts (table);
+ return (num_accounts > 1);
+}
+
static void
composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
{
@@ -288,6 +309,8 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
EComposerHeader *header;
const gchar *key;
guint binding_id;
+ gboolean sensitive;
+ gboolean visible;
binding_id = table->priv->gconf_bindings[ii];
header = e_composer_header_table_get_header (table, ii);
@@ -304,10 +327,6 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
key = COMPOSER_GCONF_PREFIX "/show_mail_cc";
break;
- case E_COMPOSER_HEADER_FROM:
- key = COMPOSER_GCONF_PREFIX "/show_mail_from";
- break;
-
case E_COMPOSER_HEADER_REPLY_TO:
key = COMPOSER_GCONF_PREFIX "/show_mail_reply_to";
break;
@@ -318,22 +337,29 @@ composer_header_table_setup_mail_headers (EComposerHeaderTable *table)
}
switch (ii) {
+ case E_COMPOSER_HEADER_FROM:
+ sensitive = TRUE;
+ visible = from_header_should_be_visible (table);
+ break;
+
case E_COMPOSER_HEADER_BCC:
case E_COMPOSER_HEADER_CC:
- case E_COMPOSER_HEADER_FROM:
case E_COMPOSER_HEADER_REPLY_TO:
case E_COMPOSER_HEADER_SUBJECT:
case E_COMPOSER_HEADER_TO:
- e_composer_header_set_sensitive (header, TRUE);
- e_composer_header_set_visible (header, TRUE);
+ sensitive = TRUE;
+ visible = TRUE;
break;
default:
- e_composer_header_set_sensitive (header, FALSE);
- e_composer_header_set_visible (header, FALSE);
+ sensitive = FALSE;
+ visible = FALSE;
break;
}
+ e_composer_header_set_sensitive (header, sensitive);
+ e_composer_header_set_visible (header, visible);
+
if (key != NULL)
binding_id = gconf_bridge_bind_property (
bridge, key, G_OBJECT (header), "visible");