src/gtkstatusbox.c

changeset 12125
c1e55f812ded
parent 12123
a5890e156848
child 12221
49832990a0a4
--- a/src/gtkstatusbox.c	Fri Nov 18 06:35:07 2005 +0000
+++ b/src/gtkstatusbox.c	Fri Nov 18 07:23:29 2005 +0000
@@ -306,15 +306,15 @@
 static void
 update_to_reflect_current_status(GtkGaimStatusBox *status_box)
 {
-	const char *current_savedstatus_name;
 	GaimSavedStatus *saved_status;
+	GaimStatusPrimitive primitive;
+	const char *message;
 
 	/* this function is inappropriate for ones with accounts */
 	if (status_box->account)
 		return;
 
-	current_savedstatus_name = gaim_prefs_get_string("/core/savedstatus/current");
-	saved_status = gaim_savedstatus_find(current_savedstatus_name);
+	saved_status = gaim_savedstatus_get_current();
 
 	/*
 	 * Suppress the "changed" signal because the status
@@ -322,58 +322,47 @@
 	 */
 	gtk_widget_set_sensitive(GTK_WIDGET(status_box), FALSE);
 
-	if (saved_status == NULL)
+	primitive = gaim_savedstatus_get_type(saved_status);
+	if (gaim_savedstatus_has_substatuses(saved_status) ||
+	    ((primitive != GAIM_STATUS_AVAILABLE) &&
+	     (primitive != GAIM_STATUS_OFFLINE) &&
+	     (primitive != GAIM_STATUS_AWAY) &&
+	     (primitive != GAIM_STATUS_HIDDEN)))
 	{
-		/* Default to "available" */
-		gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 0);
+		gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 5);
 	}
 	else
 	{
-		GaimStatusPrimitive primitive;
-		const char *message;
+		if (primitive == GAIM_STATUS_AVAILABLE)
+			gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 0);
+		if (primitive == GAIM_STATUS_OFFLINE)
+			gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 3);
+		else if (primitive == GAIM_STATUS_AWAY)
+			gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 1);
+		else if (primitive == GAIM_STATUS_HIDDEN)
+			gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 2);
+	}
 
-		primitive = gaim_savedstatus_get_type(saved_status);
-		if (gaim_savedstatus_has_substatuses(saved_status) ||
-		    ((primitive != GAIM_STATUS_AVAILABLE) &&
-		     (primitive != GAIM_STATUS_OFFLINE) &&
-		     (primitive != GAIM_STATUS_AWAY) &&
-		     (primitive != GAIM_STATUS_HIDDEN)))
-		{
-			gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 5);
-		}
-		else
-		{
-			if (primitive == GAIM_STATUS_AVAILABLE)
-				gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 0);
-			if (primitive == GAIM_STATUS_OFFLINE)
-				gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 3);
-			else if (primitive == GAIM_STATUS_AWAY)
-				gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 1);
-			else if (primitive == GAIM_STATUS_HIDDEN)
-				gtk_combo_box_set_active(GTK_COMBO_BOX(status_box), 2);
-		}
+	message = gaim_savedstatus_get_message(saved_status);
+	if (!message || !*message)
+	{
+		status_box->imhtml_visible = FALSE;
+		gtk_widget_hide_all(status_box->vbox);
+	}
+	else
+	{
+		status_box->imhtml_visible = TRUE;
+		gtk_widget_show_all(status_box->vbox);
 
-		message = gaim_savedstatus_get_message(saved_status);
-		if (!message || !*message)
-		{
-			status_box->imhtml_visible = FALSE;
-			gtk_widget_hide_all(status_box->vbox);
-		}
-		else
-		{
-			status_box->imhtml_visible = TRUE;
-			gtk_widget_show_all(status_box->vbox);
+		/*
+		 * Suppress the "changed" signal because the status
+		 * was changed programmatically.
+		 */
+		gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), FALSE);
 
-			/*
-			 * Suppress the "changed" signal because the status
-			 * was changed programmatically.
-			 */
-			gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), FALSE);
-
-			gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
-			gtk_imhtml_append_text(GTK_IMHTML(status_box->imhtml), message, 0);
-			gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), TRUE);
-		}
+		gtk_imhtml_clear(GTK_IMHTML(status_box->imhtml));
+		gtk_imhtml_append_text(GTK_IMHTML(status_box->imhtml), message, 0);
+		gtk_widget_set_sensitive(GTK_WIDGET(status_box->imhtml), TRUE);
 	}
 
 	/* Stop suppressing the "changed" signal. */
@@ -815,8 +804,6 @@
 	if ((type < 0) || (type >= GAIM_STATUS_NUM_PRIMITIVES))
 		return;
 
-	/* TODO: Should save the previous status as a transient status? */
-
 	if (status_box->account) {
 		gint active;
 		GaimStatusType *status_type;
@@ -848,13 +835,10 @@
 		}
 	} else {
 		/* Save the newly selected status to prefs.xml and status.xml */
-		/* TODO: This should be saved as transient. */
-		const char *current = NULL;
 
 		/* Has the status been really changed? */
-		current = gaim_prefs_get_string("/core/savedstatus/current");
-		saved_status = gaim_savedstatus_find(current);
-		if (saved_status && gaim_savedstatus_get_type(saved_status) == type)
+		saved_status = gaim_savedstatus_get_current();
+		if (gaim_savedstatus_get_type(saved_status) == type)
 		{
 			if (!message_changed(gaim_savedstatus_get_message(saved_status), message))
 				changed = FALSE;
@@ -862,9 +846,8 @@
 
 		if (changed)
 		{
-			saved_status = gaim_savedstatus_find(_("Default"));
-			if (saved_status == NULL)
-				saved_status = gaim_savedstatus_new(_("Default"), type);
+			/* Create a new transient saved status */
+			saved_status = gaim_savedstatus_new(NULL, type);
 			gaim_savedstatus_set_type(saved_status, type);
 			gaim_savedstatus_set_message(saved_status, message);
 

mercurial