/* We need this function to he defined all the time. */ static void action_address_book_map_cb (GtkAction *action, EBookShellView *book_shell_view) { #ifdef WITH_CONTACT_MAPS EContactMapWindow *map_window; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; EBookClient *book_client; GError *error = NULL; book_shell_sidebar = book_shell_view->priv->book_shell_sidebar; selector = e_book_shell_sidebar_get_selector (book_shell_sidebar); source = e_source_selector_get_primary_selection (selector); g_return_if_fail (source != NULL); book_client = e_book_client_new (source, &error); if (error != NULL) { g_warning ("Error loading addressbook: %s", error->message); g_error_free (error); return; } map_window = e_contact_map_window_new (); e_contact_map_window_load_addressbook (map_window, book_client); /* Free the map_window automatically when it is closed */ g_signal_connect_swapped (GTK_WIDGET (map_window), "hide", G_CALLBACK (gtk_widget_destroy), GTK_WIDGET (map_window)); g_signal_connect (map_window, "show-contact-editor", G_CALLBACK (map_window_show_contact_editor_cb), book_shell_view); gtk_widget_show_all (GTK_WIDGET (map_window)); g_object_unref (book_client); #endif }
/* We need this function to he defined all the time. */ static void action_address_book_map_cb (GtkAction *action, EBookShellView *book_shell_view) { #ifdef WITH_CONTACT_MAPS EShell *shell; EShellView *shell_view; EShellBackend *shell_backend; EContactMapWindow *map_window; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; EClient *client; EClientCache *client_cache; GError *error = NULL; book_shell_sidebar = book_shell_view->priv->book_shell_sidebar; selector = e_book_shell_sidebar_get_selector (book_shell_sidebar); source = e_source_selector_ref_primary_selection (selector); g_return_if_fail (source != NULL); shell_view = E_SHELL_VIEW (book_shell_view); shell_backend = e_shell_view_get_shell_backend (shell_view); shell = e_shell_backend_get_shell (shell_backend); client_cache = e_shell_get_client_cache (shell); /* FIXME This blocks. Needs to be asynchronous. */ client = e_client_cache_get_client_sync ( client_cache, source, E_SOURCE_EXTENSION_ADDRESS_BOOK, (guint32) -1, NULL, &error); g_object_unref (source); /* Sanity check. */ g_return_if_fail ( ((client != NULL) && (error == NULL)) || ((client == NULL) && (error != NULL))); if (error != NULL) { g_warning ("Error loading addressbook: %s", error->message); g_error_free (error); return; } map_window = e_contact_map_window_new (); e_contact_map_window_load_addressbook ( map_window, E_BOOK_CLIENT (client)); /* Free the map_window automatically when it is closed */ g_signal_connect_swapped ( map_window, "hide", G_CALLBACK (gtk_widget_destroy), GTK_WIDGET (map_window)); g_signal_connect ( map_window, "show-contact-editor", G_CALLBACK (map_window_show_contact_editor_cb), book_shell_view); gtk_widget_show_all (GTK_WIDGET (map_window)); g_object_unref (client); #endif }