aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/contact-editor
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2010-01-21 08:14:46 +0800
committerMatthew Barnes <mbarnes@redhat.com>2010-02-03 07:29:47 +0800
commit6db981fa566574d16f4664687d26147acde7ad80 (patch)
tree3b233b5a2876db9983153b8cc3c02a49270600a3 /addressbook/gui/contact-editor
parent0727097ac13ad746184ba0580247bff70cefbb68 (diff)
downloadgsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar.gz
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar.bz2
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar.lz
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar.xz
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.tar.zst
gsoc2013-evolution-6db981fa566574d16f4664687d26147acde7ad80.zip
Bug 607520 - 'Add to Address Book' fails when address has space
Diffstat (limited to 'addressbook/gui/contact-editor')
-rw-r--r--addressbook/gui/contact-editor/e-contact-quick-add.c25
-rw-r--r--addressbook/gui/contact-editor/e-contact-quick-add.h2
2 files changed, 27 insertions, 0 deletions
diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.c b/addressbook/gui/contact-editor/e-contact-quick-add.c
index 6525738fed..36bd4ed948 100644
--- a/addressbook/gui/contact-editor/e-contact-quick-add.c
+++ b/addressbook/gui/contact-editor/e-contact-quick-add.c
@@ -589,6 +589,31 @@ e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, g
}
void
+e_contact_quick_add_email (const gchar *email, EContactQuickAddCallback cb, gpointer closure)
+{
+ gchar *name = NULL;
+ gchar *addr = NULL;
+ gchar *lt, *gt;
+
+ /* Handle something of the form "Foo <foo@bar.com>". This is more
+ * more forgiving than the free-form parser, allowing for unquoted
+ * whitespace since we know the whole string is an email address. */
+
+ lt = (email != NULL) ? strchr (email, '<') : NULL;
+ gt = (lt != NULL) ? strchr (email, '>') : NULL;
+
+ if (lt != NULL && gt != NULL && (gt - lt) > 0) {
+ name = g_strndup (email, lt - email);
+ addr = g_strndup (lt + 1, gt - lt - 1);
+ }
+
+ e_contact_quick_add (name, addr, cb, closure);
+
+ g_free (name);
+ g_free (addr);
+}
+
+void
e_contact_quick_add_vcard (const gchar *vcard, EContactQuickAddCallback cb, gpointer closure)
{
QuickAdd *qa;
diff --git a/addressbook/gui/contact-editor/e-contact-quick-add.h b/addressbook/gui/contact-editor/e-contact-quick-add.h
index e58722b4a2..a4d06ef12a 100644
--- a/addressbook/gui/contact-editor/e-contact-quick-add.h
+++ b/addressbook/gui/contact-editor/e-contact-quick-add.h
@@ -32,6 +32,8 @@ void e_contact_quick_add (const gchar *name, const gchar *email,
void e_contact_quick_add_free_form (const gchar *text, EContactQuickAddCallback cb, gpointer closure);
+void e_contact_quick_add_email (const gchar *email, EContactQuickAddCallback cb, gpointer closure);
+
void e_contact_quick_add_vcard (const gchar *vcard, EContactQuickAddCallback cb, gpointer closure);
#endif /* __E_CONTACT_QUICK_ADD_H__ */