libpurple/conversation.c

branch
soc.2013.gobjectification.plugins
changeset 37148
50f361d39a1e
parent 37140
25d39bb4d758
parent 36100
720a07f05cae
child 37153
c0eccc6696da
--- a/libpurple/conversation.c	Tue May 20 10:59:21 2014 +0530
+++ b/libpurple/conversation.c	Sat May 24 02:32:01 2014 +0530
@@ -101,6 +101,7 @@
 	PurpleAccount *account;
 	PurpleConnection *gc;
 	PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv);
+	PurpleMessage *msg;
 	char *displayed = NULL, *sent = NULL;
 	int err = 0;
 
@@ -133,33 +134,36 @@
 	msgflags |= PURPLE_MESSAGE_SEND;
 
 	if (PURPLE_IS_IM_CONVERSATION(conv)) {
-		purple_signal_emit(purple_conversations_get_handle(), "sending-im-msg",
-						 account,
-						 purple_conversation_get_name(conv), &sent);
+		msg = purple_message_new_outgoing(
+			purple_conversation_get_name(conv), sent, msgflags);
 
-		if (sent != NULL && sent[0] != '\0') {
+		purple_signal_emit(purple_conversations_get_handle(), "sending-im-msg",
+			account, msg);
 
-			err = purple_serv_send_im(gc, purple_conversation_get_name(conv),
-			                   sent, msgflags);
+		if (!purple_message_is_empty(msg)) {
+
+			err = purple_serv_send_im(gc, msg);
 
 			if ((err > 0) && (displayed != NULL))
-				purple_conversation_write_message(conv, NULL, displayed, msgflags, time(NULL));
+				purple_conversation_write_message(conv, msg);
 
-			purple_signal_emit(purple_conversations_get_handle(), "sent-im-msg",
-							 account,
-							 purple_conversation_get_name(conv), sent);
+			purple_signal_emit(purple_conversations_get_handle(),
+				"sent-im-msg", account, msg);
 		}
 	}
 	else if (PURPLE_IS_CHAT_CONVERSATION(conv)) {
 		int id = purple_chat_conversation_get_id(PURPLE_CHAT_CONVERSATION(conv));
-		purple_signal_emit(purple_conversations_get_handle(), "sending-chat-msg",
-						 account, &sent, id);
+
+		msg = purple_message_new_outgoing(NULL, sent, msgflags);
+
+		purple_signal_emit(purple_conversations_get_handle(),
+			"sending-chat-msg", account, msg, id);
 
-		if (sent != NULL && sent[0] != '\0') {
-			err = purple_serv_chat_send(gc, id, sent, msgflags);
+		if (!purple_message_is_empty(msg)) {
+			err = purple_serv_chat_send(gc, id, msg);
 
-			purple_signal_emit(purple_conversations_get_handle(), "sent-chat-msg",
-							 account, sent, id);
+			purple_signal_emit(purple_conversations_get_handle(),
+				"sent-chat-msg", account, msg, id);
 		}
 	}
 
@@ -574,7 +578,7 @@
 }
 
 void
-purple_conversation_write(PurpleConversation *conv, const char *who,
+_purple_conversation_write_common(PurpleConversation *conv, const char *who,
 						const char *message, PurpleMessageFlags flags,
 						time_t mtime)
 {
@@ -679,8 +683,7 @@
 }
 
 void
-purple_conversation_write_message(PurpleConversation *conv, const char *who,
-		const char *message, PurpleMessageFlags flags, time_t mtime)
+purple_conversation_write_message(PurpleConversation *conv, PurpleMessage *msg)
 {
 	PurpleConversationClass *klass = NULL;
 
@@ -689,7 +692,14 @@
 	klass = PURPLE_CONVERSATION_GET_CLASS(conv);
 
 	if (klass && klass->write_message)
-		klass->write_message(conv, who, message, flags, mtime);
+		klass->write_message(conv, msg);
+}
+
+void purple_conversation_write_system_message(PurpleConversation *conv,
+	const gchar *message, PurpleMessageFlags flags)
+{
+	_purple_conversation_write_common(conv, NULL, message,
+		flags | PURPLE_MESSAGE_SYSTEM, time(NULL));
 }
 
 void
@@ -749,7 +759,7 @@
 
 	conv = purple_conversations_find_with_account(who, account);
 	if (conv != NULL)
-		purple_conversation_write(conv, NULL, what, PURPLE_MESSAGE_ERROR, time(NULL));
+		purple_conversation_write_system_message(conv, what, PURPLE_MESSAGE_ERROR);
 	else
 		return FALSE;
 

mercurial