/pidgin/main: 4318acee8ac6: Pulled PurpleContact out to it's own...

Gary Kramlich <[email protected]> Thu, 25 Aug 2016 23:54:12 -0400
Newsgroups gmane.comp.gnome.gaim.cvs
Message-ID <[email protected]>
Changeset: 4318acee8ac672ea95bc9bd7a2acbe207ee9da5d
Author:	 Gary Kramlich <[email protected]>
Date:	 2016-08-12 17:08 -0500
Branch:	 default
URL: https://hg.pidgin.im/pidgin/main/rev/4318acee8ac6

Description:

Pulled PurpleContact out to it's own file

diffstat:

 libpurple/Makefile.am      |    2 +
 libpurple/blistnodetypes.c |  352 ----------------------------------------
 libpurple/blistnodetypes.h |  130 +--------------
 libpurple/contact.c        |  388 +++++++++++++++++++++++++++++++++++++++++++++
 libpurple/contact.h        |  167 +++++++++++++++++++
 5 files changed, 559 insertions(+), 480 deletions(-)

diffs (truncated from 1138 to 300 lines):

diff --git a/libpurple/Makefile.am b/libpurple/Makefile.am
--- a/libpurple/Makefile.am
+++ b/libpurple/Makefile.am
@@ -57,6 +57,7 @@ purple_coresources = \
 	circularbuffer.c \
 	cmds.c \
 	connection.c \
+	contact.c \
 	conversation.c \
 	conversationtypes.c \
 	conversations.c \
@@ -143,6 +144,7 @@ purple_coreheaders = \
 	circularbuffer.h \
 	cmds.h \
 	connection.h \
+	contact.h \
 	conversation.h \
 	conversationtypes.h \
 	conversations.h \
diff --git a/libpurple/blistnodetypes.c b/libpurple/blistnodetypes.c
--- a/libpurple/blistnodetypes.c
+++ b/libpurple/blistnodetypes.c
@@ -30,11 +30,6 @@
 
 typedef struct _PurpleBuddyPrivate      PurpleBuddyPrivate;
 
-#define PURPLE_CONTACT_GET_PRIVATE(obj) \
-	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_CONTACT, PurpleContactPrivate))
-
-typedef struct _PurpleContactPrivate    PurpleContactPrivate;
-
 #define PURPLE_CHAT_GET_PRIVATE(obj) \
 	(G_TYPE_INSTANCE_GET_PRIVATE((obj), PURPLE_TYPE_CHAT, PurpleChatPrivate))
 
@@ -74,22 +69,6 @@ enum
 	BUDDY_PROP_LAST
 };
 
-/* Private data for a contact */
-struct _PurpleContactPrivate {
-	char *alias;                  /* The user-set alias of the contact  */
-	PurpleBuddy *priority_buddy;  /* The "top" buddy for this contact   */
-	gboolean priority_valid;      /* Is priority valid?                 */
-};
-
-/* Contact property enums */
-enum
-{
-	CONTACT_PROP_0,
-	CONTACT_PROP_ALIAS,
-	CONTACT_PROP_PRIORITY_BUDDY,
-	CONTACT_PROP_LAST
-};
-
 /* Private data for a chat node */
 struct _PurpleChatPrivate {
 	char *alias;              /* The display name of this chat.             */
@@ -112,10 +91,8 @@ enum
 };
 
 static PurpleBlistNode     *blistnode_parent_class;
-static PurpleCountingNode  *counting_parent_class;
 
 static GParamSpec *bd_properties[BUDDY_PROP_LAST];
-static GParamSpec *co_properties[CONTACT_PROP_LAST];
 static GParamSpec *ch_properties[CHAT_PROP_LAST];
 
 static gboolean
@@ -762,335 +739,6 @@ purple_buddy_new(PurpleAccount *account,
 }
 
 /**************************************************************************/
-/* Contact API                                                            */
-/**************************************************************************/
-
-static void
-purple_contact_compute_priority_buddy(PurpleContact *contact)
-{
-	PurpleBlistNode *bnode;
-	PurpleBuddy *new_priority = NULL;
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	g_return_if_fail(priv != NULL);
-
-	priv->priority_buddy = NULL;
-	for (bnode = PURPLE_BLIST_NODE(contact)->child;
-			bnode != NULL;
-			bnode = bnode->next)
-	{
-		PurpleBuddy *buddy;
-
-		if (!PURPLE_IS_BUDDY(bnode))
-			continue;
-
-		buddy = PURPLE_BUDDY(bnode);
-		if (new_priority == NULL)
-		{
-			new_priority = buddy;
-			continue;
-		}
-
-		if (purple_account_is_connected(purple_buddy_get_account(buddy)))
-		{
-			int cmp = 1;
-			if (purple_account_is_connected(purple_buddy_get_account(new_priority)))
-				cmp = purple_buddy_presence_compare(
-						PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(new_priority)),
-						PURPLE_BUDDY_PRESENCE(purple_buddy_get_presence(buddy)));
-
-			if (cmp > 0 || (cmp == 0 &&
-			                purple_prefs_get_bool("/purple/contact/last_match")))
-			{
-				new_priority = buddy;
-			}
-		}
-	}
-
-	priv->priority_buddy = new_priority;
-	priv->priority_valid = TRUE;
-
-	g_object_notify_by_pspec(G_OBJECT(contact),
-			co_properties[CONTACT_PROP_PRIORITY_BUDDY]);
-}
-
-PurpleGroup *
-purple_contact_get_group(const PurpleContact *contact)
-{
-	g_return_val_if_fail(PURPLE_IS_CONTACT(contact), NULL);
-
-	return PURPLE_GROUP(PURPLE_BLIST_NODE(contact)->parent);
-}
-
-void
-purple_contact_set_alias(PurpleContact *contact, const char *alias)
-{
-	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-	PurpleIMConversation *im;
-	PurpleBlistNode *bnode;
-	char *old_alias;
-	char *new_alias = NULL;
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	g_return_if_fail(priv != NULL);
-
-	if ((alias != NULL) && (*alias != '\0'))
-		new_alias = purple_utf8_strip_unprintables(alias);
-
-	if (!purple_strings_are_different(priv->alias, new_alias)) {
-		g_free(new_alias);
-		return;
-	}
-
-	old_alias = priv->alias;
-
-	if ((new_alias != NULL) && (*new_alias != '\0'))
-		priv->alias = new_alias;
-	else {
-		priv->alias = NULL;
-		g_free(new_alias); /* could be "\0" */
-	}
-
-	g_object_notify_by_pspec(G_OBJECT(contact),
-			co_properties[CONTACT_PROP_ALIAS]);
-
-	if (ops) {
-		if (ops->save_node)
-			ops->save_node(PURPLE_BLIST_NODE(contact));
-		if (ops->update)
-			ops->update(purple_blist_get_buddy_list(), PURPLE_BLIST_NODE(contact));
-	}
-
-	for(bnode = PURPLE_BLIST_NODE(contact)->child; bnode != NULL; bnode = bnode->next)
-	{
-		PurpleBuddy *buddy = PURPLE_BUDDY(bnode);
-
-		im = purple_conversations_find_im_with_account(purple_buddy_get_name(buddy),
-				purple_buddy_get_account(buddy));
-		if (im)
-			purple_conversation_autoset_title(PURPLE_CONVERSATION(im));
-	}
-
-	purple_signal_emit(purple_blist_get_handle(), "blist-node-aliased",
-					 contact, old_alias);
-	g_free(old_alias);
-}
-
-const char *purple_contact_get_alias(PurpleContact* contact)
-{
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	g_return_val_if_fail(priv != NULL, NULL);
-
-	if (priv->alias)
-		return priv->alias;
-
-	return purple_buddy_get_alias(purple_contact_get_priority_buddy(contact));
-}
-
-gboolean purple_contact_on_account(PurpleContact *c, PurpleAccount *account)
-{
-	PurpleBlistNode *bnode, *cnode = (PurpleBlistNode *) c;
-
-	g_return_val_if_fail(PURPLE_IS_CONTACT(c), FALSE);
-	g_return_val_if_fail(PURPLE_IS_ACCOUNT(account), FALSE);
-
-	for (bnode = cnode->child; bnode; bnode = bnode->next) {
-		PurpleBuddy *buddy;
-
-		if (! PURPLE_IS_BUDDY(bnode))
-			continue;
-
-		buddy = (PurpleBuddy *)bnode;
-		if (purple_buddy_get_account(buddy) == account)
-			return TRUE;
-	}
-	return FALSE;
-}
-
-void purple_contact_invalidate_priority_buddy(PurpleContact *contact)
-{
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	g_return_if_fail(priv != NULL);
-
-	priv->priority_valid = FALSE;
-}
-
-PurpleBuddy *purple_contact_get_priority_buddy(PurpleContact *contact)
-{
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	g_return_val_if_fail(priv != NULL, NULL);
-
-	if (!priv->priority_valid)
-		purple_contact_compute_priority_buddy(contact);
-
-	return priv->priority_buddy;
-}
-
-void purple_contact_merge(PurpleContact *source, PurpleBlistNode *node)
-{
-	PurpleBlistNode *sourcenode = (PurpleBlistNode*)source;
-	PurpleBlistNode *prev, *cur, *next;
-	PurpleContact *target;
-
-	g_return_if_fail(PURPLE_IS_CONTACT(source));
-	g_return_if_fail(PURPLE_IS_BLIST_NODE(node));
-
-	if (PURPLE_IS_CONTACT(node)) {
-		target = (PurpleContact *)node;
-		prev = _purple_blist_get_last_child(node);
-	} else if (PURPLE_IS_BUDDY(node)) {
-		target = (PurpleContact *)node->parent;
-		prev = node;
-	} else {
-		return;
-	}
-
-	if (source == target || !target)
-		return;
-
-	next = sourcenode->child;
-
-	while (next) {
-		cur = next;
-		next = cur->next;
-		if (PURPLE_IS_BUDDY(cur)) {
-			purple_blist_add_buddy((PurpleBuddy *)cur, target, NULL, prev);
-			prev = cur;
-		}
-	}
-}
-
-/**************************************************************************
- * GObject code for PurpleContact
- **************************************************************************/
-
-/* Set method for GObject properties */
-static void
-purple_contact_set_property(GObject *obj, guint param_id, const GValue *value,
-		GParamSpec *pspec)
-{
-	PurpleContact *contact = PURPLE_CONTACT(obj);
-
-	switch (param_id) {
-		case CONTACT_PROP_ALIAS:
-			purple_contact_set_alias(contact, g_value_get_string(value));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
-	}
-}
-
-/* Get method for GObject properties */
-static void
-purple_contact_get_property(GObject *obj, guint param_id, GValue *value,
-		GParamSpec *pspec)
-{
-	PurpleContact *contact = PURPLE_CONTACT(obj);

_______________________________________________
Commits mailing list
[email protected]
https://pidgin.im/cgi-bin/mailman/listinfo/commits