/pidgin/main: 4c386387f6f3: Switch purple_conversation_write_mes...
Tomasz Wasilczyk
twasilczyk at pidgin.im
Thu May 22 14:20:37 EDT 2014
Changeset: 4c386387f6f31e48fc36e17d35830b12a26efa84
Author: Tomasz Wasilczyk <twasilczyk at pidgin.im>
Date: 2014-05-22 20:20 +0200
Branch: default
URL: https://hg.pidgin.im/pidgin/main/rev/4c386387f6f3
Description:
Switch purple_conversation_write_message to PurpleMessage
diffstat:
finch/gntconv.c | 18 ++++--
libpurple/conversation.c | 9 +-
libpurple/conversation.h | 16 +----
libpurple/conversationtypes.c | 69 ++++++++++++++------------
libpurple/message.c | 10 +++
libpurple/message.h | 3 +
libpurple/plugins/offlinemsg.c | 5 +-
libpurple/plugins/perl/common/Conversation.xs | 9 ---
libpurple/plugins/tcl/tcl_cmds.c | 2 +-
libpurple/protocols/irc/cmds.c | 14 +++--
libpurple/protocols/irc/msgs.c | 24 ++++----
libpurple/protocols/jabber/presence.c | 9 ++-
libpurple/protocols/silc/ops.c | 26 ++++-----
libpurple/protocols/silc/silc.c | 18 +++---
libpurple/server.c | 16 +++--
pidgin/gtkconv.c | 9 +-
16 files changed, 137 insertions(+), 120 deletions(-)
diffs (truncated from 670 to 300 lines):
diff --git a/finch/gntconv.c b/finch/gntconv.c
--- a/finch/gntconv.c
+++ b/finch/gntconv.c
@@ -1083,18 +1083,23 @@ finch_write_common(PurpleConversation *c
}
static void
-finch_write_chat(PurpleChatConversation *chat, const char *who, const char *message,
- PurpleMessageFlags flags, time_t mtime)
+finch_write_chat(PurpleChatConversation *chat, PurpleMessage *msg)
{
- purple_conversation_write(PURPLE_CONVERSATION(chat), who, message, flags, mtime);
+ purple_conversation_write(PURPLE_CONVERSATION(chat),
+ purple_message_get_who(msg),
+ purple_message_get_contents(msg),
+ purple_message_get_flags(msg),
+ purple_message_get_time(msg));
}
static void
-finch_write_im(PurpleIMConversation *im, const char *who, const char *message,
- PurpleMessageFlags flags, time_t mtime)
+finch_write_im(PurpleIMConversation *im, PurpleMessage *msg)
{
PurpleConversation *conv = PURPLE_CONVERSATION(im);
PurpleAccount *account = purple_conversation_get_account(conv);
+ PurpleMessageFlags flags = purple_message_get_flags(msg);
+ const gchar *who = purple_message_get_who(msg);
+
if (flags & PURPLE_MESSAGE_SEND)
{
who = purple_connection_get_display_name(purple_account_get_connection(account));
@@ -1112,7 +1117,8 @@ finch_write_im(PurpleIMConversation *im,
who = purple_buddy_get_contact_alias(buddy);
}
- purple_conversation_write(conv, who, message, flags, mtime);
+ purple_conversation_write(conv, who, purple_message_get_contents(msg),
+ flags, purple_message_get_time(msg));
}
static void
diff --git a/libpurple/conversation.c b/libpurple/conversation.c
--- a/libpurple/conversation.c
+++ b/libpurple/conversation.c
@@ -144,8 +144,8 @@ common_send(PurpleConversation *conv, co
err = purple_serv_send_im(gc, msg);
- if ((err > 0) && (displayed != NULL)) /* TODO: use msg! */
- purple_conversation_write_message(conv, NULL, displayed, msgflags, time(NULL));
+ if ((err > 0) && (displayed != NULL))
+ purple_conversation_write_message(conv, msg);
purple_signal_emit(purple_conversations_get_handle(),
"sent-im-msg", account, msg);
@@ -683,8 +683,7 @@ purple_conversation_write(PurpleConversa
}
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;
@@ -693,7 +692,7 @@ purple_conversation_write_message(Purple
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,
diff --git a/libpurple/conversation.h b/libpurple/conversation.h
--- a/libpurple/conversation.h
+++ b/libpurple/conversation.h
@@ -142,6 +142,7 @@ typedef enum /*< flags >*/
#include <glib.h>
#include <glib-object.h>
+#include "message.h"
/**************************************************************************/
/** PurpleConversation */
@@ -179,8 +180,7 @@ struct _PurpleConversation
struct _PurpleConversationClass {
GObjectClass parent_class;
- void (*write_message)(PurpleConversation *conv, const char *who,
- const char *message, PurpleMessageFlags flags, time_t mtime);
+ void (*write_message)(PurpleConversation *conv, PurpleMessage *msg);
/*< private >*/
void (*_purple_reserved1)(void);
@@ -250,13 +250,8 @@ struct _PurpleConversationUiOps
void (*create_conversation)(PurpleConversation *conv);
void (*destroy_conversation)(PurpleConversation *conv);
- void (*write_chat)(PurpleChatConversation *chat, const char *who,
- const char *message, PurpleMessageFlags flags,
- time_t mtime);
-
- void (*write_im)(PurpleIMConversation *im, const char *who,
- const char *message, PurpleMessageFlags flags,
- time_t mtime);
+ void (*write_chat)(PurpleChatConversation *chat, PurpleMessage *msg);
+ void (*write_im)(PurpleIMConversation *im, PurpleMessage *msg);
void (*write_conv)(PurpleConversation *conv,
const char *name,
@@ -512,8 +507,7 @@ void purple_conversation_write(PurpleCon
* Writes to a chat or an IM.
*/
void purple_conversation_write_message(PurpleConversation *conv,
- const char *who, const char *message,
- PurpleMessageFlags flags, time_t mtime);
+ PurpleMessage *msg);
/**
* purple_conversation_write_system_message:
diff --git a/libpurple/conversationtypes.c b/libpurple/conversationtypes.c
--- a/libpurple/conversationtypes.c
+++ b/libpurple/conversationtypes.c
@@ -353,25 +353,29 @@ purple_im_conversation_update_typing(Pur
}
static void
-im_conversation_write_message(PurpleConversation *conv, const char *who, const char *message,
- PurpleMessageFlags flags, time_t mtime)
+im_conversation_write_message(PurpleConversation *conv, PurpleMessage *msg)
{
PurpleConversationUiOps *ops;
PurpleIMConversation *im = PURPLE_IM_CONVERSATION(conv);
g_return_if_fail(im != NULL);
- g_return_if_fail(message != NULL);
+ g_return_if_fail(msg != NULL);
ops = purple_conversation_get_ui_ops(conv);
- if ((flags & PURPLE_MESSAGE_RECV) == PURPLE_MESSAGE_RECV)
+ if (purple_message_get_flags(msg) & PURPLE_MESSAGE_RECV)
purple_im_conversation_set_typing_state(im, PURPLE_IM_NOT_TYPING);
/* Pass this on to either the ops structure or the default write func. */
if (ops != NULL && ops->write_im != NULL)
- ops->write_im(im, who, message, flags, mtime);
- else
- purple_conversation_write(conv, who, message, flags, mtime);
+ ops->write_im(im, msg);
+ else {
+ purple_conversation_write(conv,
+ purple_message_get_who(msg),
+ purple_message_get_contents(msg),
+ purple_message_get_flags(msg),
+ purple_message_get_time(msg));
+ }
}
/**************************************************************************
@@ -797,43 +801,37 @@ purple_chat_conversation_get_id(const Pu
}
static void
-chat_conversation_write_message(PurpleConversation *conv, const char *who, const char *message,
- PurpleMessageFlags flags, time_t mtime)
+chat_conversation_write_message(PurpleConversation *conv, PurpleMessage *msg)
{
PurpleAccount *account;
PurpleConversationUiOps *ops;
PurpleChatConversationPrivate *priv = PURPLE_CHAT_CONVERSATION_GET_PRIVATE(conv);
+ PurpleMessageFlags flags;
g_return_if_fail(priv != NULL);
- g_return_if_fail(who != NULL);
- g_return_if_fail(message != NULL);
+ g_return_if_fail(msg != NULL);
account = purple_conversation_get_account(conv);
/* Don't display this if the person who wrote it is ignored. */
- if (purple_chat_conversation_is_ignored_user(PURPLE_CHAT_CONVERSATION(conv), who))
+ if (purple_chat_conversation_is_ignored_user(
+ PURPLE_CHAT_CONVERSATION(conv), purple_message_get_who(msg)))
+ {
return;
-
- if (mtime < 0) {
- purple_debug_error("conversation",
- "purple_conv_chat_write ignoring negative timestamp\n");
- /* TODO: Would be more appropriate to use a value that indicates
- that the timestamp is unknown, and surface that in the UI. */
- mtime = time(NULL);
}
- if (TRUE) {
- const char *str;
+#if 0
+ /* XXX: this should not be necessary */
+ if (purple_strequal(purple_normalize(account, who), priv->nick)) {
+ flags |= PURPLE_MESSAGE_SEND;
+ }
+#endif
- str = purple_normalize(account, who);
-
- if (purple_strequal(str, priv->nick)) {
- flags |= PURPLE_MESSAGE_SEND;
- } else {
- flags |= PURPLE_MESSAGE_RECV;
-
- if (purple_utf8_has_word(message, priv->nick))
- flags |= PURPLE_MESSAGE_NICK;
+ flags = purple_message_get_flags(msg);
+ if (flags & PURPLE_MESSAGE_RECV) {
+ if (purple_utf8_has_word(purple_message_get_contents(msg), priv->nick)) {
+ flags |= PURPLE_MESSAGE_NICK;
+ purple_message_set_flags(msg, flags);
}
}
@@ -841,9 +839,14 @@ chat_conversation_write_message(PurpleCo
/* Pass this on to either the ops structure or the default write func. */
if (ops != NULL && ops->write_chat != NULL)
- ops->write_chat(PURPLE_CHAT_CONVERSATION(conv), who, message, flags, mtime);
- else
- purple_conversation_write(conv, who, message, flags, mtime);
+ ops->write_chat(PURPLE_CHAT_CONVERSATION(conv), msg);
+ else {
+ purple_conversation_write(conv,
+ purple_message_get_who(msg),
+ purple_message_get_contents(msg),
+ purple_message_get_flags(msg),
+ purple_message_get_time(msg));
+ }
}
void
diff --git a/libpurple/message.c b/libpurple/message.c
--- a/libpurple/message.c
+++ b/libpurple/message.c
@@ -142,6 +142,16 @@ purple_message_get_time(PurpleMessage *m
return priv->msgtime;
}
+void
+purple_message_set_flags(PurpleMessage *msg, PurpleMessageFlags flags)
+{
+ PurpleMessagePrivate *priv = PURPLE_MESSAGE_GET_PRIVATE(msg);
+
+ g_return_if_fail(priv != NULL);
+
+ priv->flags = flags;
+}
+
PurpleMessageFlags
purple_message_get_flags(PurpleMessage *msg)
{
diff --git a/libpurple/message.h b/libpurple/message.h
--- a/libpurple/message.h
+++ b/libpurple/message.h
@@ -110,6 +110,9 @@ purple_message_set_time(PurpleMessage *m
guint64
purple_message_get_time(PurpleMessage *msg);
+void
+purple_message_set_flags(PurpleMessage *msg, PurpleMessageFlags flags);
+
PurpleMessageFlags
purple_message_get_flags(PurpleMessage *msg);
diff --git a/libpurple/plugins/offlinemsg.c b/libpurple/plugins/offlinemsg.c
--- a/libpurple/plugins/offlinemsg.c
+++ b/libpurple/plugins/offlinemsg.c
@@ -105,8 +105,9 @@ record_pounce(OfflineMsg *offline)
g_object_set_data(G_OBJECT(conv), "plugin_pack:offlinemsg",
GINT_TO_POINTER(OFFLINE_MSG_YES));
- purple_conversation_write_message(conv, offline->who, offline->message,
- PURPLE_MESSAGE_SEND, time(NULL));
+ /* TODO: use a reference to a PurpleMessage */
+ purple_conversation_write_message(conv, purple_message_new(offline->who,
+ offline->message, PURPLE_MESSAGE_SEND));
discard_data(offline);
}
diff --git a/libpurple/plugins/perl/common/Conversation.xs b/libpurple/plugins/perl/common/Conversation.xs
--- a/libpurple/plugins/perl/common/Conversation.xs
+++ b/libpurple/plugins/perl/common/Conversation.xs
@@ -47,7 +47,6 @@ BOOT:
const_iv(ACTIVE_ONLY),
const_iv(NICK),
const_iv(NO_LOG),
- const_iv(WHISPER),
const_iv(ERROR),
const_iv(DELAYED),
const_iv(RAW),
More information about the Commits
mailing list