diff options
-rw-r--r-- | composer/e-composer-header-table.c | 44 | ||||
-rw-r--r-- | composer/e-composer-header-table.h | 9 | ||||
-rw-r--r-- | composer/e-composer-name-header.c | 29 | ||||
-rw-r--r-- | composer/e-composer-name-header.h | 3 | ||||
-rw-r--r-- | mail/em-composer-utils.c | 5 |
5 files changed, 82 insertions, 8 deletions
diff --git a/composer/e-composer-header-table.c b/composer/e-composer-header-table.c index 44a4919e0d..d539565ad2 100644 --- a/composer/e-composer-header-table.c +++ b/composer/e-composer-header-table.c @@ -1003,6 +1003,22 @@ e_composer_header_table_get_destinations_bcc (EComposerHeaderTable *table) } void +e_composer_header_table_add_destinations_bcc (EComposerHeaderTable *table, + EDestination **destinations) +{ + EComposerNameHeader *header; + + g_return_if_fail (E_IS_COMPOSER_HEADER_TABLE (table)); + + header = E_COMPOSER_HEADER_TABLE_GET_BCC_HEADER (table); + e_composer_name_header_add_destinations (header, destinations); + + if (destinations != NULL && *destinations != NULL) + e_composer_header_table_set_header_visible ( + table, E_COMPOSER_HEADER_BCC, TRUE); +} + +void e_composer_header_table_set_destinations_bcc (EComposerHeaderTable *table, EDestination **destinations) { @@ -1030,6 +1046,22 @@ e_composer_header_table_get_destinations_cc (EComposerHeaderTable *table) } void +e_composer_header_table_add_destinations_cc (EComposerHeaderTable *table, + EDestination **destinations) +{ + EComposerNameHeader *header; + + g_return_if_fail (E_IS_COMPOSER_HEADER_TABLE (table)); + + header = E_COMPOSER_HEADER_TABLE_GET_CC_HEADER (table); + e_composer_name_header_add_destinations (header, destinations); + + if (destinations != NULL && *destinations != NULL) + e_composer_header_table_set_header_visible ( + table, E_COMPOSER_HEADER_CC, TRUE); +} + +void e_composer_header_table_set_destinations_cc (EComposerHeaderTable *table, EDestination **destinations) { @@ -1057,6 +1089,18 @@ e_composer_header_table_get_destinations_to (EComposerHeaderTable *table) } void +e_composer_header_table_add_destinations_to (EComposerHeaderTable *table, + EDestination **destinations) +{ + EComposerNameHeader *header; + + g_return_if_fail (E_IS_COMPOSER_HEADER_TABLE (table)); + + header = E_COMPOSER_HEADER_TABLE_GET_TO_HEADER (table); + e_composer_name_header_add_destinations (header, destinations); +} + +void e_composer_header_table_set_destinations_to (EComposerHeaderTable *table, EDestination **destinations) { diff --git a/composer/e-composer-header-table.h b/composer/e-composer-header-table.h index b3150c409a..91d64fe22a 100644 --- a/composer/e-composer-header-table.h +++ b/composer/e-composer-header-table.h @@ -112,16 +112,25 @@ EDestination ** e_composer_header_table_get_destinations (EComposerHeaderTable *table); EDestination ** e_composer_header_table_get_destinations_bcc (EComposerHeaderTable *table); +void e_composer_header_table_add_destinations_bcc + (EComposerHeaderTable *table, + EDestination **destination); void e_composer_header_table_set_destinations_bcc (EComposerHeaderTable *table, EDestination **destinations); EDestination ** e_composer_header_table_get_destinations_cc (EComposerHeaderTable *table); +void e_composer_header_table_add_destinations_cc + (EComposerHeaderTable *table, + EDestination **destination); void e_composer_header_table_set_destinations_cc (EComposerHeaderTable *table, EDestination **destinations); EDestination ** e_composer_header_table_get_destinations_to (EComposerHeaderTable *table); +void e_composer_header_table_add_destinations_to + (EComposerHeaderTable *table, + EDestination **destinations); void e_composer_header_table_set_destinations_to (EComposerHeaderTable *table, EDestination **destinations); diff --git a/composer/e-composer-name-header.c b/composer/e-composer-name-header.c index 1b5acc19d5..a6618fdb4a 100644 --- a/composer/e-composer-name-header.c +++ b/composer/e-composer-name-header.c @@ -298,13 +298,33 @@ e_composer_name_header_get_destinations (EComposerNameHeader *header) } void +e_composer_name_header_add_destinations (EComposerNameHeader *header, + EDestination **destinations) +{ + EDestinationStore *store; + ENameSelectorEntry *entry; + gint ii; + + g_return_if_fail (E_IS_COMPOSER_NAME_HEADER (header)); + + entry = E_COMPOSER_NAME_HEADER_GET_ENTRY (header); + store = e_name_selector_entry_peek_destination_store (entry); + + if (destinations == NULL) + return; + + for (ii = 0; destinations[ii] != NULL; ii++) + e_destination_store_append_destination ( + store, destinations[ii]); +} + +void e_composer_name_header_set_destinations (EComposerNameHeader *header, EDestination **destinations) { EDestinationStore *store; ENameSelectorEntry *entry; GList *list, *iter; - gint ii; g_return_if_fail (E_IS_COMPOSER_NAME_HEADER (header)); @@ -317,10 +337,5 @@ e_composer_name_header_set_destinations (EComposerNameHeader *header, e_destination_store_remove_destination (store, iter->data); g_list_free (list); - if (destinations == NULL) - return; - - for (ii = 0; destinations[ii] != NULL; ii++) - e_destination_store_append_destination ( - store, destinations[ii]); + e_composer_name_header_add_destinations (header, destinations); } diff --git a/composer/e-composer-name-header.h b/composer/e-composer-name-header.h index 04f7100241..f95c33fce3 100644 --- a/composer/e-composer-name-header.h +++ b/composer/e-composer-name-header.h @@ -66,6 +66,9 @@ ENameSelector * e_composer_name_header_get_name_selector (EComposerNameHeader *header); EDestination ** e_composer_name_header_get_destinations (EComposerNameHeader *header); +void e_composer_name_header_add_destinations + (EComposerNameHeader *header, + EDestination **destination); void e_composer_name_header_set_destinations (EComposerNameHeader *header, EDestination **destinations); diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c index 0a503b579b..800717f41a 100644 --- a/mail/em-composer-utils.c +++ b/mail/em-composer-utils.c @@ -1799,7 +1799,10 @@ reply_get_composer (CamelMimeMessage *message, EAccount *account, e_composer_header_table_set_account (table, account); e_composer_header_table_set_subject (table, subject); e_composer_header_table_set_destinations_to (table, tov); - e_composer_header_table_set_destinations_cc (table, ccv); + + /* Add destinations instead of setting, so we don't remove + * automatic CC addresses that have already been added. */ + e_composer_header_table_add_destinations_cc (table, ccv); g_free (subject); |