g_message (__FUNCTION__);
return TRUE;
}
+
+gboolean
+modest_address_book_has_address (const gchar *address)
+{
+ g_message (__FUNCTION__);
+ return FALSE;
+}
return g_string_free (buffer, FALSE);
}
+
+gboolean
+modest_address_book_has_address (const gchar *address)
+{
+ EBookQuery *query;
+ GList *contacts = NULL;
+ GError *err = NULL;
+ gchar *email;
+ gboolean result;
+
+ g_return_val_if_fail (address, FALSE);
+
+ if (!book) {
+ if (!open_addressbook ()) {
+ g_return_val_if_reached (FALSE);
+ }
+ }
+
+ g_return_val_if_fail (book, FALSE);
+
+ email = modest_text_utils_get_email_address (address);
+
+ query = e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_IS, email);
+ if (!e_book_get_contacts (book, query, &contacts, &err)) {
+ g_printerr ("modest: failed to get contacts: %s",
+ err ? err->message : "<unknown>");
+ if (err)
+ g_error_free (err);
+ return FALSE;
+ }
+ e_book_query_unref (query);
+
+ result = (contacts != NULL);
+ if (contacts) {
+ g_list_foreach (contacts, (GFunc)unref_gobject, NULL);
+ g_list_free (contacts);
+ }
+
+ g_free (email);
+
+ return result;
+}
selector = hildon_touch_selector_new_text ();
for (node = recipients; node != NULL; node = g_slist_next (node)) {
- hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector), (const gchar *) node->data);
+ if (!modest_address_book_has_address ((const gchar *) node->data)) {
+ hildon_touch_selector_append_text (HILDON_TOUCH_SELECTOR (selector),
+ (const gchar *) node->data);
+ contacts_to_add = TRUE;
+ }
}
hildon_picker_dialog_set_selector (HILDON_PICKER_DIALOG (picker_dialog),
return g_string_free (buffer, FALSE);
}
+
+gboolean
+modest_address_book_has_address (const gchar *address)
+{
+ EBookQuery *query;
+ GList *contacts = NULL;
+ GError *err = NULL;
+ gchar *email;
+ gboolean result;
+
+ g_return_val_if_fail (address, FALSE);
+
+ if (!book) {
+ if (!open_addressbook ()) {
+ g_return_val_if_reached (FALSE);
+ }
+ }
+
+ g_return_val_if_fail (book, FALSE);
+
+ email = modest_text_utils_get_email_address (address);
+
+ query = e_book_query_field_test (E_CONTACT_EMAIL, E_BOOK_QUERY_IS, email);
+ if (!e_book_get_contacts (book, query, &contacts, &err)) {
+ g_printerr ("modest: failed to get contacts: %s",
+ err ? err->message : "<unknown>");
+ if (err)
+ g_error_free (err);
+ return FALSE;
+ }
+ e_book_query_unref (query);
+
+ result = (contacts != NULL);
+ if (contacts) {
+ g_list_foreach (contacts, (GFunc)unref_gobject, NULL);
+ g_list_free (contacts);
+ }
+
+ g_free (email);
+
+ return result;
+}
gboolean
modest_address_book_check_names (ModestRecptEditor *editor, gboolean update_addressbook);
+/**
+ * modest_address_book_has_address:
+ * @address: a string
+ *
+ * Checks if an address is already stored in addressbook.
+ *
+ * Returns: %TRUE is @address is in addressbook. %FALSE otherwise.
+ */
+gboolean
+modest_address_book_has_address (const gchar *address);
+
#endif /* __MODEST_ADDRESS_BOOK_H__ */