aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend
diff options
context:
space:
mode:
authorJon Trowbridge <trow@ximian.com>2001-08-30 12:57:18 +0800
committerJon Trowbridge <trow@src.gnome.org>2001-08-30 12:57:18 +0800
commit19ec5dbb3b419740b0a9e84ba4c6667cb48c5631 (patch)
tree67407ecf7fe44221aa6199ce962520db47821fdd /addressbook/backend
parent206e67a5a62ea3f142c6fb60998dbd3b435ddee4 (diff)
downloadgsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar.gz
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar.bz2
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar.lz
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar.xz
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.tar.zst
gsoc2013-evolution-19ec5dbb3b419740b0a9e84ba4c6667cb48c5631.zip
Use e_select_names_model_merge to combine the selected names with any
2001-08-29 Jon Trowbridge <trow@ximian.com> * gui/component/select-names/e-select-names-manager.c (e_select_names_clicked): Use e_select_names_model_merge to combine the selected names with any existing ones. This causes you to not lose addresses typed directly into the entry while the SelectNames dialog is up. (Bug #8058) * gui/component/select-names/e-select-names-model.c (e_select_names_model_merge): Merge the contents of one ESelectNamesModel into another, avoiding duplicates. * backend/ebook/e-destination.c (e_destination_equal): Added. Determines if two destinations appear to refer to the same recipient. * backend/ebook/e-card.c (e_card_list_send): Added cast to g_free args to silence compiler warnings. svn path=/trunk/; revision=12526
Diffstat (limited to 'addressbook/backend')
-rw-r--r--addressbook/backend/ebook/e-card.c4
-rw-r--r--addressbook/backend/ebook/e-destination.c38
-rw-r--r--addressbook/backend/ebook/e-destination.h1
3 files changed, 41 insertions, 2 deletions
diff --git a/addressbook/backend/ebook/e-card.c b/addressbook/backend/ebook/e-card.c
index 725fedaa11..57619b0080 100644
--- a/addressbook/backend/ebook/e-card.c
+++ b/addressbook/backend/ebook/e-card.c
@@ -4055,8 +4055,8 @@ e_card_list_send (GList *cards, ECardDisposition disposition)
recipient->address = CORBA_string_dup (addr ? addr : "");
if (free_name_addr) {
- g_free (name);
- g_free (addr);
+ g_free ((gchar *) name);
+ g_free ((gchar *) addr);
}
/* If this isn't a list, we quit after the first (i.e. the default) address. */
diff --git a/addressbook/backend/ebook/e-destination.c b/addressbook/backend/ebook/e-destination.c
index 5776f2c253..9e0e4b6067 100644
--- a/addressbook/backend/ebook/e-destination.c
+++ b/addressbook/backend/ebook/e-destination.c
@@ -303,6 +303,44 @@ e_destination_is_empty (const EDestination *dest)
|| (p->list_dests != NULL));
}
+gboolean
+e_destination_equal (const EDestination *a, const EDestination *b)
+{
+ const struct _EDestinationPrivate *pa, *pb;
+ const gchar *na, *nb;
+
+ g_return_val_if_fail (E_IS_DESTINATION (a), FALSE);
+ g_return_val_if_fail (E_IS_DESTINATION (b), FALSE);
+
+ if (a == b)
+ return TRUE;
+
+ pa = a->priv;
+ pb = b->priv;
+
+ /* Check equality of cards. */
+ if (pa->card || pb->card) {
+ if (! (pa->card && pb->card))
+ return FALSE;
+
+ if (pa->card == pb->card || !strcmp (e_card_get_id (pa->card), e_card_get_id (pb->card)))
+ return TRUE;
+
+ return FALSE;
+ }
+
+ /* Just in case name returns NULL */
+ na = e_destination_get_name (a);
+ nb = e_destination_get_name (b);
+ if ((na || nb) && !(na && nb && !strcmp (na, nb)))
+ return FALSE;
+
+ if (!strcmp (e_destination_get_email (a), e_destination_get_email (b)))
+ return TRUE;
+
+ return FALSE;
+}
+
void
e_destination_set_card (EDestination *dest, ECard *card, gint email_num)
{
diff --git a/addressbook/backend/ebook/e-destination.h b/addressbook/backend/ebook/e-destination.h
index c0ab60d33f..b9b06c47ff 100644
--- a/addressbook/backend/ebook/e-destination.h
+++ b/addressbook/backend/ebook/e-destination.h
@@ -68,6 +68,7 @@ EDestination *e_destination_copy (const EDestination *);
void e_destination_clear (EDestination *);
gboolean e_destination_is_empty (const EDestination *);
+gboolean e_destination_equal (const EDestination *a, const EDestination *b);
void e_destination_set_card (EDestination *, ECard *card, gint email_num);
void e_destination_set_book_uri (EDestination *, const gchar *uri);