Esempio n. 1
0
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;
}
Esempio n. 2
0
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);
}
Esempio n. 4
0
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));
}