mirror of https://github.com/djcb/mu.git
* refactor getting to/cc, combine the logic, less code
This commit is contained in:
parent
39f1936b82
commit
79ecb1a0fd
|
@ -29,7 +29,7 @@
|
||||||
#include "mu-msg-gmime.h"
|
#include "mu-msg-gmime.h"
|
||||||
|
|
||||||
|
|
||||||
enum StringFields {
|
enum _StringFields {
|
||||||
HTML_FIELD = 0,
|
HTML_FIELD = 0,
|
||||||
TEXT_FIELD,
|
TEXT_FIELD,
|
||||||
TO_FIELD,
|
TO_FIELD,
|
||||||
|
@ -39,6 +39,7 @@ enum StringFields {
|
||||||
|
|
||||||
FIELD_NUM
|
FIELD_NUM
|
||||||
};
|
};
|
||||||
|
typedef enum _StringFields StringFields;
|
||||||
|
|
||||||
struct _MuMsgGMime {
|
struct _MuMsgGMime {
|
||||||
GMimeMessage *_mime_msg;
|
GMimeMessage *_mime_msg;
|
||||||
|
@ -204,46 +205,41 @@ mu_msg_gmime_get_from (MuMsgGMime *msg)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
static const char*
|
||||||
|
_get_recipient (MuMsgGMime *msg, GMimeRecipientType rtype, StringFields field)
|
||||||
|
{
|
||||||
|
/* can only be set once */
|
||||||
|
if (!msg->_fields[field]) {
|
||||||
|
|
||||||
|
char *recep;
|
||||||
|
InternetAddressList *receps;
|
||||||
|
receps = g_mime_message_get_recipients (msg->_mime_msg, rtype);
|
||||||
|
|
||||||
|
/* FIXME: is there an internal leak in
|
||||||
|
* internet_address_list_to_string? */
|
||||||
|
recep = (char*)internet_address_list_to_string (receps, TRUE);
|
||||||
|
if (recep && recep[0]=='\0')
|
||||||
|
g_free (recep);
|
||||||
|
else
|
||||||
|
msg->_fields[field] = recep;
|
||||||
|
}
|
||||||
|
|
||||||
|
return msg->_fields[field];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
mu_msg_gmime_get_to (MuMsgGMime *msg)
|
mu_msg_gmime_get_to (MuMsgGMime *msg)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (msg, NULL);
|
g_return_val_if_fail (msg, NULL);
|
||||||
|
return _get_recipient (msg, GMIME_RECIPIENT_TYPE_TO, TO_FIELD);
|
||||||
if (!msg->_fields[TO_FIELD]) {
|
|
||||||
char *to;
|
|
||||||
InternetAddressList *recps;
|
|
||||||
recps = g_mime_message_get_recipients (msg->_mime_msg,
|
|
||||||
GMIME_RECIPIENT_TYPE_TO);
|
|
||||||
/* FIXME */
|
|
||||||
to = (char*)internet_address_list_to_string (recps, TRUE);
|
|
||||||
if (to && strlen(to) == 0)
|
|
||||||
g_free (to);
|
|
||||||
else
|
|
||||||
msg->_fields[TO_FIELD] = to;
|
|
||||||
}
|
|
||||||
|
|
||||||
return msg->_fields[TO_FIELD];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const char*
|
const char*
|
||||||
mu_msg_gmime_get_cc (MuMsgGMime *msg)
|
mu_msg_gmime_get_cc (MuMsgGMime *msg)
|
||||||
{
|
{
|
||||||
g_return_val_if_fail (msg, NULL);
|
g_return_val_if_fail (msg, NULL);
|
||||||
|
return _get_recipient (msg, GMIME_RECIPIENT_TYPE_CC, CC_FIELD);
|
||||||
if (!msg->_fields[CC_FIELD]) {
|
|
||||||
char *cc;
|
|
||||||
InternetAddressList *recps;
|
|
||||||
recps = g_mime_message_get_recipients (msg->_mime_msg,
|
|
||||||
GMIME_RECIPIENT_TYPE_CC);
|
|
||||||
|
|
||||||
cc = internet_address_list_to_string (recps, TRUE);
|
|
||||||
if (cc && strlen(cc) == 0)
|
|
||||||
g_free (cc);
|
|
||||||
else
|
|
||||||
msg->_fields[CC_FIELD] = cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
return msg->_fields[CC_FIELD];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue