libpurple/blistnodetypes.c

changeset 37946
4318acee8ac6
parent 37944
e42e19eba593
child 37947
12ce09a23094
--- a/libpurple/blistnodetypes.c	Fri Aug 12 16:52:01 2016 -0500
+++ b/libpurple/blistnodetypes.c	Fri Aug 12 17:08:19 2016 -0500
@@ -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 @@
 	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 @@
 };
 
 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 @@
 }
 
 /**************************************************************************/
-/* 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);
-	PurpleContactPrivate *priv = PURPLE_CONTACT_GET_PRIVATE(contact);
-
-	switch (param_id) {
-		case CONTACT_PROP_ALIAS:
-			g_value_set_string(value, priv->alias);
-			break;
-		case CONTACT_PROP_PRIORITY_BUDDY:
-			g_value_set_object(value, purple_contact_get_priority_buddy(contact));
-			break;
-		default:
-			G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, param_id, pspec);
-			break;
-	}
-}
-
-/* GObject initialization function */
-static void
-purple_contact_init(GTypeInstance *instance, gpointer klass)
-{
-	PurpleContact *contact = PURPLE_CONTACT(instance);
-	PurpleBlistUiOps *ops = purple_blist_get_ui_ops();
-
-	if (ops && ops->new_node)
-		ops->new_node(PURPLE_BLIST_NODE(contact));
-
-	PURPLE_DBUS_REGISTER_POINTER(contact, PurpleContact);
-}
-
-/* GObject finalize function */
-static void
-purple_contact_finalize(GObject *object)
-{
-	g_free(PURPLE_CONTACT_GET_PRIVATE(object)->alias);
-
-	PURPLE_DBUS_UNREGISTER_POINTER(object);
-
-	G_OBJECT_CLASS(counting_parent_class)->finalize(object);
-}
-
-/* Class initializer function */
-static void purple_contact_class_init(PurpleContactClass *klass)
-{
-	GObjectClass *obj_class = G_OBJECT_CLASS(klass);
-
-	counting_parent_class = g_type_class_peek_parent(klass);
-
-	obj_class->finalize = purple_contact_finalize;
-
-	/* Setup properties */
-	obj_class->get_property = purple_contact_get_property;
-	obj_class->set_property = purple_contact_set_property;
-
-	g_type_class_add_private(klass, sizeof(PurpleContactPrivate));
-
-	co_properties[CONTACT_PROP_ALIAS] = g_param_spec_string("alias", "Alias",
-				"The alias for the contact.", NULL,
-				G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
-
-	co_properties[CONTACT_PROP_PRIORITY_BUDDY] = g_param_spec_object(
-				"priority-buddy",
-				"Priority buddy", "The priority buddy of the contact.",
-				PURPLE_TYPE_BUDDY, G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
-
-	g_object_class_install_properties(obj_class, CONTACT_PROP_LAST,
-				co_properties);
-}
-
-GType
-purple_contact_get_type(void)
-{
-	static GType type = 0;
-
-	if(type == 0) {
-		static const GTypeInfo info = {
-			sizeof(PurpleContactClass),
-			NULL,
-			NULL,
-			(GClassInitFunc)purple_contact_class_init,
-			NULL,
-			NULL,
-			sizeof(PurpleContact),
-			0,
-			(GInstanceInitFunc)purple_contact_init,
-			NULL,
-		};
-
-		type = g_type_register_static(PURPLE_TYPE_COUNTING_NODE,
-				"PurpleContact",
-				&info, 0);
-	}
-
-	return type;
-}
-
-PurpleContact *
-purple_contact_new(void)
-{
-	return g_object_new(PURPLE_TYPE_CONTACT, NULL);
-}
-
-/**************************************************************************/
 /* Chat API                                                               */
 /**************************************************************************/
 

mercurial