Пример #1
0
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));
}
Пример #2
0
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 */
  }
}
Пример #3
0
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));
}
Пример #4
0
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);
}
Пример #5
0
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;
}
Пример #6
0
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);
}
Пример #7
0
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 */
  }
}