diff src/gtkprefs.c @ 12857:e5f780a6137b

[gaim-migrate @ 15208] This is the ability to set a startup status to be used instead of the status when you last exited. The savedstatus stuff was missing from Changelog.API, so I added it. committer: Tailor Script <tailor@pidgin.im>
author Daniel Atallah <daniel.atallah@gmail.com>
date Fri, 13 Jan 2006 02:47:12 +0000
parents 8ac4025810ab
children 778d08e87ad0
line wrap: on
line diff
--- a/src/gtkprefs.c	Fri Jan 13 01:02:56 2006 +0000
+++ b/src/gtkprefs.c	Fri Jan 13 02:47:12 2006 +0000
@@ -1701,6 +1701,12 @@
 	gaim_prefs_set_int("/core/savedstatus/idleaway", gaim_savedstatus_get_creation_time(status));
 }
 
+static void
+set_startupstatus(GaimSavedStatus *status)
+{
+	gaim_prefs_set_int("/core/savedstatus/startup", gaim_savedstatus_get_creation_time(status));
+}
+
 static GtkWidget *
 away_page()
 {
@@ -1746,7 +1752,6 @@
 	gtk_misc_set_alignment(GTK_MISC(dd), 0, 0.5);
 
 	/* Auto-away stuff */
-	sg = gtk_size_group_new(GTK_SIZE_GROUP_HORIZONTAL);
 	vbox = gaim_gtk_make_frame(ret, _("Auto-away"));
 
 	button = gaim_gtk_prefs_checkbox(_("Change status when _idle"),
@@ -1781,6 +1786,34 @@
 		gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE);
 	}
 
+	/* Signon status stuff */
+	vbox = gaim_gtk_make_frame(ret, _("Status at startup"));
+
+	button = gaim_gtk_prefs_checkbox(_("Use status from last _exit at startup"),
+		"/core/savedstatus/startup_current_status", vbox);
+
+	hbox = gtk_hbox_new(FALSE, 0);
+	gtk_container_add(GTK_CONTAINER(vbox), hbox);
+
+	label = gtk_label_new_with_mnemonic(_("Status to a_pply at startup:"));
+	gtk_size_group_add_widget(sg, label);
+	gtk_misc_set_alignment(GTK_MISC(label), 0, 0.5);
+	g_signal_connect(G_OBJECT(button), "clicked",
+					 G_CALLBACK(gaim_gtk_toggle_sensitive), label);
+	gtk_box_pack_start(GTK_BOX(hbox), label, FALSE, FALSE, 0);
+
+	/* TODO: Show something useful if we don't have any saved statuses. */
+	menu = gaim_gtk_status_menu(gaim_savedstatus_get_startup(), G_CALLBACK(set_startupstatus));
+	gtk_box_pack_start(GTK_BOX(hbox), menu, FALSE, FALSE, 0);
+	g_signal_connect(G_OBJECT(button), "clicked",
+			 G_CALLBACK(gaim_gtk_toggle_sensitive), menu);
+	gtk_label_set_mnemonic_widget(GTK_LABEL(label), menu);
+
+	if (gaim_prefs_get_bool("/core/savedstatus/startup_current_status")) {
+		gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE);
+		gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE);
+	}
+
 	gtk_widget_show_all(ret);
 
 	return ret;