-EmpathyContactReady
-empathy_contact_get_ready (EmpathyContact *contact)
-{
- EmpathyContactPriv *priv;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), FALSE);
-
- priv = GET_PRIV (contact);
-
- return priv->ready;
-}
-
-gboolean
-empathy_contact_equal (gconstpointer v1,
- gconstpointer v2)
-{
- McAccount *account_a;
- McAccount *account_b;
- const gchar *id_a;
- const gchar *id_b;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (v1), FALSE);
- g_return_val_if_fail (EMPATHY_IS_CONTACT (v2), FALSE);
-
- account_a = empathy_contact_get_account (EMPATHY_CONTACT (v1));
- account_b = empathy_contact_get_account (EMPATHY_CONTACT (v2));
-
- id_a = empathy_contact_get_id (EMPATHY_CONTACT (v1));
- id_b = empathy_contact_get_id (EMPATHY_CONTACT (v2));
-
- return empathy_account_equal (account_a, account_b) &&
- !tp_strdiff (id_a, id_b);
-}
-
-guint
-empathy_contact_hash (gconstpointer key)
-{
- EmpathyContactPriv *priv;
-
- g_return_val_if_fail (EMPATHY_IS_CONTACT (key), +1);
-
- priv = GET_PRIV (EMPATHY_CONTACT (key));
-
- if (priv->hash == 0)
- {
- priv->hash = empathy_account_hash (priv->account) ^
- g_str_hash (priv->id);
- }
-
- return priv->hash;
-}
-
-void empathy_contact_call_when_ready (EmpathyContact *contact,
- EmpathyContactReady ready, EmpathyContactReadyCb *callback,
- gpointer user_data, GDestroyNotify destroy, GObject *weak_object)
-{
- EmpathyContactPriv *priv = GET_PRIV (contact);
-
- g_return_if_fail (contact != NULL);
- g_return_if_fail (callback != NULL);
-
- if (contact_is_ready (contact, ready))
- {
- callback (contact, NULL, user_data, weak_object);
- if (destroy != NULL)
- destroy (user_data);
- }
- else
- {
- ReadyCbData *d = g_slice_new0 (ReadyCbData);
- d->ready = ready;
- d->callback = callback;
- d->user_data = user_data;
- d->destroy = destroy;
- d->weak_object = weak_object;
-
- if (weak_object != NULL)
- g_object_weak_ref (weak_object, contact_weak_object_notify, contact);
-
- priv->ready_callbacks = g_list_prepend (priv->ready_callbacks, d);
- }
-}
-
-static gboolean
-contact_is_ready_func (GObject *contact,
- gpointer user_data)
-{
- return contact_is_ready (EMPATHY_CONTACT (contact),
- GPOINTER_TO_UINT (user_data));
-}
-
-void
-empathy_contact_run_until_ready (EmpathyContact *contact,
- EmpathyContactReady ready,
- GMainLoop **loop)
-{
- empathy_run_until_ready_full (contact, "notify::ready",
- contact_is_ready_func, GUINT_TO_POINTER (ready),
- loop);
-}
-