/pidgin/main: 09387009bb17: Drop PurpleConversationMessage in fa...
Tomasz Wasilczyk <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 09387009bb175c793ef60f6a4ee8d0e83b63f6b3 Author: Tomasz Wasilczyk <[email protected]> Date: 2014-06-13 23:42 +0200 Branch: default URL: https://hg.pidgin.im/pidgin/main/rev/09387009bb17 Description: Drop PurpleConversationMessage in favor of PurpleMessage diffstat: libpurple/conversation.c | 139 ++-------------------------------------------- libpurple/conversation.h | 79 +------------------------- libpurple/message.c | 16 ++-- libpurple/message.h | 16 ++-- pidgin/gtkconv.c | 52 ++++++----------- 5 files changed, 45 insertions(+), 257 deletions(-) diffs (truncated from 542 to 300 lines): diff --git a/libpurple/conversation.c b/libpurple/conversation.c --- a/libpurple/conversation.c +++ b/libpurple/conversation.c @@ -56,8 +56,7 @@ struct _PurpleConversationPrivate PurpleConversationUiOps *ui_ops; /* UI-specific operations. */ PurpleConnectionFlags features; /* The supported features */ - GList *message_history; /* Message history, as a GList of - PurpleConversationMessage's */ + GList *message_history; /* Message history, as a GList of PurpleMessages */ PurpleE2eeState *e2ee_state; /* End-to-end encryption state. */ @@ -67,19 +66,6 @@ struct _PurpleConversationPrivate PurpleSmileyList *remote_smileys; }; -/* - * Description of a conversation message - */ -struct _PurpleConversationMessage -{ - char *who; - char *what; - PurpleMessageFlags flags; - time_t when; - PurpleConversation *conv; - char *alias; -}; - /* GObject Property enums */ enum { @@ -216,58 +202,20 @@ open_log(PurpleConversation *conv) conv, time(NULL), NULL)); } -/* Functions that deal with PurpleConversationMessage */ +/* Functions that deal with PurpleMessage history */ static void -add_message_to_history(PurpleConversation *conv, const char *who, const char *alias, - const char *message, PurpleMessageFlags flags, time_t when) +add_message_to_history(PurpleConversation *conv, PurpleMessage *msg) { PurpleConversationPrivate *priv = PURPLE_CONVERSATION_GET_PRIVATE(conv); - PurpleConversationMessage *msg; - PurpleConnection *gc; g_return_if_fail(priv != NULL); + g_return_if_fail(msg != NULL); - gc = purple_account_get_connection(priv->account); - - if (flags & PURPLE_MESSAGE_SEND) { - const char *me = NULL; - if (gc) - me = purple_connection_get_display_name(gc); - if (!me) - me = purple_account_get_username(priv->account); - who = me; - } - - msg = g_new0(PurpleConversationMessage, 1); - PURPLE_DBUS_REGISTER_POINTER(msg, PurpleConversationMessage); - msg->who = g_strdup(who); - msg->alias = g_strdup(alias); - msg->flags = flags; - msg->what = g_strdup(message); - msg->when = when; - msg->conv = conv; - + g_object_ref(msg); priv->message_history = g_list_prepend(priv->message_history, msg); } -static void -free_conv_message(PurpleConversationMessage *msg) -{ - g_free(msg->who); - g_free(msg->alias); - g_free(msg->what); - PURPLE_DBUS_UNREGISTER_POINTER(msg); - g_free(msg); -} - -static void -message_history_free(GList *list) -{ - g_list_foreach(list, (GFunc)free_conv_message, NULL); - g_list_free(list); -} - /************************************************************************** * Conversation API **************************************************************************/ @@ -681,12 +629,7 @@ void ops->write_conv(conv, pmsg); } - add_message_to_history(conv, - (purple_message_get_flags(pmsg) & PURPLE_MESSAGE_SEND) ? purple_message_get_recipient(pmsg) : purple_message_get_author(pmsg), - purple_message_get_author_alias(pmsg), - purple_message_get_contents(pmsg), - purple_message_get_flags(pmsg), - purple_message_get_time(pmsg)); + add_message_to_history(conv, pmsg); purple_signal_emit(purple_conversations_get_handle(), (PURPLE_IS_IM_CONVERSATION(conv) ? "wrote-im-msg" : "wrote-chat-msg"), @@ -835,7 +778,7 @@ void purple_conversation_clear_message_h g_return_if_fail(priv != NULL); list = priv->message_history; - message_history_free(list); + g_list_free_full(list, g_object_unref); priv->message_history = NULL; purple_signal_emit(purple_conversations_get_handle(), @@ -851,74 +794,6 @@ GList *purple_conversation_get_message_h return priv->message_history; } -const char *purple_conversation_message_get_sender(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, NULL); - return msg->who; -} - -const char *purple_conversation_message_get_message(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, NULL); - return msg->what; -} - -PurpleMessageFlags purple_conversation_message_get_flags(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, 0); - return msg->flags; -} - -time_t purple_conversation_message_get_timestamp(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, 0); - return msg->when; -} - -const char *purple_conversation_message_get_alias(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, NULL); - return msg->alias; -} - -PurpleConversation *purple_conversation_message_get_conversation(const PurpleConversationMessage *msg) -{ - g_return_val_if_fail(msg, NULL); - return msg->conv; -} - -static PurpleConversationMessage * -copy_conv_message(PurpleConversationMessage *msg) -{ - PurpleConversationMessage *newmsg; - - g_return_val_if_fail(msg != NULL, NULL); - - newmsg = g_new(PurpleConversationMessage, 1); - PURPLE_DBUS_REGISTER_POINTER(newmsg, PurpleConversationMessage); - - *newmsg = *msg; - newmsg->who = g_strdup(msg->who); - newmsg->what = g_strdup(msg->what); - newmsg->alias = g_strdup(msg->alias); - - return newmsg; -} - -GType -purple_conversation_message_get_type(void) -{ - static GType type = 0; - - if (type == 0) { - type = g_boxed_type_register_static("PurpleConversationMessage", - (GBoxedCopyFunc)copy_conv_message, - (GBoxedFreeFunc)free_conv_message); - } - - return type; -} - void purple_conversation_set_ui_data(PurpleConversation *conv, gpointer ui_data) { g_return_if_fail(PURPLE_IS_CONVERSATION(conv)); diff --git a/libpurple/conversation.h b/libpurple/conversation.h --- a/libpurple/conversation.h +++ b/libpurple/conversation.h @@ -48,8 +48,6 @@ typedef struct _PurpleConversationClass typedef struct _PurpleConversationUiOps PurpleConversationUiOps; -typedef struct _PurpleConversationMessage PurpleConversationMessage; - /** * PurpleConversationUpdateType: * @PURPLE_CONVERSATION_UPDATE_ADD: The buddy associated with the @@ -556,9 +554,9 @@ void purple_conversation_update(PurpleCo * * Retrieve the message history of a conversation. * - * Returns: A GList of PurpleConversationMessage's. The must not modify the - * list or the data within. The list contains the newest message at - * the beginning, and the oldest message at the end. + * Returns: (transfer none): A GList of PurpleMessage's. You must not modify the + * list or the data within. The list contains the newest message at + * the beginning, and the oldest message at the end. */ GList *purple_conversation_get_message_history(PurpleConversation *conv); @@ -714,77 +712,6 @@ purple_conversation_get_remote_smileys(P */ gboolean purple_conversation_present_error(const char *who, PurpleAccount *account, const char *what); -/**************************************************************************/ -/* Conversation Message API */ -/**************************************************************************/ - -/** - * purple_conversation_message_get_type: - * - * Returns: The #GType for the #PurpleConversationMessage boxed structure. - */ -GType purple_conversation_message_get_type(void); - -/** - * purple_conversation_message_get_sender: - * @msg: A PurpleConversationMessage - * - * Get the sender from a PurpleConversationMessage - * - * Returns: The name of the sender of the message - */ -const char *purple_conversation_message_get_sender(const PurpleConversationMessage *msg); - -/** - * purple_conversation_message_get_message: - * @msg: A PurpleConversationMessage - * - * Get the message from a PurpleConversationMessage - * - * Returns: The name of the sender of the message - */ -const char *purple_conversation_message_get_message(const PurpleConversationMessage *msg); - -/** - * purple_conversation_message_get_flags: - * @msg: A PurpleConversationMessage - * - * Get the message-flags of a PurpleConversationMessage - * - * Returns: The message flags - */ -PurpleMessageFlags purple_conversation_message_get_flags(const PurpleConversationMessage *msg); - -/** - * purple_conversation_message_get_timestamp: - * @msg: A PurpleConversationMessage - * - * Get the timestamp of a PurpleConversationMessage - * - * Returns: The timestamp of the message - */ -time_t purple_conversation_message_get_timestamp(const PurpleConversationMessage *msg); - -/** - * purple_conversation_message_get_alias: - * @msg: A PurpleConversationMessage - * - * Get the alias from a PurpleConversationMessage - * - * Returns: The alias of the sender of the message - */ -const char *purple_conversation_message_get_alias(const PurpleConversationMessage *msg); - -/** - * purple_conversation_message_get_conversation: - * @msg: A PurpleConversationMessage - * - * Get the conversation associated with the PurpleConversationMessage - * - * Returns: The conversation - */ -PurpleConversation *purple_conversation_message_get_conversation(const PurpleConversationMessage *msg); - G_END_DECLS #endif /* _PURPLE_CONVERSATION_H_ */ diff --git a/libpurple/message.c b/libpurple/message.c --- a/libpurple/message.c +++ b/libpurple/message.c