static void purple_xfer_ask_recv(PurpleXfer *xfer) { char *buf, *size_buf; size_t size; gconstpointer thumb; gsize thumb_size; /* If we have already accepted the request, ask the destination file name directly */ if (purple_xfer_get_status(xfer) != PURPLE_XFER_STATUS_ACCEPTED) { PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); if (purple_xfer_get_filename(xfer) != NULL) { size = purple_xfer_get_size(xfer); size_buf = purple_str_size_to_units(size); buf = g_strdup_printf(_("%s wants to send you %s (%s)"), buddy ? purple_buddy_get_alias(buddy) : xfer->who, purple_xfer_get_filename(xfer), size_buf); g_free(size_buf); } else { buf = g_strdup_printf(_("%s wants to send you a file"), buddy ? purple_buddy_get_alias(buddy) : xfer->who); } if (xfer->message != NULL) serv_got_im(purple_account_get_connection(xfer->account), xfer->who, xfer->message, 0, time(NULL)); if ((thumb = purple_xfer_get_thumbnail(xfer, &thumb_size))) { purple_request_accept_cancel_with_icon(xfer, NULL, buf, NULL, PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL, thumb, thumb_size, xfer, G_CALLBACK(purple_xfer_choose_file), G_CALLBACK(cancel_recv_cb)); } else { purple_request_accept_cancel(xfer, NULL, buf, NULL, PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL, xfer, G_CALLBACK(purple_xfer_choose_file), G_CALLBACK(cancel_recv_cb)); } g_free(buf); } else purple_xfer_choose_file(xfer); }
static void update_secret_chat_handler (struct tgl_state *TLS, struct tgl_secret_chat *U, unsigned flags) { debug ("secret-chat-state: %d", U->state); if (flags & TGL_UPDATE_WORKING || flags & TGL_UPDATE_DELETED) { write_secret_chat_file (TLS); } PurpleBuddy *buddy = p2tgl_buddy_find (TLS, U->id); if (! (flags & TGL_UPDATE_DELETED)) { if (!buddy) { buddy = p2tgl_buddy_new (TLS, (tgl_peer_t *)U); purple_blist_add_buddy (buddy, NULL, tggroup, NULL); purple_blist_alias_buddy (buddy, U->print_name); } p2tgl_prpl_got_set_status_mobile (TLS, U->id); } if (flags & TGL_UPDATE_REQUESTED && buddy) { connection_data *conn = TLS->ev_base; const char* choice = purple_account_get_string (conn->pa, "accept-secret-chats", "ask"); if (! strcmp (choice, "always")) { tgl_do_accept_encr_chat_request (TLS, U, write_secret_chat_gw, 0); } else if (! strcmp(choice, "ask")) { PurpleBuddy *who = p2tgl_buddy_find (TLS, TGL_MK_USER(U->user_id)); struct accept_secret_chat_data *data = g_new (struct accept_secret_chat_data, 1); data->TLS = TLS; data->U = U; gchar *message = g_strdup_printf ("Accept Secret Chat '%s'?", U->print_name); purple_request_accept_cancel (conn->gc, "Secret Chat", message, "Secret chats can only have one " "end point. If you accept a secret chat on this device, its messages will " "not be available anywhere else. If you decline, you can accept" " the chat on other devices.", 0, conn->pa, who->name, NULL, data, G_CALLBACK(accept_secret_chat_cb), G_CALLBACK(decline_secret_chat_cb)); g_free (message); }
static void yahoo_doodle_command_got_request(PurpleConnection *gc, const char *from, const char *imv_key) { PurpleRequestAcceptData *data = g_new0(PurpleRequestAcceptData, 1); purple_debug_info("yahoo", "doodle: Got Request (%s)\n", from); data->gc = gc; data->from = g_strdup(from); data->imv_key = g_strdup(imv_key); /* Only handle this if local client requested Doodle session (else local * client would have sent one) */ char dialog_message[64]; g_sprintf(dialog_message, "%s is requesting to start a Doodle" "session with you.(bla)", from); purple_request_accept_cancel(NULL, "TITLUI", dialog_message, NULL, PURPLE_DEFAULT_ACTION_NONE, NULL, NULL, NULL, data, G_CALLBACK(yahoo_doodle_accept_request), NULL); }
static gboolean pidgin_request_timeout_cb(PidginMedia *gtkmedia) { PurpleAccount *account; PurpleBuddy *buddy; const gchar *alias; PurpleMediaSessionType type; gchar *message = NULL; account = purple_media_get_account(gtkmedia->priv->media); buddy = purple_find_buddy(account, gtkmedia->priv->screenname); alias = buddy ? purple_buddy_get_contact_alias(buddy) : gtkmedia->priv->screenname; type = gtkmedia->priv->request_type; gtkmedia->priv->timeout_id = 0; if (type & PURPLE_MEDIA_AUDIO && type & PURPLE_MEDIA_VIDEO) { message = g_strdup_printf(_("%s wishes to start an audio/video session with you."), alias); } else if (type & PURPLE_MEDIA_AUDIO) { message = g_strdup_printf(_("%s wishes to start an audio session with you."), alias); } else if (type & PURPLE_MEDIA_VIDEO) { message = g_strdup_printf(_("%s wishes to start a video session with you."), alias); } gtkmedia->priv->request_type = PURPLE_MEDIA_NONE; if (!purple_media_accepted(gtkmedia->priv->media, NULL, NULL)) { purple_request_accept_cancel(gtkmedia, _("Incoming Call"), message, NULL, PURPLE_DEFAULT_ACTION_NONE, (void*)account, gtkmedia->priv->screenname, NULL, gtkmedia->priv->media, pidgin_media_accept_cb, pidgin_media_reject_cb); } pidgin_media_emit_message(gtkmedia, message); g_free(message); return FALSE; }
gboolean Media::minbif_media_ready_cb(PurpleMedia *media) { Media m = media_list.getMedia(media); string alias = m.getBuddy().getAlias(); //PurpleMediaSessionType type = purple_media_get_session_type(media, sid); PurpleMediaSessionType type = PURPLE_MEDIA_VIDEO; gchar *message = NULL; PurpleAccount* account = purple_media_get_account(media); if (type & PURPLE_MEDIA_AUDIO && type & PURPLE_MEDIA_VIDEO) { message = g_strdup_printf("%s wishes to start an audio/video session with you.", alias.c_str()); } else if (type & PURPLE_MEDIA_AUDIO) { message = g_strdup_printf("%s wishes to start an audio session with you.", alias.c_str()); } else if (type & PURPLE_MEDIA_VIDEO) { message = g_strdup_printf("%s wishes to start a video session with you.", alias.c_str()); } /* purple_request_accept_cancel is a macro and calls _() to translates * buttons strings. * There isn't (yet?) any translation system in Minbif, so the _ macro * is defined to make minbif compiles. */ #define _ purple_request_accept_cancel(media, "Incoming Call", message, NULL, PURPLE_DEFAULT_ACTION_NONE, account, alias.c_str(), NULL, media, minbif_media_accept_cb, minbif_media_reject_cb); #undef _ g_free(message); return FALSE; }
static void purple_xfer_ask_accept(PurpleXfer *xfer) { char *buf, *buf2 = NULL; PurpleBuddy *buddy = purple_find_buddy(xfer->account, xfer->who); buf = g_strdup_printf(_("Accept file transfer request from %s?"), buddy ? purple_buddy_get_alias(buddy) : xfer->who); if (purple_xfer_get_remote_ip(xfer) && purple_xfer_get_remote_port(xfer)) buf2 = g_strdup_printf(_("A file is available for download from:\n" "Remote host: %s\nRemote port: %d"), purple_xfer_get_remote_ip(xfer), purple_xfer_get_remote_port(xfer)); purple_request_accept_cancel(xfer, NULL, buf, buf2, PURPLE_DEFAULT_ACTION_NONE, xfer->account, xfer->who, NULL, xfer, G_CALLBACK(ask_accept_ok), G_CALLBACK(ask_accept_cancel)); g_free(buf); g_free(buf2); }