void *Accounts::request_authorize(PurpleAccount *account, const char *remote_user, const char *id, const char *alias, const char *message, gboolean on_list, PurpleAccountRequestAuthorizationCb authorize_cb, PurpleAccountRequestAuthorizationCb deny_cb, void *user_data) { if (message && !*message) message = NULL; char *ins = NULL; if (alias) ins = g_strdup_printf(" (%s)", alias); const char *name = id; if (!name) name = purple_account_get_name_for_display(account); char *buf = g_strdup_printf( _("%s%s wants to add you (%s) to his or her buddy list%s%s"), remote_user, ins ? ins : "" , name, message ? ":\n" : ".", message ? message : ""); if (ins) g_free(ins); void *ui_handle; /* TODO Provide more information about the user that requested the * authorization. */ if (on_list) ui_handle = purple_request_action(NULL, _("Authorize buddy?"), buf, NULL, PURPLE_DEFAULT_ACTION_NONE, account, remote_user, NULL, user_data, 2, _("Authorize"), authorize_cb, _("Deny"), deny_cb); else { AuthAndAdd *aa = new AuthAndAdd(authorize_cb, deny_cb, user_data, remote_user, alias, account); ui_handle = purple_request_action(NULL, _("Authorize buddy?"), buf, NULL, PURPLE_DEFAULT_ACTION_NONE, account, remote_user, NULL, aa, 2, _("Authorize"), authorize_and_add_cb_, _("Deny"), deny_no_add_cb_); } g_free(buf); // this is ugly CppConsUI::FreeWindow *win = reinterpret_cast<CppConsUI::FreeWindow*>(ui_handle); win->signal_close.connect(sigc::mem_fun(this, &Accounts::OnRequestAuthorizeClose)); return ui_handle; }
char *Accounts::MakeInfo(PurpleAccount *account, const char *remote_user, const char *id, const char *alias, const char *msg) { if (msg && !*msg) msg = NULL; char *ins = NULL; if (alias) ins = g_strdup_printf(" (%s)", alias); const char *name = id; if (!name) name = purple_account_get_name_for_display(account); char *res = g_strdup_printf(_("%s%s has made %s his or her buddy%s%s"), remote_user, ins ? ins : "", name , msg ? ":\n" : ".", msg ? msg : ""); if (ins) g_free(ins); return res; }
static void received_im_msg_cb(PurpleAccount *account, char *who, char *buffer, PurpleConversation *conv, PurpleMessageFlags flags, void *data) { // A workaround to avoid skipping of the first message as a result on NULL-conv: if (conv == NULL) conv = purple_conversation_new(PURPLE_CONV_TYPE_IM, account, who); PurpleBuddy *buddy = purple_find_buddy(account, who); PurplePresence *presence = purple_buddy_get_presence(buddy); msg_metadata_t msg; //Get message msg.text = purple_markup_strip_html(buffer); msg.remote_username = who; //LOCAL USER: msg.local_alias = purple_account_get_alias(account); msg.local_username = (char *) purple_account_get_name_for_display(account); //REMOTE USER (Buddy): //Get buddy alias msg.remote_alias = purple_buddy_get_alias(buddy); if(msg.remote_alias == NULL) msg.remote_alias = ""; //Get buddy group PurpleGroup *group = purple_buddy_get_group(buddy); //return empty string if not in group msg.remote_from_group = group != NULL ? purple_group_get_name(group) : ""; //Get protocol ID msg.protocol_id = purple_account_get_protocol_id(account); //trim out PROTOCOL_PREFIX (eg.: "prpl-irc" => "irc") if(!strncmp(msg.protocol_id,PROTOCOL_PREFIX,strlen(PROTOCOL_PREFIX))) msg.protocol_id += strlen(PROTOCOL_PREFIX); //Get status PurpleStatus *status = purple_account_get_active_status(account); PurpleStatusType *type = purple_status_get_type(status); //remote PurpleStatus *r_status = purple_presence_get_active_status(presence); PurpleStatusType *r_status_type = purple_status_get_type(r_status); //Get status id msg.local_status_id = NULL; msg.local_status_id = purple_primitive_get_id_from_type( purple_status_type_get_primitive(type)); //remote msg.remote_status_id = NULL; msg.remote_status_id = purple_primitive_get_id_from_type( purple_status_type_get_primitive(r_status_type)); //Get status message msg.local_status_msg = NULL; if (purple_status_type_get_attr(type, "message") != NULL) { msg.local_status_msg = purple_status_get_attr_string(status, "message"); } else { PurpleSavedStatus *savedstatus = purple_savedstatus_get_current(); if(savedstatus) msg.local_status_msg = purple_savedstatus_get_message(savedstatus); } //remote msg.remote_status_msg = NULL; if (purple_status_type_get_attr(r_status_type, "message") != NULL) { msg.remote_status_msg = purple_status_get_attr_string(r_status, "message"); } else { msg.remote_status_msg = ""; } run_lua(conv, msg); }
static VALUE display_name(VALUE self) { PurpleAccount *account; Data_Get_Struct(self, PurpleAccount, account); return rb_str_new2(purple_account_get_name_for_display(account)); }