static void receive_chat_message(PurpleChatConversation *from, PurpleChatConversation *to, int id, const char *room, gpointer userdata) { const char *message = (const char *)userdata; PurpleConnection *to_gc = get_nullprpl_gc(purple_chat_conversation_get_nick(to)); purple_debug_info("nullprpl", "%s receives message from %s in chat room %s: %s\n", purple_chat_conversation_get_nick(to), purple_chat_conversation_get_nick(from), room, message); purple_serv_got_chat_in(to_gc, id, purple_chat_conversation_get_nick(from), PURPLE_MESSAGE_RECV, message, time(NULL)); }
static void left_chat_room(PurpleChatConversation *from, PurpleChatConversation *to, int id, const char *room, gpointer userdata) { if (from != to) { /* tell their chat window that we left */ purple_debug_info("nullprpl", "%s sees that %s left chat room %s\n", purple_chat_conversation_get_nick(to), purple_chat_conversation_get_nick(from), room); purple_chat_conversation_remove_user(to, purple_chat_conversation_get_nick(from), NULL); /* user-provided message, IRC style */ } }
static void received_chat_msg(PurpleAccount *account, const char *sender, const char *msg, PurpleChatConversation *chat, PurpleMessageFlags flags, gpointer null) { const char *nick; PurpleConversation *conv = PURPLE_CONVERSATION(chat); nick = purple_chat_conversation_get_nick(chat); if (g_utf8_collate(sender, nick) == 0) return; if (purple_prefs_get_bool(PREFS_EVENT_CHAT_NICK) && (purple_utf8_has_word(msg, nick))) notify(conv, _("%s said your nick in %s"), sender, purple_conversation_get_name(conv)); else if (purple_prefs_get_bool(PREFS_EVENT_CHAT_MSG)) notify(conv, _("%s sent a message in %s"), sender, purple_conversation_get_name(conv)); }
static void chat_msg_received_cb(PurpleAccount *account, char *sender, char *message, PurpleChatConversation *chat, PurpleMessageFlags flags, PurpleSoundEventID event) { if (flags & PURPLE_MESSAGE_DELAYED) return; g_return_if_fail(chat != NULL); if (purple_chat_conversation_is_ignored_user(chat, sender)) return; if (chat_nick_matches_name(chat, sender)) return; if (flags & PURPLE_MESSAGE_NICK || purple_utf8_has_word(message, purple_chat_conversation_get_nick(chat))) play_conv_event(PURPLE_CONVERSATION(chat), PURPLE_SOUND_CHAT_NICK); else play_conv_event(PURPLE_CONVERSATION(chat), event); }
static gboolean chat_nick_matches_name(PurpleChatConversation *chat, const char *aname) { char *nick = NULL; char *name = NULL; gboolean ret = FALSE; if (chat==NULL) return ret; nick = g_strdup(purple_normalize(purple_conversation_get_account( PURPLE_CONVERSATION(chat)), purple_chat_conversation_get_nick(chat))); name = g_strdup(purple_normalize(purple_conversation_get_account( PURPLE_CONVERSATION(chat)), aname)); if (g_utf8_collate(nick, name) == 0) ret = TRUE; g_free(nick); g_free(name); return ret; }
static void chat_msg_received_cb(PurpleAccount *account, char *sender, char *message, PurpleChatConversation *chat, PurpleMessageFlags flags, PurpleSoundEventID event) { PurpleConversation *conv = PURPLE_CONVERSATION(chat); if (flags & PURPLE_MESSAGE_DELAYED || flags & PURPLE_MESSAGE_NOTIFY) return; g_return_if_fail(conv != NULL); if (purple_chat_conversation_is_ignored_user(chat, sender)) return; if (chat_nick_matches_name(chat, sender)) return; if (flags & PURPLE_MESSAGE_NICK || purple_utf8_has_word(message, purple_chat_conversation_get_nick(chat))) /* This isn't quite right; if you have the PURPLE_SOUND_CHAT_NICK event disabled * and the PURPLE_SOUND_CHAT_SAY event enabled, you won't get a sound at all */ play_conv_event(conv, PURPLE_SOUND_CHAT_NICK); else play_conv_event(conv, event); }
static void joined_chat(PurpleChatConversation *from, PurpleChatConversation *to, int id, const char *room, gpointer userdata) { /* tell their chat window that we joined */ purple_debug_info("nullprpl", "%s sees that %s joined chat room %s\n", purple_chat_conversation_get_nick(to), purple_chat_conversation_get_nick(from), room); purple_chat_conversation_add_user(to, purple_chat_conversation_get_nick(from), NULL, /* user-provided join message, IRC style */ PURPLE_CHAT_USER_NONE, TRUE); /* show a join message */ if (from != to) { /* add them to our chat window */ purple_debug_info("nullprpl", "%s sees that %s is in chat room %s\n", purple_chat_conversation_get_nick(from), purple_chat_conversation_get_nick(to), room); purple_chat_conversation_add_user(from, purple_chat_conversation_get_nick(to), NULL, /* user-provided join message, IRC style */ PURPLE_CHAT_USER_NONE, FALSE); /* show a join message */ } }