diff -up gnome-phone-manager-0.68/configure.eds gnome-phone-manager-0.68/configure --- gnome-phone-manager-0.68/configure.eds 2012-10-30 15:03:19.515929969 -0400 +++ gnome-phone-manager-0.68/configure 2012-10-30 15:03:54.979862209 -0400 @@ -13939,12 +13939,12 @@ if test -n "$PHONEMGR_CFLAGS"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - \$GNOME_BLUETOOTH_REQS \$evo_pc_file libedataserverui-3.0 + \$GNOME_BLUETOOTH_REQS \$evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 \""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 ") 2>&5 ac_status=$? @@ -13952,7 +13952,7 @@ if test -n "$PHONEMGR_CFLAGS"; then test $ac_status = 0; }; then pkg_cv_PHONEMGR_CFLAGS=`$PKG_CONFIG --cflags "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 " 2>/dev/null` else @@ -13967,12 +13967,12 @@ if test -n "$PHONEMGR_LIBS"; then if test -n "$PKG_CONFIG" && \ { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - \$GNOME_BLUETOOTH_REQS \$evo_pc_file libedataserverui-3.0 + \$GNOME_BLUETOOTH_REQS \$evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 \""; } >&5 ($PKG_CONFIG --exists --print-errors "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 ") 2>&5 ac_status=$? @@ -13980,7 +13980,7 @@ if test -n "$PHONEMGR_LIBS"; then test $ac_status = 0; }; then pkg_cv_PHONEMGR_LIBS=`$PKG_CONFIG --libs "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 " 2>/dev/null` else @@ -14004,13 +14004,13 @@ fi if test $_pkg_short_errors_supported = yes; then PHONEMGR_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 " 2>&1` else PHONEMGR_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 " 2>&1` fi @@ -14019,7 +14019,7 @@ fi as_fn_error $? "Package requirements (gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 ) were not met: diff -up gnome-phone-manager-0.68/configure.in.eds gnome-phone-manager-0.68/configure.in --- gnome-phone-manager-0.68/configure.in.eds 2012-10-30 15:03:24.151921087 -0400 +++ gnome-phone-manager-0.68/configure.in 2012-10-30 15:03:33.865897797 -0400 @@ -47,7 +47,7 @@ PKG_CHECK_MODULES(LIBGSM, glib-2.0 gobje PKG_CHECK_MODULES(PHONEMGR, gtk+-3.0 >= 3.0 glib-2.0 >= 2.31.0 libcanberra-gtk3 gconf-2.0 - $GNOME_BLUETOOTH_REQS $evo_pc_file libedataserverui-3.0 + $GNOME_BLUETOOTH_REQS $evo_pc_file gmodule-2.0 dbus-glib-1 gnome-icon-theme >= 2.19.1 ) diff -up gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.c.eds gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.c --- gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.c.eds 2012-07-29 22:06:12.000000000 -0400 +++ gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.c 2012-10-30 15:02:47.177996584 -0400 @@ -38,11 +38,6 @@ #include #include -#include -#include -#include -#include - #include "e-contact-entry.h" #include "econtactentry-marshal.h" @@ -59,7 +54,7 @@ static int signals[LAST_SIGNAL] = { 0 }; /* Properties */ enum { PROP_0, /* TODO: why? */ - PROP_SOURCE_LIST, + PROP_REGISTRY, PROP_COMPLETE_LENGTH, }; @@ -70,7 +65,7 @@ enum { struct EContactEntryPriv { GtkEntryCompletion *completion; GtkListStore *store; - ESourceList *source_list; + ESourceRegistry *registry; /* A list of EntryLookup structs we are searching */ GList *lookup_entries; /* Number of characters to start searching at */ @@ -227,7 +222,7 @@ e_contact_entry_display_func (EContact * emails = e_contact_get (contact, E_CONTACT_EMAIL); for (l = emails; l != NULL; l = l->next) { item = g_new0 (EContactEntyItem, 1); - item->identifier = item->identifier = g_strdup (l->data); + item->identifier = g_strdup (l->data); item->display_string = g_strdup_printf ("%s <%s>", (char*)e_contact_get_const (contact, E_CONTACT_NAME_OR_ORG), item->identifier); items = g_list_prepend (items, item); @@ -276,22 +271,13 @@ view_contacts_added_cb (EBook *book, GLi return; photo = e_contact_get (contact, E_CONTACT_PHOTO); -#ifndef HAVE_ECONTACTPHOTOTYPE - if (photo) { -#else if (photo && photo->type == E_CONTACT_PHOTO_TYPE_INLINED) { -#endif GdkPixbufLoader *loader; loader = gdk_pixbuf_loader_new (); -#ifndef HAVE_ECONTACTPHOTOTYPE - if (gdk_pixbuf_loader_write (loader, (guchar *)photo->data, - photo->length, NULL)) -#else if (gdk_pixbuf_loader_write (loader, (guchar *)photo->data.inlined.data, photo->data.inlined.length, NULL)) -#endif pixbuf = gdk_pixbuf_loader_get_pixbuf (loader); if (pixbuf) { @@ -339,16 +325,15 @@ view_contacts_added_cb (EBook *book, GLi * The query on the EBookView has completed. */ static void -view_completed_cb (EBookView *book_view, EBookViewStatus status, gpointer user_data) +view_completed_cb (EBookView *book_view, EBookViewStatus status, const gchar *message, gpointer user_data) { EntryLookup *lookup; g_return_if_fail (user_data != NULL); - /* TODO: handle status != OK */ - g_return_if_fail (status == E_BOOK_ERROR_OK); g_return_if_fail (book_view != NULL); lookup = (EntryLookup*)user_data; g_object_unref (lookup->bookview); + lookup->bookview = NULL; } /** @@ -373,8 +358,8 @@ bookview_cb (EBook *book, EBookStatus st lookup->bookview = book_view; g_object_add_weak_pointer ((GObject*)book_view, (gpointer*)&lookup->bookview); - g_signal_connect (book_view, "contacts_added", (GCallback)view_contacts_added_cb, lookup); - g_signal_connect (book_view, "sequence_complete", (GCallback)view_completed_cb, lookup); + g_signal_connect (book_view, "contacts-added", (GCallback)view_contacts_added_cb, lookup); + g_signal_connect (book_view, "view_complete", (GCallback)view_completed_cb, lookup); e_book_view_start (book_view); } @@ -396,6 +381,7 @@ entry_changed_cb (GtkEditable *editable, if (lookup->bookview) { e_book_view_stop (lookup->bookview); g_object_unref (lookup->bookview); + lookup->bookview = NULL; } } @@ -410,7 +396,7 @@ entry_changed_cb (GtkEditable *editable, if (!lookup->open) continue; - if (e_book_async_get_book_view (lookup->book, query, NULL, 11, (EBookBookViewCallback)bookview_cb, lookup) != 0) { + if (e_book_async_get_book_view (lookup->book, query, NULL, MAX_ENTRIES, (EBookBookViewCallback)bookview_cb, lookup) == FALSE) { g_signal_emit (entry, signals[ERROR], 0, _("Cannot create searchable view.")); } } @@ -458,11 +444,12 @@ book_opened_cb (EBook *book, EBookStatus */ void -e_contact_entry_set_source_list (EContactEntry *entry, - ESourceList *source_list) +e_contact_entry_set_registry (EContactEntry *entry, + ESourceRegistry *registry) { + GList *list, *link; + const gchar *extension_name; GError *error = NULL; - GSList *list, *l; g_return_if_fail (E_IS_CONTACT_ENTRY (entry)); @@ -471,58 +458,48 @@ e_contact_entry_set_source_list (EContac g_list_foreach (entry->priv->lookup_entries, (GFunc)lookup_entry_free, NULL); g_list_free (entry->priv->lookup_entries); } - if (entry->priv->source_list) { - g_object_unref (entry->priv->source_list); + if (entry->priv->registry) { + g_object_unref (entry->priv->registry); } /* If we have no new sources, disable and return here */ - if (source_list == NULL) { + if (registry == NULL) { g_signal_emit (entry, signals[STATE_CHANGE], 0, FALSE); - entry->priv->source_list = NULL; + entry->priv->registry = NULL; entry->priv->lookup_entries = NULL; return; } - entry->priv->source_list = source_list; - /* So that the list isn't going away underneath us */ - g_object_ref (entry->priv->source_list); + entry->priv->registry = registry; + /* So that the registry isn't going away underneath us */ + g_object_ref (entry->priv->registry); - /* That gets us a list of ESourceGroup */ - list = e_source_list_peek_groups (source_list); entry->priv->lookup_entries = NULL; - for (l = list; l != NULL; l = l->next) { - ESourceGroup *group = l->data; - GSList *sources = NULL, *m; - /* That should give us a list of ESource */ - sources = e_source_group_peek_sources (group); - for (m = sources; m != NULL; m = m->next) { - ESource *source = m->data; - ESource *s = e_source_copy (source); - EntryLookup *lookup; - char *uri; + extension_name = E_SOURCE_EXTENSION_ADDRESS_BOOK; + list = e_source_registry_list_sources (registry, extension_name); - uri = g_strdup_printf("%s/%s", e_source_group_peek_base_uri (group), e_source_peek_relative_uri (source)); - e_source_set_absolute_uri (s, uri); - g_free (uri); - - /* Now add those to the lookup entries list */ - lookup = g_new0 (EntryLookup, 1); - lookup->entry = entry; - lookup->status = E_BOOK_ERROR_OK; - lookup->open = FALSE; + for (link = list; link != NULL; link = g_list_next (link)) { + ESource *source = E_SOURCE (link->data); + EntryLookup *lookup; - if ((lookup->book = e_book_new (s, &error)) == NULL) { - /* TODO handle this better, fire the error signal I guess */ + /* Now add those to the lookup entries list */ + lookup = g_new0 (EntryLookup, 1); + lookup->entry = entry; + lookup->status = E_BOOK_ERROR_OK; + lookup->open = FALSE; + + if ((lookup->book = e_book_new (source, &error)) == NULL) { + /* TODO handle this better, fire the error signal I guess */ + if (error) { g_warning ("%s", error->message); - g_error_free (error); - g_free (lookup); - } else { - entry->priv->lookup_entries = g_list_append (entry->priv->lookup_entries, lookup); - e_book_async_open(lookup->book, TRUE, (EBookCallback)book_opened_cb, lookup); + g_error_free (error); + error = NULL; } - - g_object_unref (s); + g_free (lookup); + } else { + entry->priv->lookup_entries = g_list_append (entry->priv->lookup_entries, lookup); + e_book_async_open(lookup->book, TRUE, (EBookCallback)book_opened_cb, lookup); } } @@ -530,12 +507,12 @@ e_contact_entry_set_source_list (EContac g_signal_emit (entry, signals[STATE_CHANGE], 0, FALSE); } -ESourceList * -e_contact_entry_get_source_list (EContactEntry *entry) +ESourceRegistry * +e_contact_entry_get_registry (EContactEntry *entry) { g_return_val_if_fail (E_IS_CONTACT_ENTRY (entry), NULL); - return entry->priv->source_list; + return entry->priv->registry; } void @@ -601,8 +578,8 @@ e_contact_entry_set_property (GObject *o entry = E_CONTACT_ENTRY (object); switch (property_id) { - case PROP_SOURCE_LIST: - e_contact_entry_set_source_list (entry, g_value_get_object (value)); + case PROP_REGISTRY: + e_contact_entry_set_registry (entry, g_value_get_object (value)); break; case PROP_COMPLETE_LENGTH: e_contact_entry_set_complete_length (entry, g_value_get_int (value)); @@ -620,8 +597,8 @@ e_contact_entry_get_property (GObject *o entry = E_CONTACT_ENTRY (object); switch (property_id) { - case PROP_SOURCE_LIST: - g_value_set_object (value, e_contact_entry_get_source_list (entry)); + case PROP_REGISTRY: + g_value_set_object (value, e_contact_entry_get_registry (entry)); break; case PROP_COMPLETE_LENGTH: g_value_set_int (value, e_contact_entry_get_complete_length (entry)); @@ -644,7 +621,7 @@ e_contact_entry_finalize (GObject *objec g_list_free (entry->priv->lookup_entries); g_object_unref (entry->priv->completion); g_object_unref (entry->priv->store); - g_object_unref (entry->priv->source_list); + g_object_unref (entry->priv->registry); if (entry->priv->display_destroy) { entry->priv->display_destroy (entry->priv->display_func); @@ -657,7 +634,7 @@ e_contact_entry_finalize (GObject *objec static void reset_search_fields (EContactEntry *entry) { - EContactField fields[] = { E_CONTACT_FULL_NAME, E_CONTACT_EMAIL, E_CONTACT_NICKNAME, E_CONTACT_ORG, 0 }; + EContactField fields[] = { E_CONTACT_FULL_NAME, E_CONTACT_EMAIL, E_CONTACT_NICKNAME, 0 }; g_free (entry->priv->search_fields); entry->priv->search_fields = g_new0 (EContactField, G_N_ELEMENTS (fields)); @@ -716,9 +693,9 @@ e_contact_entry_class_init (EContactEntr object_class->finalize = e_contact_entry_finalize; /* Properties */ - g_object_class_install_property (object_class, PROP_SOURCE_LIST, - g_param_spec_object ("source-list", "Source List", "The source list to search for contacts.", - E_TYPE_SOURCE_LIST, G_PARAM_READWRITE)); + g_object_class_install_property (object_class, PROP_REGISTRY, + g_param_spec_object ("registry", "Registry", "Data source registry.", + E_TYPE_SOURCE_REGISTRY, G_PARAM_READWRITE)); g_object_class_install_property (object_class, PROP_COMPLETE_LENGTH, g_param_spec_int ("complete-length", "Complete length", "Number of characters to start a search on.", @@ -771,6 +748,7 @@ lookup_entry_free (EntryLookup *lookup) if (lookup->bookview) { g_warning("EBookView still around"); g_object_unref (lookup->bookview); + lookup->bookview = NULL; } if (lookup->book) { g_object_unref (lookup->book); diff -up gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.h.eds gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.h --- gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.h.eds 2012-07-29 22:06:12.000000000 -0400 +++ gnome-phone-manager-0.68/cut-n-paste/e-contact-entry/e-contact-entry.h 2012-10-30 15:02:47.177996584 -0400 @@ -23,10 +23,8 @@ #ifndef CONTACT_ENTRY_H #define CONTACT_ENTRY_H -#include -#include -#include #include +#include G_BEGIN_DECLS @@ -71,8 +69,8 @@ GType e_contact_entry_get_type (void); GtkWidget *e_contact_entry_new (void); -void e_contact_entry_set_source_list (EContactEntry *entry, ESourceList *list); -ESourceList *e_contact_entry_get_source_list (EContactEntry *entry); +void e_contact_entry_set_registry (EContactEntry *entry, ESourceRegistry *registry); +ESourceRegistry *e_contact_entry_get_registry (EContactEntry *entry); void e_contact_entry_set_complete_length(EContactEntry *entry, int length); int e_contact_entry_get_complete_length(EContactEntry *entry); diff -up gnome-phone-manager-0.68/libgsm/phonemgr-utils.c.eds gnome-phone-manager-0.68/libgsm/phonemgr-utils.c --- gnome-phone-manager-0.68/libgsm/phonemgr-utils.c.eds 2012-07-29 22:06:12.000000000 -0400 +++ gnome-phone-manager-0.68/libgsm/phonemgr-utils.c 2012-10-30 15:02:47.177996584 -0400 @@ -27,7 +27,7 @@ #include #include #include -#include +#include #include #include diff -up gnome-phone-manager-0.68/src/e-phone-entry.c.eds gnome-phone-manager-0.68/src/e-phone-entry.c --- gnome-phone-manager-0.68/src/e-phone-entry.c.eds 2012-07-29 22:06:12.000000000 -0400 +++ gnome-phone-manager-0.68/src/e-phone-entry.c 2012-10-30 15:04:13.471829767 -0400 @@ -31,8 +31,6 @@ #include #include -#include -#include #include "e-phone-entry.h" #define CONTACT_FORMAT "%s (%s)" @@ -181,25 +179,25 @@ e_phone_entry_finalize (GObject *object) } static void -add_sources (EContactEntry *entry) -{ - ESourceList *source_list; - - if (e_client_utils_get_sources (&source_list, - E_CLIENT_SOURCE_TYPE_CONTACTS, - NULL)) { - e_contact_entry_set_source_list (E_CONTACT_ENTRY (entry), - source_list); - g_object_unref (source_list); - } -} - -static void e_phone_entry_init (EPhoneEntry *entry) { EContactField fields[] = { E_CONTACT_FULL_NAME, E_CONTACT_NICKNAME, E_CONTACT_ORG, E_CONTACT_PHONE_MOBILE, 0 }; + ESourceRegistry *registry; + GError *error = NULL; + + /* XXX This call blocks while a D-Bus connection is made, possibly + * requiring activation. Might be better to create the registry + * in main(), pass it to ui_init(), and have e_phone_entry_new() + * take it as an argument. Calling this from main() means if it + * fails you can abort cleanly with a console error message. */ + registry = e_source_registry_new_sync (NULL, &error); + if (registry == NULL) { + g_error ("%s: %s", G_STRFUNC, error->message); + g_assert_not_reached (); + } + e_contact_entry_set_registry (E_CONTACT_ENTRY (entry), registry); + g_object_unref (registry); - add_sources (E_CONTACT_ENTRY (entry)); e_contact_entry_set_search_fields (E_CONTACT_ENTRY (entry), (const EContactField *)fields); e_contact_entry_set_display_func (E_CONTACT_ENTRY (entry), test_display_func, NULL, NULL); g_signal_connect (G_OBJECT (entry), "contact_selected",