diff options
author | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-06 01:28:56 +0100 |
---|---|---|
committer | Wilmer van der Gaast <wilmer@gaast.net> | 2010-05-06 01:28:56 +0100 |
commit | aea8b68bd0e057441d671c008200e71dd046a211 (patch) | |
tree | ba3d668eec9747c9009a50e8cdbaa842bddf446c /irc_im.c | |
parent | 94383231eddf56112cf74f2ae65d691821d70803 (diff) |
Starting to restore chatroom stuff. Only enough to create and be joined
into a room. More will follow soon.
Diffstat (limited to 'irc_im.c')
-rw-r--r-- | irc_im.c | 69 |
1 files changed, 69 insertions, 0 deletions
@@ -202,6 +202,68 @@ static gboolean bee_irc_user_fullname( bee_t *bee, bee_user_t *bu ) return TRUE; } + +/* Groupchats */ +gboolean bee_irc_chat_new( bee_t *bee, struct groupchat *c ) +{ + irc_t *irc = bee->ui_data; + irc_channel_t *ic; + char *topic; + int i; + + for( i = 0; i <= 999; i ++ ) + { + char name[16]; + sprintf( name, "&chat_%03d", i ); + if( ( ic = irc_channel_new( irc, name ) ) ) + break; + } + + if( ic == NULL ) + return FALSE; + + c->ui_data = ic; + ic->data = c; + + topic = g_strdup_printf( "BitlBee groupchat: \"%s\". Please keep in mind that root-commands won't work here. Have fun!", c->title ); + irc_channel_set_topic( ic, topic, irc->root ); + g_free( topic ); + + return TRUE; +} + +gboolean bee_irc_chat_free( bee_t *bee, struct groupchat *c ) +{ + irc_channel_t *ic = c->ui_data; + + if( ic->flags & IRC_CHANNEL_JOINED ) + irc_channel_printf( ic, "Cleaning up channel, bye!" ); + + irc_channel_free( ic ); + + return TRUE; +} + +gboolean bee_irc_chat_log( bee_t *bee, struct groupchat *c, const char *format, ... ) +{ +} + +gboolean bee_irc_chat_msg( bee_t *bee, struct groupchat *c, const char *who, const char *msg, time_t sent_at ) +{ +} + +gboolean bee_irc_chat_add_user( bee_t *bee, struct groupchat *c, bee_user_t *bu ) +{ + irc_t *irc = bee->ui_data; + + irc_channel_add_user( c->ui_data, bu == bee->user ? irc->user : bu->ui_data ); +} + +gboolean bee_irc_chat_remove_user( bee_t *bee, struct groupchat *c, bee_user_t *bu ) +{ +} + + /* File transfers */ static file_transfer_t *bee_irc_ft_in_start( bee_t *bee, bee_user_t *bu, const char *file_name, size_t file_size ) { @@ -236,6 +298,13 @@ const struct bee_ui_funcs irc_ui_funcs = { bee_irc_user_msg, bee_irc_user_typing, + bee_irc_chat_new, + bee_irc_chat_free, + NULL, + NULL, + bee_irc_chat_add_user, + NULL, + bee_irc_ft_in_start, bee_irc_ft_out_start, bee_irc_ft_close, |