diff src/savedstatuses.c @ 10419:c9b1f3fac753

[gaim-migrate @ 11670] Added some GaimStatusPrimitive<-->text mapping functions Renamed the GaimStatusSaved data types to GaimSavedStatus Modifying a status will now bring up an editor thing with the correct values set committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Sun, 26 Dec 2004 02:03:14 +0000
parents bed2c96bc1fb
children 854c972ea863
line wrap: on
line diff
--- a/src/savedstatuses.c	Sun Dec 26 00:46:26 2004 +0000
+++ b/src/savedstatuses.c	Sun Dec 26 02:03:14 2004 +0000
@@ -42,22 +42,22 @@
  * are fully backward compatible.  The new status API just
  * adds the optional sub-statuses to the XML file.
  */
-struct _GaimStatusSaved
+struct _GaimSavedStatus
 {
 	char *title;
 	GaimStatusPrimitive type;
 	char *message;
 
-	GList *substatuses;      /**< A list of GaimStatusSavedSub's. */
+	GList *substatuses;      /**< A list of GaimSavedStatusSub's. */
 };
 
 /*
  * TODO: If an account is deleted, need to also delete any associated
- *       GaimStatusSavedSub's.
+ *       GaimSavedStatusSub's.
  * TODO: If a GaimStatusType is deleted, need to also delete any
- *       associated GaimStatusSavedSub's?
+ *       associated GaimSavedStatusSub's?
  */
-struct _GaimStatusSavedSub
+struct _GaimSavedStatusSub
 {
 	GaimAccount *account;
 	const GaimStatusType *type;
@@ -72,39 +72,8 @@
 * Helper functions
 **************************************************************************/
 
-/**
- * Elements of this array correspond to the GaimStatusPrimitive
- * enumeration.
- */
-static const char *primitive_names[] =
-{
-	"unset",
-	"offline",
-	"available",
-	"unavailable",
-	"hidden",
-	"away",
-	"extended_away"
-};
-
-static GaimStatusPrimitive
-gaim_primitive_get_type(const char *name)
-{
-	int i;
-
-	g_return_val_if_fail(name != NULL, GAIM_STATUS_UNSET);
-
-	for (i = 0; i < GAIM_STATUS_NUM_PRIMITIVES; i++)
-	{
-		if (!strcmp(name, primitive_names[i]))
-			return i;
-	}
-
-	return GAIM_STATUS_UNSET;
-}
-
 static void
-free_statussavedsub(GaimStatusSavedSub *substatus)
+free_statussavedsub(GaimSavedStatusSub *substatus)
 {
 	g_return_if_fail(substatus != NULL);
 
@@ -113,7 +82,7 @@
 }
 
 static void
-free_statussaved(GaimStatusSaved *status)
+free_statussaved(GaimSavedStatus *status)
 {
 	g_return_if_fail(status != NULL);
 
@@ -122,7 +91,7 @@
 
 	while (status->substatuses != NULL)
 	{
-		GaimStatusSavedSub *substatus = status->substatuses->data;
+		GaimSavedStatusSub *substatus = status->substatuses->data;
 		status->substatuses = g_list_remove(status->substatuses, substatus);
 		free_statussavedsub(substatus);
 	}
@@ -136,7 +105,7 @@
 **************************************************************************/
 
 static xmlnode *
-substatus_to_xmlnode(GaimStatusSavedSub *substatus)
+substatus_to_xmlnode(GaimSavedStatusSub *substatus)
 {
 	xmlnode *node, *child;
 
@@ -164,7 +133,7 @@
 }
 
 static xmlnode *
-status_to_xmlnode(GaimStatusSaved *status)
+status_to_xmlnode(GaimSavedStatus *status)
 {
 	xmlnode *node, *child;
 	GList *cur;
@@ -173,7 +142,7 @@
 	xmlnode_set_attrib(node, "name", status->title);
 
 	child = xmlnode_new("state");
-	xmlnode_insert_data(child, primitive_names[status->type], -1);
+	xmlnode_insert_data(child, strdup(gaim_primitive_get_id_from_type(status->type)), -1);
 	xmlnode_insert_child(node, child);
 
 	child = xmlnode_new("message");
@@ -246,14 +215,14 @@
 /**************************************************************************
 * Saved status reading from disk
 **************************************************************************/
-static GaimStatusSavedSub *
+static GaimSavedStatusSub *
 parse_substatus(xmlnode *substatus)
 {
-	GaimStatusSavedSub *ret;
+	GaimSavedStatusSub *ret;
 	xmlnode *node;
 	char *data = NULL;
 
-	ret = g_new0(GaimStatusSavedSub, 1);
+	ret = g_new0(GaimSavedStatusSub, 1);
 
 	/* Read the account */
 	node = xmlnode_get_child(substatus, "account");
@@ -319,16 +288,16 @@
  *
  * I know.  Moving, huh?
  */
-static GaimStatusSaved *
+static GaimSavedStatus *
 parse_status(xmlnode *status)
 {
-	GaimStatusSaved *ret;
+	GaimSavedStatus *ret;
 	xmlnode *node;
 	const char *attrib;
 	char *data = NULL;
 	int i;
 
-	ret = g_new0(GaimStatusSaved, 1);
+	ret = g_new0(GaimSavedStatus, 1);
 
 	/* Read the title */
 	attrib = xmlnode_get_attrib(status, "name");
@@ -337,7 +306,7 @@
 	/* Ensure the title is unique */
 	ret->title = g_strdup(attrib);
 	i = 2;
-	while (gaim_savedstatuses_find(ret->title) != NULL)
+	while (gaim_savedstatus_find(ret->title) != NULL)
 	{
 		g_free(ret->title);
 		ret->title = g_strdup_printf("%s %d", attrib, i);
@@ -349,7 +318,7 @@
 	if (node != NULL)
 		data = xmlnode_get_data(node);
 	if (data != NULL) {
-		ret->type = gaim_primitive_get_type(data);
+		ret->type = gaim_primitive_get_type_from_id(data);
 		g_free(data);
 		data = NULL;
 	}
@@ -365,7 +334,7 @@
 	for (node = xmlnode_get_child(status, "status"); node != NULL;
 			node = xmlnode_get_next_twin(node))
 	{
-		GaimStatusSavedSub *new;
+		GaimSavedStatusSub *new;
 		new = parse_substatus(node);
 		if (new != NULL)
 			ret->substatuses = g_list_append(ret->substatuses, new);
@@ -426,7 +395,7 @@
 	for (status = xmlnode_get_child(statuses, "status"); status != NULL;
 			status = xmlnode_get_next_twin(status))
 	{
-		GaimStatusSaved *new;
+		GaimSavedStatus *new;
 		new = parse_status(status);
 		saved_statuses = g_list_append(saved_statuses, new);
 	}
@@ -471,12 +440,12 @@
 /**************************************************************************
 * Saved status API
 **************************************************************************/
-GaimStatusSaved *
-gaim_savedstatuses_new(const char *title, GaimStatusPrimitive type)
+GaimSavedStatus *
+gaim_savedstatus_new(const char *title, GaimStatusPrimitive type)
 {
-	GaimStatusSaved *status;
+	GaimSavedStatus *status;
 
-	status = g_new0(GaimStatusSaved, 1);
+	status = g_new0(GaimSavedStatus, 1);
 	status->title = g_strdup(title);
 	status->type = type;
 
@@ -488,11 +457,11 @@
 }
 
 gboolean
-gaim_savedstatuses_delete(const char *title)
+gaim_savedstatus_delete(const char *title)
 {
-	GaimStatusSaved *status;
+	GaimSavedStatus *status;
 
-	status = gaim_savedstatuses_find(title);
+	status = gaim_savedstatus_find(title);
 
 	if (status == NULL)
 		return FALSE;
@@ -511,15 +480,15 @@
 	return saved_statuses;
 }
 
-GaimStatusSaved *
-gaim_savedstatuses_find(const char *title)
+GaimSavedStatus *
+gaim_savedstatus_find(const char *title)
 {
 	GList *l;
-	GaimStatusSaved *status;
+	GaimSavedStatus *status;
 
 	for (l = saved_statuses; l != NULL; l = g_list_next(l))
 	{
-		status = (GaimStatusSaved *)l->data;
+		status = (GaimSavedStatus *)l->data;
 		if (!strcmp(status->title, title))
 			return status;
 	}
@@ -528,19 +497,19 @@
 }
 
 const char *
-gaim_savedstatuses_get_title(const GaimStatusSaved *saved_status)
+gaim_savedstatus_get_title(const GaimSavedStatus *saved_status)
 {
 	return saved_status->title;
 }
 
 GaimStatusPrimitive
-gaim_savedstatuses_get_type(const GaimStatusSaved *saved_status)
+gaim_savedstatus_get_type(const GaimSavedStatus *saved_status)
 {
 	return saved_status->type;
 }
 
 const char *
-gaim_savedstatuses_get_message(const GaimStatusSaved *saved_status)
+gaim_savedstatus_get_message(const GaimSavedStatus *saved_status)
 {
 	return saved_status->message;
 }
@@ -562,7 +531,7 @@
 	}
 
 	while (saved_statuses != NULL) {
-		GaimStatusSaved *status = saved_statuses->data;
+		GaimSavedStatus *status = saved_statuses->data;
 		saved_statuses = g_list_remove(saved_statuses, status);
 		free_statussaved(status);
 	}