Changeset df701918 for protocols


Ignore:
Timestamp:
2015-12-08T22:31:05Z (9 years ago)
Author:
dequis <dx@…>
Parents:
459dec8
Message:

Add imcb_buddy_nick_change(), like nick_hint but stronger

nick_hint only works when creating new users, it's a no-op after the
user is online. This new function takes care of nick changes after that.

It also helps clean up couple of hacks in irc_im.c \o/

Location:
protocols
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • protocols/bee.h

    r459dec8 rdf701918  
    131131
    132132        void (*log)(bee_t *bee, const char *tag, const char *msg);
     133        gboolean (*user_nick_change)(bee_t *bee, bee_user_t *bu, const char *hint);
    133134} bee_ui_funcs_t;
    134135
  • protocols/nogaim.c

    r459dec8 rdf701918  
    479479}
    480480
    481 /* Mainly meant for ICQ (and now also for Jabber conferences) to allow IM
    482    modules to suggest a nickname for a handle. */
    483 void imcb_buddy_nick_hint(struct im_connection *ic, const char *handle, const char *nick)
     481/* Implements either imcb_buddy_nick_hint() or imcb_buddy_nick_change() depending on the value of 'change' */
     482static void buddy_nick_hint_or_change(struct im_connection *ic, const char *handle, const char *nick, gboolean change)
    484483{
    485484        bee_t *bee = ic->bee;
     
    493492        bu->nick = g_strdup(nick);
    494493
    495         if (bee->ui->user_nick_hint) {
     494        if (change && bee->ui->user_nick_change) {
     495                bee->ui->user_nick_change(bee, bu, nick);
     496        } else if (!change && bee->ui->user_nick_hint) {
    496497                bee->ui->user_nick_hint(bee, bu, nick);
    497498        }
    498499}
    499500
     501/* Soft variant, for newly created users. Does nothing if it's already online */
     502void imcb_buddy_nick_hint(struct im_connection *ic, const char *handle, const char *nick)
     503{
     504        buddy_nick_hint_or_change(ic, handle, nick, FALSE);
     505}
     506
     507/* Hard variant, always changes the nick */
     508void imcb_buddy_nick_change(struct im_connection *ic, const char *handle, const char *nick)
     509{
     510        buddy_nick_hint_or_change(ic, handle, nick, TRUE);
     511}
    500512
    501513struct imcb_ask_cb_data {
  • protocols/nogaim.h

    r459dec8 rdf701918  
    325325G_MODULE_EXPORT void imcb_rename_buddy(struct im_connection *ic, const char *handle, const char *realname);
    326326G_MODULE_EXPORT void imcb_buddy_nick_hint(struct im_connection *ic, const char *handle, const char *nick);
     327G_MODULE_EXPORT void imcb_buddy_nick_change(struct im_connection *ic, const char *handle, const char *nick);
    327328G_MODULE_EXPORT void imcb_buddy_action_response(bee_user_t *bu, const char *action, char * const args[], void *data);
    328329
Note: See TracChangeset for help on using the changeset viewer.