static void action_address_book_delete_cb (GtkAction *action, EBookShellView *book_shell_view) { EShellView *shell_view; EShellWindow *shell_window; EBookShellBackend *book_shell_backend; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; ESourceGroup *source_group; ESourceList *source_list; EBookClient *book; gint response; GError *error = NULL; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); book_shell_backend = book_shell_view->priv->book_shell_backend; source_list = e_book_shell_backend_get_source_list (book_shell_backend); 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); response = e_alert_run_dialog_for_args ( GTK_WINDOW (shell_window), "addressbook:ask-delete-addressbook", e_source_peek_name (source), NULL); if (response != GTK_RESPONSE_YES) return; book = e_book_client_new (source, &error); if (error != NULL) { g_warning ("Error removing addressbook: %s", error->message); g_error_free (error); return; } if (!e_client_remove_sync (E_CLIENT (book), NULL, NULL)) { e_alert_run_dialog_for_args ( GTK_WINDOW (shell_window), "addressbook:remove-addressbook", NULL); g_object_unref (book); return; } if (e_source_selector_source_is_selected (selector, source)) e_source_selector_unselect_source (selector, source); source_group = e_source_peek_group (source); e_source_group_remove_source (source_group, source); e_source_list_sync (source_list, NULL); g_object_unref (book); }
static void action_address_book_rename_cb (GtkAction *action, EBookShellView *book_shell_view) { EBookShellSidebar *book_shell_sidebar; ESourceSelector *selector; book_shell_sidebar = book_shell_view->priv->book_shell_sidebar; selector = e_book_shell_sidebar_get_selector (book_shell_sidebar); e_source_selector_edit_primary_selection (selector); }
static void action_address_book_manage_groups_cb (GtkAction *action, EBookShellView *book_shell_view) { EShellView *shell_view; ESourceSelector *selector; shell_view = E_SHELL_VIEW (book_shell_view); selector = e_book_shell_sidebar_get_selector (book_shell_view->priv->book_shell_sidebar); if (e_source_selector_manage_groups (selector) && e_source_selector_save_groups_setup (selector, e_shell_view_get_state_key_file (shell_view))) e_shell_view_set_state_dirty (shell_view); }
static void map_window_show_contact_editor_cb (EContactMapWindow *window, const gchar *contact_uid, gpointer user_data) { EShell *shell = e_shell_get_default (); EBookShellView *book_shell_view = user_data; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; EBookClient *book_client; EContact *contact; EABEditor *editor; 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) { g_warning ("Error loading addressbook: %s", error->message); g_error_free (error); if (book_client) g_object_unref (book_client); return; } e_book_client_get_contact_sync (book_client, contact_uid, &contact, NULL, &error); if (error) { g_warning ("Error getting contact from addressbook: %s", error->message); g_error_free (error); g_object_unref (book_client); return; } editor = e_contact_editor_new (shell, book_client, contact, FALSE, TRUE); g_signal_connect (editor, "contact-modified", G_CALLBACK (contact_editor_contact_modified_cb), window); g_signal_connect_swapped (editor, "editor-closed", G_CALLBACK (g_object_unref), editor); eab_editor_show (editor); g_object_unref (book_client); }
static void action_address_book_properties_cb (GtkAction *action, EBookShellView *book_shell_view) { EShellView *shell_view; EShellWindow *shell_window; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; EditorUidClosure *closure; GHashTable *uid_to_editor; const gchar *uid; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); 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); uid = e_source_peek_uid (source); uid_to_editor = book_shell_view->priv->uid_to_editor; closure = g_hash_table_lookup (uid_to_editor, uid); if (closure == NULL) { GtkWidget *editor; editor = addressbook_config_edit_source ( GTK_WIDGET (shell_window), source); closure = g_new (EditorUidClosure, 1); closure->editor = editor; closure->uid = g_strdup (uid); closure->view = book_shell_view; g_hash_table_insert (uid_to_editor, closure->uid, closure); g_object_weak_ref ( G_OBJECT (closure->editor), (GWeakNotify) e_book_shell_view_editor_weak_notify, closure); } gtk_window_present (GTK_WINDOW (closure->editor)); }
static void action_address_book_delete_cb (GtkAction *action, EBookShellView *book_shell_view) { EShellView *shell_view; EShellWindow *shell_window; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; gint response; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); 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); if (e_source_get_remote_deletable (source)) { response = e_alert_run_dialog_for_args ( GTK_WINDOW (shell_window), "addressbook:ask-delete-remote-addressbook", e_source_get_display_name (source), NULL); if (response == GTK_RESPONSE_YES) e_shell_view_remote_delete_source (shell_view, source); } else { response = e_alert_run_dialog_for_args ( GTK_WINDOW (shell_window), "addressbook:ask-delete-addressbook", e_source_get_display_name (source), NULL); if (response == GTK_RESPONSE_YES) e_shell_view_remove_source (shell_view, source); } g_object_unref (source); }
static void action_address_book_properties_cb (GtkAction *action, EBookShellView *book_shell_view) { EShellView *shell_view; EShellWindow *shell_window; EBookShellSidebar *book_shell_sidebar; ESource *source; ESourceSelector *selector; ESourceRegistry *registry; GtkWidget *config; GtkWidget *dialog; const gchar *icon_name; shell_view = E_SHELL_VIEW (book_shell_view); shell_window = e_shell_view_get_shell_window (shell_view); 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); registry = e_source_selector_get_registry (selector); config = e_book_source_config_new (registry, source); g_object_unref (source); dialog = e_source_config_dialog_new (E_SOURCE_CONFIG (config)); gtk_window_set_transient_for ( GTK_WINDOW (dialog), GTK_WINDOW (shell_window)); icon_name = gtk_action_get_icon_name (action); gtk_window_set_icon_name (GTK_WINDOW (dialog), icon_name); gtk_window_set_title ( GTK_WINDOW (dialog), _("Address Book Properties")); gtk_widget_show (dialog); }
/* 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 }
static void map_window_show_contact_editor_cb (EContactMapWindow *window, const gchar *contact_uid, gpointer user_data) { EBookShellView *book_shell_view = user_data; EBookShellSidebar *book_shell_sidebar; EShell *shell; EShellView *shell_view; EShellBackend *shell_backend; ESource *source; ESourceSelector *selector; EClient *client; EClientCache *client_cache; EContact *contact; EABEditor *editor; 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; } e_book_client_get_contact_sync ( E_BOOK_CLIENT (client), contact_uid, &contact, NULL, &error); if (error != NULL) { g_warning ("Error getting contact from addressbook: %s", error->message); g_error_free (error); g_object_unref (client); return; } editor = e_contact_editor_new ( shell, E_BOOK_CLIENT (client), contact, FALSE, TRUE); g_signal_connect ( editor, "contact-modified", G_CALLBACK (contact_editor_contact_modified_cb), window); eab_editor_show (editor); g_object_unref (client); }
static void action_address_book_refresh_cb (GtkAction *action, EBookShellView *book_shell_view) { EBookShellSidebar *book_shell_sidebar; ESourceSelector *selector; EClient *client = NULL; ESource *source; EActivity *activity; EAlertSink *alert_sink; EShellBackend *shell_backend; EShellContent *shell_content; EShellView *shell_view; EShell *shell; GCancellable *cancellable; book_shell_sidebar = book_shell_view->priv->book_shell_sidebar; selector = e_book_shell_sidebar_get_selector (book_shell_sidebar); shell_view = E_SHELL_VIEW (book_shell_view); shell_backend = e_shell_view_get_shell_backend (shell_view); shell_content = e_shell_view_get_shell_content (shell_view); shell = e_shell_backend_get_shell (shell_backend); source = e_source_selector_ref_primary_selection (selector); if (source != NULL) { client = e_client_selector_ref_cached_client ( E_CLIENT_SELECTOR (selector), source); if (!client) { ESource *primary; e_shell_allow_auth_prompt_for (shell, source); primary = e_source_selector_ref_primary_selection (selector); if (primary == source) e_source_selector_set_primary_selection (selector, source); g_clear_object (&primary); } g_object_unref (source); } if (client == NULL) return; g_return_if_fail (e_client_check_refresh_supported (client)); alert_sink = E_ALERT_SINK (shell_content); activity = e_activity_new (); cancellable = g_cancellable_new (); e_activity_set_alert_sink (activity, alert_sink); e_activity_set_cancellable (activity, cancellable); e_shell_allow_auth_prompt_for (shell, source); e_client_refresh (client, cancellable, address_book_refresh_done_cb, activity); e_shell_backend_add_activity (shell_backend, activity); g_object_unref (cancellable); g_object_unref (client); }