Updated to use EAccountList and iterators. (evolution_composer_init):

2003-01-17  Jeffrey Stedfast  <fejj@ximian.com>

	* evolution-composer.c (impl_Composer_set_headers): Updated to use
	EAccountList and iterators.
	(evolution_composer_init): Updated to use EAccount.

	* e-msg-composer.c (from_changed_cb): Updated to use the EAccount
	object.
	(e_msg_composer_new_with_message): Same.
	(e_msg_composer_get_preferred_account): Updated to return an
	EAccount object.
	(set_editor_signature): Updated to use an EAccountIdentity pointer.
	(get_signature_html): Same.

	* e-msg-composer-hdrs.c (create_from_optionmenu): Updated to use
	EAccount and EAccountList foo.
	(destroy): Same here.
	(e_msg_composer_hdrs_set_from_account): Here too.
	(e_msg_composer_hdrs_get_from): Updated.

svn path=/trunk/; revision=19511
This commit is contained in:
Jeffrey Stedfast
2003-01-17 23:32:07 +00:00
committed by Jeffrey Stedfast
parent 99df61da47
commit f4a030d2fa
6 changed files with 92 additions and 49 deletions

View File

@ -1,3 +1,23 @@
2003-01-17 Jeffrey Stedfast <fejj@ximian.com>
* evolution-composer.c (impl_Composer_set_headers): Updated to use
EAccountList and iterators.
(evolution_composer_init): Updated to use EAccount.
* e-msg-composer.c (from_changed_cb): Updated to use the EAccount
object.
(e_msg_composer_new_with_message): Same.
(e_msg_composer_get_preferred_account): Updated to return an
EAccount object.
(set_editor_signature): Updated to use an EAccountIdentity pointer.
(get_signature_html): Same.
* e-msg-composer-hdrs.c (create_from_optionmenu): Updated to use
EAccount and EAccountList foo.
(destroy): Same here.
(e_msg_composer_hdrs_set_from_account): Here too.
(e_msg_composer_hdrs_get_from): Updated.
2003-01-16 Jeffrey Stedfast <fejj@ximian.com>
* e-msg-composer.c (signature_cb): mail_config_get_signature_list

View File

@ -193,8 +193,9 @@ static GtkWidget *
create_from_optionmenu (EMsgComposerHdrs *hdrs)
{
GtkWidget *omenu, *menu, *first = NULL;
const GSList *accounts, *a;
const MailConfigAccount *account;
EAccountList *accounts;
EAccount *account;
EIterator *iter;
GPtrArray *addresses;
GtkWidget *item, *hbox;
int i = 0, history = 0, m, matches;
@ -210,16 +211,22 @@ create_from_optionmenu (EMsgComposerHdrs *hdrs)
/* Make list of account email addresses */
addresses = g_ptr_array_new ();
accounts = mail_config_get_accounts ();
for (a = accounts; a; a = a->next) {
account = a->data;
iter = e_list_get_iterator ((EList *) accounts);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
if (account->id->address)
g_ptr_array_add (addresses, account->id->address);
e_iterator_next (iter);
}
while (accounts) {
e_iterator_reset (iter);
while (e_iterator_is_valid (iter)) {
char *label;
account = accounts->data;
account = (EAccount *) e_iterator_get (iter);
/* this should never ever fail */
if (!account || !account->name || !account->id) {
@ -245,7 +252,8 @@ create_from_optionmenu (EMsgComposerHdrs *hdrs)
item = gtk_menu_item_new_with_label (label);
g_free (label);
g_object_set_data ((GObject *) item, "account", account_copy (account));
g_object_ref (account);
g_object_set_data ((GObject *) item, "account", account);
g_signal_connect (item, "activate", G_CALLBACK (from_changed), hdrs);
if (i == index) {
@ -261,9 +269,11 @@ create_from_optionmenu (EMsgComposerHdrs *hdrs)
i++;
}
accounts = accounts->next;
e_iterator_next (iter);
}
g_object_unref (iter);
g_ptr_array_free (addresses, TRUE);
gtk_option_menu_set_menu (GTK_OPTION_MENU (omenu), menu);
@ -292,7 +302,7 @@ addressbook_entry_changed (BonoboListener *listener,
{
EMsgComposerHdrs *hdrs = E_MSG_COMPOSER_HDRS (user_data);
g_signal_emit(hdrs, signals[HDRS_CHANGED], 0);
g_signal_emit (hdrs, signals[HDRS_CHANGED], 0);
}
static GtkWidget *
@ -570,7 +580,7 @@ destroy (GtkObject *object)
{
EMsgComposerHdrs *hdrs;
EMsgComposerHdrsPrivate *priv;
GSList *l;
GSList *l, *n;
hdrs = E_MSG_COMPOSER_HDRS (object);
priv = hdrs->priv;
@ -583,7 +593,7 @@ destroy (GtkObject *object)
CORBA_exception_free (&ev);
priv->corba_select_names = CORBA_OBJECT_NIL;
}
if (priv->tooltips) {
gtk_object_destroy (GTK_OBJECT (priv->tooltips));
g_object_unref (priv->tooltips);
@ -592,15 +602,17 @@ destroy (GtkObject *object)
l = priv->from_options;
while (l) {
MailConfigAccount *account;
EAccount *account;
GtkWidget *item = l->data;
account = g_object_get_data ((GObject *) item, "account");
account_destroy (account);
g_object_unref (account);
l = l->next;
n = l->next;
g_slist_free_1 (l);
l = n;
}
g_slist_free (priv->from_options);
priv->from_options = NULL;
g_free (priv);
@ -901,7 +913,7 @@ e_msg_composer_hdrs_set_from_account (EMsgComposerHdrs *hdrs,
/* find the item that represents the account and activate it */
l = hdrs->priv->from_options;
while (l) {
MailConfigAccount *account;
EAccount *account;
item = l->data;
account = g_object_get_data ((GObject *) item, "account");
@ -998,22 +1010,20 @@ e_msg_composer_hdrs_set_subject (EMsgComposerHdrs *hdrs,
g_return_if_fail (E_IS_MSG_COMPOSER_HDRS (hdrs));
g_return_if_fail (subject != NULL);
g_object_set((hdrs->priv->subject.entry),
"text", subject,
NULL);
g_object_set ((GObject *) hdrs->priv->subject.entry,
"text", subject, NULL);
}
CamelInternetAddress *
e_msg_composer_hdrs_get_from (EMsgComposerHdrs *hdrs)
{
const MailConfigAccount *account;
CamelInternetAddress *addr;
EAccount *account;
g_return_val_if_fail (E_IS_MSG_COMPOSER_HDRS (hdrs), NULL);
account = hdrs->account;
if (!account || !account->id) {
if (!(account = hdrs->account)) {
/* FIXME: perhaps we should try the default account? */
return NULL;
}

View File

@ -29,9 +29,9 @@
#include <bonobo/bonobo-ui-component.h>
#include <e-util/e-account.h>
#include <camel/camel-mime-message.h>
#include <addressbook/backend/ebook/e-destination.h>
#include <mail/mail-config.h>
#ifdef __cplusplus
extern "C" {
@ -53,10 +53,10 @@ typedef struct _EMsgComposerHdrsPrivate EMsgComposerHdrsPrivate;
struct _EMsgComposerHdrs {
GtkTable parent;
EMsgComposerHdrsPrivate *priv;
const MailConfigAccount *account;
EAccount *account;
guint32 visible_mask;

View File

@ -1008,7 +1008,7 @@ decode_signature_name (const gchar *name)
#define CONVERT_SPACES CAMEL_MIME_FILTER_TOHTML_CONVERT_SPACES
static gchar *
static char *
get_signature_html (EMsgComposer *composer)
{
gboolean format_html = FALSE;
@ -1019,7 +1019,7 @@ get_signature_html (EMsgComposer *composer)
format_html = composer->signature->html;
script = composer->signature->script;
} else if (composer->auto_signature) {
MailConfigIdentity *id;
EAccountIdentity *id;
char *organization;
char *address;
char *name;
@ -2303,7 +2303,7 @@ from_changed_cb (EMsgComposerHdrs *hdrs, void *data)
composer = E_MSG_COMPOSER (data);
if (hdrs->account) {
const MailConfigAccount *account = hdrs->account;
EAccount *account = hdrs->account;
e_msg_composer_set_pgp_sign (composer,
account->pgp_always_sign &&
@ -2931,11 +2931,14 @@ set_editor_signature (EMsgComposer *composer)
{
/* printf ("set_editor_signature\n"); */
if (E_MSG_COMPOSER_HDRS (composer->hdrs)->account->id) {
MailConfigIdentity *id;
EAccountIdentity *id;
GSList *signatures;
id = E_MSG_COMPOSER_HDRS (composer->hdrs)->account->id;
composer->signature = id->def_signature;
signatures = mail_config_get_signature_list ();
composer->signature = g_slist_nth_data (signatures, id->def_signature);
composer->auto_signature = id->auto_signature;
/* printf ("auto: %d\n", id->auto_signature); */
@ -3404,13 +3407,13 @@ e_msg_composer_new_with_message (CamelMimeMessage *message)
{
const CamelInternetAddress *to, *cc, *bcc;
GList *To = NULL, *Cc = NULL, *Bcc = NULL;
const MailConfigAccount *account = NULL;
const char *format, *subject, *postto;
EDestination **Tov, **Ccv, **Bccv;
GHashTable *auto_cc, *auto_bcc;
CamelContentType *content_type;
struct _header_raw *headers;
CamelDataWrapper *content;
EAccount *account = NULL;
char *account_name;
EMsgComposer *new;
XEvolution *xev;
@ -4070,7 +4073,7 @@ CamelMimeMessage *
e_msg_composer_get_message_draft (EMsgComposer *composer)
{
CamelMimeMessage *msg;
const MailConfigAccount *account;
EAccount *account;
gboolean old_send_html;
gboolean old_pgp_sign;
gboolean old_pgp_encrypt;
@ -4244,7 +4247,7 @@ e_msg_composer_get_send_html (EMsgComposer *composer)
*
* Returns the user-specified account (from field).
*/
const MailConfigAccount *
EAccount *
e_msg_composer_get_preferred_account (EMsgComposer *composer)
{
EMsgComposerHdrs *hdrs;

View File

@ -174,7 +174,7 @@ EDestination **e_msg_composer_get_cc (EMsgCo
EDestination **e_msg_composer_get_bcc (EMsgComposer *composer);
char *e_msg_composer_get_subject (EMsgComposer *composer);
const MailConfigAccount *e_msg_composer_get_preferred_account (EMsgComposer *composer);
EAccount *e_msg_composer_get_preferred_account (EMsgComposer *composer);
void e_msg_composer_clear_inlined_table (EMsgComposer *composer);
char *e_msg_composer_guess_mime_type (const char *file_name);
void e_msg_composer_set_changed (EMsgComposer *composer);

View File

@ -83,32 +83,42 @@ impl_Composer_set_headers (PortableServer_Servant servant,
BonoboObject *bonobo_object;
EvolutionComposer *composer;
EDestination **tov, **ccv, **bccv;
const MailConfigAccount *account;
const GSList *accounts;
EAccountList *accounts;
EAccount *account;
EIterator *iter;
int found = 0;
bonobo_object = bonobo_object_from_servant (servant);
composer = EVOLUTION_COMPOSER (bonobo_object);
account = mail_config_get_account_by_name (from);
if (!account) {
accounts = mail_config_get_accounts ();
while (accounts) {
account = accounts->data;
if (!strcasecmp (account->id->address, from))
iter = e_list_get_iterator ((EList *) accounts);
while (e_iterator_is_valid (iter)) {
account = (EAccount *) e_iterator_get (iter);
if (!strcasecmp (account->id->address, from)) {
found = TRUE;
break;
accounts = accounts->next;
}
e_iterator_next (iter);
}
if (!accounts)
g_object_unref (iter);
if (!found)
account = mail_config_get_default_account ();
}
tov = corba_recipientlist_to_destv (to);
ccv = corba_recipientlist_to_destv (cc);
bccv = corba_recipientlist_to_destv (bcc);
e_msg_composer_set_headers (composer->composer, account->name,
tov, ccv, bccv, subject);
e_destination_freev (tov);
e_destination_freev (ccv);
e_destination_freev (bccv);
@ -300,12 +310,12 @@ evolution_composer_class_init (EvolutionComposerClass *klass)
static void
evolution_composer_init (EvolutionComposer *composer)
{
const MailConfigAccount *account;
BonoboObject *item_handler;
account = mail_config_get_default_account ();
EAccount *account;
account = mail_config_get_default_account ();
composer->composer = e_msg_composer_new ();
g_signal_connect (composer->composer, "send",
G_CALLBACK (send_cb), NULL);
g_signal_connect (composer->composer, "save-draft",