diff src/savedstatuses.c @ 12690:d03afaccd41c

[gaim-migrate @ 15033] Make the popular status docklet menu items actually do something. Strip html and newlines from the titles of saved-statuses when displaying them in the docklet menu. Add a 'gaim_savedstatus_find_by_creation_time()' function. Sadrul: you'll probably want to use this when you add popular statuses to the status box. committer: Tailor Script <tailor@pidgin.im>
author Mark Doliner <mark@kingant.net>
date Tue, 03 Jan 2006 05:23:01 +0000
parents 473c23442a36
children 10ef9171ca87
line wrap: on
line diff
--- a/src/savedstatuses.c	Tue Jan 03 04:44:08 2006 +0000
+++ b/src/savedstatuses.c	Tue Jan 03 05:23:01 2006 +0000
@@ -788,6 +788,22 @@
 	return NULL;
 }
 
+GaimSavedStatus *
+gaim_savedstatus_find_by_creation_time(time_t creation_time)
+{
+	GList *iter;
+	GaimSavedStatus *status;
+
+	for (iter = saved_statuses; iter != NULL; iter = iter->next)
+	{
+		status = (GaimSavedStatus *)iter->data;
+		if (status->creation_time == creation_time)
+			return status;
+	}
+
+	return NULL;
+}
+
 gboolean
 gaim_savedstatus_is_transient(const GaimSavedStatus *saved_status)
 {
@@ -799,35 +815,40 @@
 const char *
 gaim_savedstatus_get_title(const GaimSavedStatus *saved_status)
 {
+	const char *message;
+
 	g_return_val_if_fail(saved_status != NULL, NULL);
 
-	/* If transient then make up a title on the fly */
-	if (saved_status->title == NULL)
-	{
-		const char *message = gaim_savedstatus_get_message(saved_status);
+	/* If we have a title then return it */
+	if (saved_status->title != NULL)
+		return saved_status->title;
+
+	/* Otherwise, this is a transient status and we make up a title on the fly */
+	message = gaim_savedstatus_get_message(saved_status);
 
-		if (message == NULL)
-		{
-			GaimStatusPrimitive primitive;
-			primitive = gaim_savedstatus_get_type(saved_status);
-			return gaim_primitive_get_id_from_type(primitive);
-		}
-		else
+	if (message == NULL)
+	{
+		GaimStatusPrimitive primitive;
+		primitive = gaim_savedstatus_get_type(saved_status);
+		return gaim_primitive_get_id_from_type(primitive);
+	}
+	else
+	{
+		char *stripped;
+		static char buf[64];
+		stripped = gaim_markup_strip_html(message);
+		gaim_util_chrreplace(stripped, '\n', ' ');
+		strncpy(buf, stripped, sizeof(buf));
+		buf[sizeof(buf) - 1] = '\0';
+		if ((strlen(stripped) + 1) > sizeof(buf))
 		{
-			static char buf[64];
-			strncpy(buf, message, sizeof(buf));
-			buf[sizeof(buf) - 1] = '\0';
-			if ((strlen(message) + 1) > sizeof(buf))
-			{
-				/* Truncate and ellipsize */
-				char *tmp = g_utf8_find_prev_char(buf, &buf[sizeof(buf) - 4]);
-				strcpy(tmp, "...");
-			}
-			return buf;
+			/* Truncate and ellipsize */
+			char *tmp = g_utf8_find_prev_char(buf, &buf[sizeof(buf) - 4]);
+			strcpy(tmp, "...");
 		}
+		g_free(stripped);
+		return buf;
 	}
-
-	return saved_status->title;
 }
 
 GaimStatusPrimitive