aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/backend')
-rw-r--r--addressbook/backend/ebook/e-destination.c33
-rw-r--r--addressbook/backend/ebook/e-destination.h2
2 files changed, 31 insertions, 4 deletions
diff --git a/addressbook/backend/ebook/e-destination.c b/addressbook/backend/ebook/e-destination.c
index a44ce3ddc8..e6fdb3ee43 100644
--- a/addressbook/backend/ebook/e-destination.c
+++ b/addressbook/backend/ebook/e-destination.c
@@ -36,6 +36,7 @@ struct _EDestinationPrivate {
ECard *card;
gint card_email_num;
+ gchar *name;
gchar *string;
gchar *string_email;
gchar *string_email_verbose;
@@ -147,10 +148,12 @@ e_destination_clear_card (EDestination *dest)
static void
e_destination_clear_strings (EDestination *dest)
{
+ g_free (dest->priv->name);
g_free (dest->priv->string);
g_free (dest->priv->string_email);
g_free (dest->priv->string_email_verbose);
+ dest->priv->name = NULL;
dest->priv->string = NULL;
dest->priv->string_email = NULL;
dest->priv->string_email_verbose = NULL;
@@ -245,6 +248,28 @@ e_destination_get_strlen (const EDestination *dest)
}
const gchar *
+e_destination_get_name (const EDestination *dest)
+{
+ struct _EDestinationPrivate *priv;
+ g_return_val_if_fail (dest && E_IS_DESTINATION (dest), NULL);
+
+ priv = (struct _EDestinationPrivate *)dest->priv; /* cast out const */
+
+ if (priv->name == NULL) {
+
+ if (priv->card) {
+
+ priv->name = e_card_name_to_string (priv->card->name);
+
+ }
+
+ }
+
+ return priv->name;
+
+}
+
+const gchar *
e_destination_get_email (const EDestination *dest)
{
struct _EDestinationPrivate *priv;
@@ -296,10 +321,10 @@ e_destination_get_email_verbose (const EDestination *dest)
const gchar *email = e_destination_get_email (dest);
if (priv->card) {
-
- priv->string_email_verbose = g_strdup_printf ("%s <%s>",
- e_card_name_to_string (priv->card->name),
- email);
+ gchar *n = e_card_name_to_string (priv->card->name);
+ priv->string_email_verbose = g_strdup_printf ("%s <%s>", n, email);
+ g_free (n);
+
} else {
return email;
diff --git a/addressbook/backend/ebook/e-destination.h b/addressbook/backend/ebook/e-destination.h
index d0af6b0d23..3c6de6e316 100644
--- a/addressbook/backend/ebook/e-destination.h
+++ b/addressbook/backend/ebook/e-destination.h
@@ -67,6 +67,8 @@ gint e_destination_get_email_num (const EDestination *);
const gchar *e_destination_get_string (const EDestination *);
gint e_destination_get_strlen (const EDestination *); /* a convenience function... */
+const gchar *e_destination_get_name (const EDestination *);
+
const gchar *e_destination_get_email (const EDestination *);
const gchar *e_destination_get_email_verbose (const EDestination *);