static void tp_contact_list_add (EmpathyContactList *list, EmpathyContact *contact, const gchar *message) { EmpathyTpContactListPriv *priv = GET_PRIV (list); TpHandle handle; GArray handles = {(gchar *) &handle, 1}; handle = empathy_contact_get_handle (contact); if (priv->subscribe) { tp_cli_channel_interface_group_call_add_members (priv->subscribe, -1, &handles, message, NULL, NULL, NULL, NULL); } if (priv->publish) { TpChannelGroupFlags flags = tp_channel_group_get_flags (priv->subscribe); if (flags & TP_CHANNEL_GROUP_FLAG_CAN_ADD || g_hash_table_lookup (priv->pendings, GUINT_TO_POINTER (handle))) { tp_cli_channel_interface_group_call_add_members (priv->publish, -1, &handles, message, NULL, NULL, NULL, NULL); } } /* We want to unblock the contact */ if (tp_proxy_has_interface_by_id (priv->connection, TP_IFACE_QUARK_CONNECTION_INTERFACE_CONTACT_BLOCKING)) { TpContact *tp_contact = empathy_contact_get_tp_contact (contact); if (tp_contact != NULL) tp_contact_unblock_async (tp_contact, NULL, NULL); } }
static EmpathyContact * tp_contact_factory_find_by_tp_contact (EmpathyTpContactFactory *tp_factory, TpContact *tp_contact) { EmpathyTpContactFactoryPriv *priv = GET_PRIV (tp_factory); GList *l; for (l = priv->contacts; l; l = l->next) { if (empathy_contact_get_tp_contact (l->data) == tp_contact) { return l->data; } } return NULL; }
GtkWidget * empathy_contact_log_menu_item_new (EmpathyContact *contact) { TplLogManager *manager; TplEntity *entity; gboolean have_log; GtkWidget *item; GtkWidget *image; g_return_val_if_fail (EMPATHY_IS_CONTACT (contact), NULL); manager = tpl_log_manager_dup_singleton (); entity = tpl_entity_new_from_tp_contact (empathy_contact_get_tp_contact (contact), TPL_ENTITY_CONTACT); have_log = tpl_log_manager_exists (manager, empathy_contact_get_account (contact), entity, TPL_EVENT_MASK_TEXT); g_object_unref (entity); g_object_unref (manager); item = gtk_image_menu_item_new_with_mnemonic (_("_Previous Conversations")); image = gtk_image_new_from_icon_name (EMPATHY_IMAGE_LOG, GTK_ICON_SIZE_MENU); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (item), image); gtk_widget_set_sensitive (item, have_log); gtk_widget_show (image); g_signal_connect_swapped (item, "activate", G_CALLBACK (contact_log_menu_item_activate_cb), contact); return item; }
void empathy_share_my_desktop_share_with_contact (EmpathyContact *contact) { TpAccountChannelRequest *req; GHashTable *request; TpContact *tp_contact; tp_contact = empathy_contact_get_tp_contact (contact); DEBUG ("Creation of ShareMyDesktop"); if (!TP_IS_CONTACT (tp_contact)) { DEBUG ("It's not a tp contact"); return; } request = tp_asv_new ( TP_PROP_CHANNEL_CHANNEL_TYPE, G_TYPE_STRING, TP_IFACE_CHANNEL_TYPE_STREAM_TUBE, TP_PROP_CHANNEL_TARGET_HANDLE_TYPE, G_TYPE_UINT, TP_HANDLE_TYPE_CONTACT, TP_PROP_CHANNEL_TARGET_HANDLE, G_TYPE_UINT, tp_contact_get_handle (tp_contact), TP_PROP_CHANNEL_TYPE_STREAM_TUBE_SERVICE, G_TYPE_STRING, "rfb", NULL); req = tp_account_channel_request_new (empathy_contact_get_account (contact), request, TP_USER_ACTION_TIME_CURRENT_TIME); tp_account_channel_request_create_channel_async (req, NULL, NULL, create_tube_channel_cb, NULL); g_object_unref (req); g_hash_table_unref (request); }