static void addressbook_model_dispose (GObject *object) { EAddressbookModel *model = E_ADDRESSBOOK_MODEL (object); remove_book_view (model); free_data (model); if (model->priv->book_client) { if (model->priv->writable_status_id) g_signal_handler_disconnect ( model->priv->book_client, model->priv->writable_status_id); model->priv->writable_status_id = 0; if (model->priv->backend_died_id) g_signal_handler_disconnect ( model->priv->book_client, model->priv->backend_died_id); model->priv->backend_died_id = 0; g_object_unref (model->priv->book_client); model->priv->book_client = NULL; } if (model->priv->query_str) { g_free (model->priv->query_str); model->priv->query_str = NULL; } /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (parent_class)->dispose (object); }
static gboolean addressbook_model_idle_cb (EAddressbookModel *model) { model->priv->client_view_idle_id = 0; if (model->priv->book_client && model->priv->query_str) { remove_book_view (model); if (model->priv->first_get_view) { model->priv->first_get_view = FALSE; if (e_client_check_capability (E_CLIENT (model->priv->book_client), "do-initial-query")) { e_book_client_get_view ( model->priv->book_client, model->priv->query_str, NULL, client_view_ready_cb, model); } else { free_data (model); g_signal_emit ( model, signals[MODEL_CHANGED], 0); g_signal_emit ( model, signals[STOP_STATE_CHANGED], 0); } } else e_book_client_get_view ( model->priv->book_client, model->priv->query_str, NULL, client_view_ready_cb, model); } g_object_unref (model); return FALSE; }
static void addressbook_model_dispose (GObject *object) { EAddressbookModel *model = E_ADDRESSBOOK_MODEL (object); remove_book_view (model); free_data (model); if (model->priv->client_notify_readonly_handler_id > 0) { g_signal_handler_disconnect ( model->priv->client_cache, model->priv->client_notify_readonly_handler_id); model->priv->client_notify_readonly_handler_id = 0; } g_clear_object (&model->priv->client_cache); g_clear_object (&model->priv->book_client); if (model->priv->query_str) { g_free (model->priv->query_str); model->priv->query_str = NULL; } /* Chain up to parent's dispose() method. */ G_OBJECT_CLASS (e_addressbook_model_parent_class)->dispose (object); }
static void client_view_ready_cb (GObject *source_object, GAsyncResult *result, gpointer user_data) { EBookClient *book_client = E_BOOK_CLIENT (source_object); EBookClientView *client_view = NULL; EAddressbookModel *model = user_data; GError *error = NULL; if (!e_book_client_get_view_finish (book_client, result, &client_view, &error)) client_view = NULL; if (error) { eab_error_dialog (NULL, _("Error getting book view"), error); g_error_free (error); return; } remove_book_view (model); free_data (model); model->priv->client_view = client_view; if (model->priv->client_view) { model->priv->create_contact_id = g_signal_connect ( model->priv->client_view, "objects-added", G_CALLBACK (view_create_contact_cb), model); model->priv->remove_contact_id = g_signal_connect ( model->priv->client_view, "objects-removed", G_CALLBACK (view_remove_contact_cb), model); model->priv->modify_contact_id = g_signal_connect ( model->priv->client_view, "objects-modified", G_CALLBACK (view_modify_contact_cb), model); model->priv->status_message_id = g_signal_connect ( model->priv->client_view, "progress", G_CALLBACK (view_progress_cb), model); model->priv->view_complete_id = g_signal_connect ( model->priv->client_view, "complete", G_CALLBACK (view_complete_cb), model); model->priv->search_in_progress = TRUE; } g_signal_emit (model, signals[MODEL_CHANGED], 0); g_signal_emit (model, signals[SEARCH_STARTED], 0); g_signal_emit (model, signals[STOP_STATE_CHANGED], 0); if (model->priv->client_view) { e_book_client_view_start (model->priv->client_view, &error); if (error != NULL) { g_warning ( "%s: Failed to start client view: %s", G_STRFUNC, error->message); g_error_free (error); } } }