pidgin: ce554d1d: Hide struct _PurpleConvChatBuddy.
andrew.victor at mxit.com
andrew.victor at mxit.com
Sat Oct 1 09:55:55 EDT 2011
----------------------------------------------------------------------
Revision: ce554d1de6a712cc7aa7ff15a348c2711071d04f
Parent: 3c4e50a528643abc97851d745a3eb8b0e24341ba
Author: andrew.victor at mxit.com
Date: 10/01/11 09:03:38
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/ce554d1de6a712cc7aa7ff15a348c2711071d04f
Changelog:
Hide struct _PurpleConvChatBuddy.
Add accessor methods:
* purple_conv_chat_cb_get_alias
* purple_conv_chat_cb_get_flags
* purple_conv_chat_cb_is_buddy
* purple_conv_chat_cb_get_ui_data
* purple_conv_chat_cb_set_ui_data
Changes against parent 3c4e50a528643abc97851d745a3eb8b0e24341ba
patched ChangeLog.API
patched finch/gntconv.c
patched libpurple/conversation.c
patched libpurple/conversation.h
patched libpurple/protocols/irc/msgs.c
patched pidgin/gtkconv.c
-------------- next part --------------
============================================================
--- libpurple/conversation.c 5469961160cd0730d899b411fd4d21390345bfcb
+++ libpurple/conversation.c 8b3d454213792721d08a56f753a90929cbf5cfeb
@@ -70,6 +70,47 @@ struct _PurpleConvIm
PurpleBuddyIcon *icon; /**< The buddy icon. */
};
+/**
+ * Data for "Chat Buddies"
+ */
+struct _PurpleConvChatBuddy
+{
+ /** The chat participant's name in the chat. */
+ char *name;
+
+ /** The chat participant's alias, if known; @a NULL otherwise. */
+ char *alias;
+
+ /**
+ * A string by which this buddy will be sorted, or @c NULL if the
+ * buddy should be sorted by its @c name. (This is currently always
+ * @c NULL.
+ */
+ char *alias_key;
+
+ /**
+ * @a TRUE if this chat participant is on the buddy list;
+ * @a FALSE otherwise.
+ */
+ gboolean buddy;
+
+ /**
+ * A bitwise OR of flags for this participant, such as whether they
+ * are a channel operator.
+ */
+ PurpleConvChatBuddyFlags flags;
+
+ /**
+ * A hash table of attributes about the user, such as real name,
+ * user\@host, etc.
+ */
+ GHashTable *attributes;
+
+ /** The UI can put whatever it wants here. */
+ gpointer ui_data;
+};
+
+
static GList *conversations = NULL;
static GList *ims = NULL;
static GList *chats = NULL;
@@ -2219,14 +2260,51 @@ purple_conv_chat_cb_destroy(PurpleConvCh
g_free(cb);
}
+void purple_conv_chat_cb_set_ui_data(PurpleConvChatBuddy *cb, gpointer ui_data)
+{
+ g_return_if_fail(cb != NULL);
+
+ cb->ui_data = ui_data;
+}
+
+gpointer purple_conv_chat_cb_get_ui_data(const PurpleConvChatBuddy *cb)
+{
+ g_return_val_if_fail(cb != NULL, NULL);
+
+ return cb->ui_data;
+}
+
const char *
-purple_conv_chat_cb_get_name(PurpleConvChatBuddy *cb)
+purple_conv_chat_cb_get_alias(const PurpleConvChatBuddy *cb)
{
g_return_val_if_fail(cb != NULL, NULL);
+ return cb->alias;
+}
+
+const char *
+purple_conv_chat_cb_get_name(const PurpleConvChatBuddy *cb)
+{
+ g_return_val_if_fail(cb != NULL, NULL);
+
return cb->name;
}
+PurpleConvChatBuddyFlags
+purple_conv_chat_cb_get_flags(const PurpleConvChatBuddy *cb)
+{
+ g_return_val_if_fail(cb != NULL, PURPLE_CBFLAGS_NONE);
+
+ return cb->flags;
+}
+
+gboolean purple_conv_chat_cb_is_buddy(const PurpleConvChatBuddy *cb)
+{
+ g_return_val_if_fail(cb != NULL, FALSE);
+
+ return cb->buddy;
+}
+
const char *
purple_conv_chat_cb_get_attribute(PurpleConvChatBuddy *cb, const char *key)
{
============================================================
--- libpurple/conversation.h d800aaf793a599867dc82b3ace4311e5ef1021e8
+++ libpurple/conversation.h 44e5eee5936d9cf44746b6a4db49494d550f7aa7
@@ -250,46 +250,6 @@ struct _PurpleConversationUiOps
};
/**
- * Data for "Chat Buddies"
- */
-struct _PurpleConvChatBuddy
-{
- /** The chat participant's name in the chat. */
- char *name;
-
- /** The chat participant's alias, if known; @a NULL otherwise. */
- char *alias;
-
- /**
- * A string by which this buddy will be sorted, or @c NULL if the
- * buddy should be sorted by its @c name. (This is currently always
- * @c NULL.
- */
- char *alias_key;
-
- /**
- * @a TRUE if this chat participant is on the buddy list;
- * @a FALSE otherwise.
- */
- gboolean buddy;
-
- /**
- * A bitwise OR of flags for this participant, such as whether they
- * are a channel operator.
- */
- PurpleConvChatBuddyFlags flags;
-
- /**
- * A hash table of attributes about the user, such as real name,
- * user\@host, etc.
- */
- GHashTable *attributes;
-
- /** The UI can put whatever it wants here. */
- gpointer ui_data;
-};
-
-/**
* Description of a conversation message
*/
struct _PurpleConvMessage
@@ -1364,15 +1324,61 @@ PurpleConvChatBuddy *purple_conv_chat_cb
PurpleConvChatBuddy *purple_conv_chat_cb_find(PurpleConvChat *chat, const char *name);
/**
+ * Set the UI data associated with this chat buddy.
+ *
+ * @param cb The chat buddy
+ * @param ui_data A pointer to associate with this chat buddy.
+ */
+void purple_conv_chat_cb_set_ui_data(PurpleConvChatBuddy *cb, gpointer ui_data);
+
+/**
+ * Get the UI data associated with this chat buddy.
+ *
+ * @param cb The chat buddy.
+ *
+ * @return The UI data associated with this chat buddy. This is a
+ * convenience field provided to the UIs--it is not
+ * used by the libpurple core.
+ */
+gpointer purple_conv_chat_cb_get_ui_data(const PurpleConvChatBuddy *conv);
+
+/**
+ * Get the alias of a chat buddy
+ *
+ * @param cb The chat buddy.
+ *
+ * @return The alias of the chat buddy.
+ */
+const char *purple_conv_chat_cb_get_alias(const PurpleConvChatBuddy *cb);
+
+/**
* Get the name of a chat buddy
*
* @param cb The chat buddy.
*
* @return The name of the chat buddy.
*/
-const char *purple_conv_chat_cb_get_name(PurpleConvChatBuddy *cb);
+const char *purple_conv_chat_cb_get_name(const PurpleConvChatBuddy *cb);
/**
+ * Get the flags of a chat buddy.
+ *
+ * @param cb The chat buddy.
+ *
+ * @return The flags of the chat buddy.
+ */
+PurpleConvChatBuddyFlags purple_conv_chat_cb_get_flags(const PurpleConvChatBuddy *cb);
+
+/**
+ * Indicates if this chat buddy is on the buddy list.
+ *
+ * @param cb The chat buddy.
+ *
+ * @return TRUE if the chat buddy is on the buddy list.
+ */
+gboolean purple_conv_chat_cb_is_buddy(const PurpleConvChatBuddy *cb);
+
+/**
* Destroys a chat buddy
*
* @param cb The chat buddy to destroy
============================================================
--- pidgin/gtkconv.c 89a4e4e8367c49b3cf9b9ceb5e639196ae987892
+++ pidgin/gtkconv.c 55f06c1a76c7f55c03bb03f6a69ce3e4ea381c4f
@@ -4027,10 +4027,11 @@ deleting_chat_buddy_cb(PurpleConvChatBud
static void
deleting_chat_buddy_cb(PurpleConvChatBuddy *cb)
{
- if (cb->ui_data) {
- GtkTreeRowReference *ref = cb->ui_data;
+ GtkTreeRowReference *ref = purple_conv_chat_cb_get_ui_data(cb);
+
+ if (ref) {
gtk_tree_row_reference_free(ref);
- cb->ui_data = NULL;
+ purple_conv_chat_cb_set_ui_data(cb, NULL);
}
}
@@ -4049,13 +4050,14 @@ add_chat_buddy_common(PurpleConversation
GtkTreeIter iter;
gboolean is_me = FALSE;
gboolean is_buddy;
- gchar *tmp, *alias_key, *name, *alias;
+ const gchar *name, *alias;
+ gchar *tmp, *alias_key;
PurpleConvChatBuddyFlags flags;
GdkColor *color = NULL;
- alias = cb->alias;
- name = cb->name;
- flags = cb->flags;
+ alias = purple_conv_chat_cb_get_alias(cb);
+ name = purple_conv_chat_cb_get_name(cb);
+ flags = purple_conv_chat_cb_get_flags(cb);
chat = PURPLE_CONV_CHAT(conv);
gtkconv = PIDGIN_CONVERSATION(conv);
@@ -4073,7 +4075,7 @@ add_chat_buddy_common(PurpleConversation
if (!strcmp(purple_conv_chat_get_nick(chat), purple_normalize(conv->account, old_name != NULL ? old_name : name)))
is_me = TRUE;
- is_buddy = cb->buddy;
+ is_buddy = purple_conv_chat_cb_is_buddy(cb);
tmp = g_utf8_casefold(alias, -1);
alias_key = g_utf8_collate_key(tmp, -1);
@@ -4114,13 +4116,13 @@ add_chat_buddy_common(PurpleConversation
CHAT_USERS_WEIGHT_COLUMN, is_buddy ? PANGO_WEIGHT_BOLD : PANGO_WEIGHT_NORMAL,
-1);
- if (cb->ui_data) {
- GtkTreeRowReference *ref = cb->ui_data;
+ if (purple_conv_chat_cb_get_ui_data(cb)) {
+ GtkTreeRowReference *ref = purple_conv_chat_cb_get_ui_data(cb);
gtk_tree_row_reference_free(ref);
}
newpath = gtk_tree_model_get_path(tm, &iter);
- cb->ui_data = gtk_tree_row_reference_new(tm, newpath);
+ purple_conv_chat_cb_set_ui_data(cb, gtk_tree_row_reference_new(tm, newpath));
gtk_tree_path_free(newpath);
if (is_me && color)
@@ -4150,7 +4152,7 @@ tab_complete_process_item(int *most_matc
*/
static void
tab_complete_process_item(int *most_matched, const char *entered, gsize entered_bytes, char **partial, char *nick_partial,
- GList **matches, char *name)
+ GList **matches, const char *name)
{
memcpy(nick_partial, name, entered_bytes);
if (purple_utf8_strcasecmp(nick_partial, entered))
@@ -4272,7 +4274,7 @@ tab_complete(PurpleConversation *conv)
/* Users */
for (; l != NULL; l = l->next) {
tab_complete_process_item(&most_matched, entered, entered_bytes, &partial, nick_partial,
- &matches, ((PurpleConvChatBuddy *)l->data)->name);
+ &matches, purple_conv_chat_cb_get_name((PurpleConvChatBuddy *)l->data));
}
@@ -6445,7 +6447,7 @@ static gboolean get_iter_from_chatbuddy(
static gboolean get_iter_from_chatbuddy(PurpleConvChatBuddy *cb, GtkTreeIter *iter)
{
- GtkTreeRowReference *ref = cb->ui_data;
+ GtkTreeRowReference *ref = purple_conv_chat_cb_get_ui_data(cb);
GtkTreePath *path;
GtkTreeModel *model;
@@ -6531,11 +6533,11 @@ pidgin_conv_chat_rename_user(PurpleConve
old_cbuddy = purple_conv_chat_cb_find(chat, old_name);
if (get_iter_from_chatbuddy(old_cbuddy, &iter)) {
- GtkTreeRowReference *ref = old_cbuddy->ui_data;
+ GtkTreeRowReference *ref = purple_conv_chat_cb_get_ui_data(old_cbuddy);
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
gtk_tree_row_reference_free(ref);
- old_cbuddy->ui_data = NULL;
+ purple_conv_chat_cb_set_ui_data(old_cbuddy, NULL);
}
if ((tag = get_buddy_tag(conv, old_name, 0, FALSE)))
@@ -6629,10 +6631,10 @@ pidgin_conv_chat_update_user(PurpleConve
cbuddy = purple_conv_chat_cb_find(chat, user);
if (get_iter_from_chatbuddy(cbuddy, &iter)) {
- GtkTreeRowReference *ref = cbuddy->ui_data;
+ GtkTreeRowReference *ref = purple_conv_chat_cb_get_ui_data(cbuddy);
gtk_list_store_remove(GTK_LIST_STORE(model), &iter);
gtk_tree_row_reference_free(ref);
- cbuddy->ui_data = NULL;
+ purple_conv_chat_cb_set_ui_data(cbuddy, NULL);
}
if (cbuddy)
============================================================
--- libpurple/protocols/irc/msgs.c 5af44182adf1b67f71eb62c9ca0dcc769865a661
+++ libpurple/protocols/irc/msgs.c a2fbe86bbba36e9a29c40bc13ad713b14159abda
@@ -457,12 +457,12 @@ void irc_msg_who(struct irc_conn *irc, c
g_free(userhost);
g_free(realname);
- flags = cb->flags;
+ flags = purple_conv_chat_cb_get_flags(cb);
if (args[6][0] == 'G' && !(flags & PURPLE_CBFLAGS_AWAY)) {
- purple_conv_chat_user_set_flags(chat, cb->name, flags | PURPLE_CBFLAGS_AWAY);
+ purple_conv_chat_user_set_flags(chat, purple_conv_chat_cb_get_name(cb), flags | PURPLE_CBFLAGS_AWAY);
} else if(args[6][0] == 'H' && (flags & PURPLE_CBFLAGS_AWAY)) {
- purple_conv_chat_user_set_flags(chat, cb->name, flags & ~PURPLE_CBFLAGS_AWAY);
+ purple_conv_chat_user_set_flags(chat, purple_conv_chat_cb_get_name(cb), flags & ~PURPLE_CBFLAGS_AWAY);
}
}
}
============================================================
--- ChangeLog.API 7f7e3ad46d13852aca59c87252353911da1da284
+++ ChangeLog.API f13a2b766148dee579d054eede6d4bf12538693c
@@ -4,6 +4,11 @@ version 3.0.0 (??/??/????):
libpurple:
Added:
* pidgin_create_webview
+ * purple_conv_chat_cb_get_alias
+ * purple_conv_chat_cb_get_flags
+ * purple_conv_chat_cb_is_buddy
+ * purple_conv_chat_cb_get_ui_data
+ * purple_conv_chat_cb_set_ui_data
* purple_conversation_get_ui_data
* purple_conversation_set_ui_data
* purple_notify_searchresult_column_is_visible
@@ -188,6 +193,7 @@ version 3.0.0 (??/??/????):
* struct _PidginImPane
* struct _PurpleAttentionType
* struct _PurpleConvChat
+ * struct _PurpleConvChatBuddy
* struct _PurpleConvIm
* struct _PurpleMenuAction
* struct _PurplePounce
============================================================
--- finch/gntconv.c b425f1c8d2bbd6eeb4b57fdf07a5e9a6bdc875e9
+++ finch/gntconv.c 98aff9b4030d0024b30284b7234049f7d135a8b3
@@ -1084,10 +1084,10 @@ finch_chat_add_users(PurpleConversation
for (iter = users; iter; iter = iter->next)
{
PurpleConvChatBuddy *cbuddy = iter->data;
- char *str;
+ const char *str;
- if ((str = cbuddy->alias) == NULL)
- str = cbuddy->name;
+ if ((str = purple_conv_chat_cb_get_alias(cbuddy)) == NULL)
+ str = purple_conv_chat_cb_get_name(cbuddy);
g_string_append_printf(string, "[ %s ]", str);
}
@@ -1100,10 +1100,10 @@ finch_chat_add_users(PurpleConversation
{
PurpleConvChatBuddy *cbuddy = users->data;
GntTree *tree = GNT_TREE(ggc->u.chat->userlist);
- gnt_entry_add_suggest(entry, cbuddy->name);
- gnt_entry_add_suggest(entry, cbuddy->alias);
- gnt_tree_add_row_after(tree, g_strdup(cbuddy->name),
- gnt_tree_create_row(tree, chat_flag_text(cbuddy->flags), cbuddy->alias), NULL, NULL);
+ gnt_entry_add_suggest(entry, purple_conv_chat_cb_get_name(cbuddy));
+ gnt_entry_add_suggest(entry, purple_conv_chat_cb_get_alias(cbuddy));
+ gnt_tree_add_row_after(tree, g_strdup(purple_conv_chat_cb_get_name(cbuddy)),
+ gnt_tree_create_row(tree, chat_flag_text(purple_conv_chat_cb_get_flags(cbuddy)), purple_conv_chat_cb_get_alias(cbuddy)), NULL, NULL);
}
}
@@ -1122,7 +1122,7 @@ finch_chat_rename_user(PurpleConversatio
gnt_entry_add_suggest(entry, new_n);
gnt_entry_add_suggest(entry, new_a);
gnt_tree_add_row_after(tree, g_strdup(new_n),
- gnt_tree_create_row(tree, chat_flag_text(cb->flags), new_a), NULL, NULL);
+ gnt_tree_create_row(tree, chat_flag_text(purple_conv_chat_cb_get_flags(cb)), new_a), NULL, NULL);
}
static void
@@ -1143,7 +1143,7 @@ finch_chat_update_user(PurpleConversatio
{
PurpleConvChatBuddy *cb = purple_conv_chat_cb_find(PURPLE_CONV_CHAT(conv), user);
FinchConv *ggc = FINCH_CONV(conv);
- gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(cb->flags));
+ gnt_tree_change_text(GNT_TREE(ggc->u.chat->userlist), (gpointer)user, 0, chat_flag_text(purple_conv_chat_cb_get_flags(cb)));
}
static void
More information about the Commits
mailing list