Changeset 50e1776 for protocols


Ignore:
Timestamp:
2007-11-19T22:23:58Z (16 years ago)
Author:
Wilmer van der Gaast <wilmer@…>
Branches:
master
Children:
ef5c185
Parents:
ebb95b6
Message:

Merging /TOPIC code from Miklos Vajna. Untested, because I still have to
implement the Jabber hooks.

Location:
protocols
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • protocols/nogaim.c

    rebb95b6 r50e1776  
    760760}
    761761
     762void imcb_chat_topic( struct groupchat *c, char *who, char *topic )
     763{
     764        struct im_connection *ic = c->ic;
     765        user_t *u = NULL;
     766       
     767        if( who == NULL)
     768                u = user_find( ic, ic->irc->mynick );
     769        else if( g_strcasecmp( who, ic->acc->user ) == 0 )
     770                u = user_find( ic, ic->irc->nick );
     771        else
     772                u = user_findhandle( ic, who );
     773       
     774        if( ( g_strcasecmp( set_getstr( &ic->irc->set, "strip_html" ), "always" ) == 0 ) ||
     775            ( ( ic->flags & OPT_DOES_HTML ) && set_getbool( &ic->irc->set, "strip_html" ) ) )
     776                strip_html( topic );
     777       
     778        g_free( c->topic );
     779        c->topic = g_strdup( topic );
     780       
     781        if( c->joined && u )
     782                irc_write( ic->irc, ":%s!%s@%s TOPIC %s :%s", u->nick, u->user, u->host, c->channel, topic );
     783}
     784
    762785struct groupchat *imcb_chat_new( struct im_connection *ic, char *handle )
    763786{
     
    777800        c->title = g_strdup( handle );
    778801        c->channel = g_strdup_printf( "&chat_%03d", ic->irc->c_id++ );
     802        c->topic = g_strdup_printf( "%s :BitlBee groupchat: \"%s\". Please keep in mind that root-commands won't work here. Have fun!", c->channel, c->title );
    779803       
    780804        if( set_getbool( &ic->irc->set, "debug" ) )
  • protocols/nogaim.h

    rebb95b6 r50e1776  
    110110         * chat using imcb_chat_new(). */
    111111        char *title;
     112        /* Use imcb_chat_topic() to change this variable otherwise the user
     113         * won't notice the topic change. */
     114        char *topic;
    112115        char joined;
    113116        /* This is for you, you can add your own structure here to extend this
     
    212215        struct groupchat *
    213216             (* chat_join)      (struct im_connection *, char *room, char *nick, char *password);
     217        /* Change the topic, if supported. Note that BitlBee expects the IM
     218           server to confirm the topic change with a regular topic change
     219           event. If it doesn't do that, you have to fake it to make it
     220           visible to the user. */
     221        void (* chat_topic)     (struct groupchat *, char *message);
    214222       
    215223        /* You can tell what away states your protocol supports, so that
     
    293301/* To tell BitlBee 'who' said 'msg' in 'c'. 'flags' and 'sent_at' can be 0. */
    294302G_MODULE_EXPORT void imcb_chat_msg( struct groupchat *c, char *who, char *msg, u_int32_t flags, time_t sent_at );
     303/* To tell BitlBee 'who' changed the topic of 'c' to 'topic'. */
     304G_MODULE_EXPORT void imcb_chat_topic( struct groupchat *c, char *who, char *topic );
    295305G_MODULE_EXPORT void imcb_chat_free( struct groupchat *c );
    296306
Note: See TracChangeset for help on using the changeset viewer.