diff src/account.c @ 10204:393f85d9f8dd

[gaim-migrate @ 11325] I moved some code from account.c to status.c. It's better there. This shouldn't hurt anything. In other news, the status API makes me hot. What makes you hot? Something that you want but you haven't got MartinFowlerSaysWhat? committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Fri, 19 Nov 2004 03:08:27 +0000
parents 760e690a5f30
children 56b53036e48c
line wrap: on
line diff
--- a/src/account.c	Thu Nov 18 17:05:40 2004 +0000
+++ b/src/account.c	Fri Nov 19 03:08:27 2004 +0000
@@ -553,11 +553,7 @@
 						gboolean active, ...)
 {
 	GaimStatus *status;
-	gboolean changed = FALSE;
 	va_list args;
-	const char *id, *string_data;
-	int int_data;
-	gboolean boolean_data;
 
 	g_return_if_fail(account   != NULL);
 	g_return_if_fail(status_id != NULL);
@@ -573,62 +569,9 @@
 		return;
 	}
 
-	if (!active && gaim_status_is_exclusive(status))
-	{
-		gaim_debug(GAIM_DEBUG_ERROR, "accounts",
-				   "Cannot deactivate an exclusive status.\n");
-		return;
-	}
-
-	if (gaim_status_is_active(status) != active)
-		changed = TRUE;
-
-	/* Set any attributes */
 	va_start(args, active);
-	while ((id = va_arg(args, const char *)) != NULL)
-	{
-		GaimValue *value;
-		value = gaim_status_get_attr_value(status, id);
-		if (value->type == GAIM_TYPE_STRING)
-		{
-			string_data = va_arg(args, const char *);
-			if (((string_data == NULL) && (value->data.string_data == NULL)) ||
-				((string_data != NULL) && (value->data.string_data != NULL) &&
-				!strcmp(string_data, value->data.string_data)))
-			{
-				continue;
-			}
-			gaim_status_set_attr_string(status, id, string_data);
-			changed = TRUE;
-		}
-		else if (value->type == GAIM_TYPE_INT)
-		{
-			int_data = va_arg(args, int);
-			if (int_data == value->data.int_data)
-				continue;
-			gaim_status_set_attr_int(status, id, int_data);
-			changed = TRUE;
-		}
-		else if (value->type == GAIM_TYPE_BOOLEAN)
-		{
-			boolean_data = va_arg(args, gboolean);
-			if (boolean_data == value->data.boolean_data)
-				continue;
-			gaim_status_set_attr_int(status, id, boolean_data);
-			changed = TRUE;
-		}
-		else
-		{
-			/* We don't know what the data is--skip over it */
-			va_arg(args, void *);
-		}
-	}
+	gaim_status_set_active_with_attrs(status, active, args);
 	va_end(args);
-
-	if (!changed)
-		return;
-
-	gaim_status_set_active(status, active);
 }
 
 void