diff src/gtkprefs.c @ 12195:d040123d2b69

[gaim-migrate @ 14497] A saved status dropdown. I don't know if it works, because the only way for me to test it right now is through remote X, over 3000 miles away. And I ain't puttin up with that for long. I'm going to check it out when I get home and fix it up locally. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Wed, 23 Nov 2005 02:04:59 +0000
parents 762bb28154bf
children 1c0fd404e07e
line wrap: on
line diff
--- a/src/gtkprefs.c	Wed Nov 23 01:13:02 2005 +0000
+++ b/src/gtkprefs.c	Wed Nov 23 02:04:59 2005 +0000
@@ -32,6 +32,7 @@
 #include "proxy.h"
 #include "prpl.h"
 #include "request.h"
+#include "savedstatuses.h"
 #include "sound.h"
 #include "util.h"
 #include "network.h"
@@ -43,6 +44,7 @@
 #include "gtkimhtml.h"
 #include "gtkimhtmltoolbar.h"
 #include "gtkprefs.h"
+#include "gtksavedstatuses.h"
 #include "gtksound.h"
 #include "gtkthemes.h"
 #include "gtkutils.h"
@@ -1632,28 +1634,12 @@
 	return ret;
 }
 
-/* XXX CORE/UI */
-#if 0
+
 static void
-set_default_away(GtkWidget *w, gpointer data)
+set_idle_away(GaimSavedStatus *status)
 {
-	struct away_message *default_away = NULL;
-	int length = g_slist_length(away_messages);
-	int i = GPOINTER_TO_INT(data);
-
-	if (away_messages == NULL)
-		default_away = NULL;
-	else if (i >= length)
-		default_away = g_slist_nth_data(away_messages, length - 1);
-	else
-		default_away = g_slist_nth_data(away_messages, i);
-
-	if(default_away)
-		gaim_prefs_set_string("/core/away/default_message", default_away->name);
-	else
-		gaim_prefs_set_string("/core/away/default_message", "");
+	gaim_prefs_set_int("/core/savedstatus/idleaway", gaim_savedstatus_get_creation_time(status));
 }
-#endif
 
 static GtkWidget *
 away_page()
@@ -1664,6 +1650,7 @@
 	GtkWidget *label;
 	GtkWidget *button;
 	GtkWidget *select;
+	GtkWidget *menu;
 	GtkSizeGroup *sg;
 
 	ret = gtk_vbox_new(FALSE, GAIM_HIG_CAT_SPACE);
@@ -1702,6 +1689,10 @@
 	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);
+	menu = gaim_gtk_status_menu(gaim_savedstatus_get_idleaway(), G_CALLBACK(set_idle_away));
+	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);
 
 	/*
 	 * TODO: Need to allow users to choose a GaimSavedStatus
@@ -1713,6 +1704,7 @@
 	 */
 
 	if (!gaim_prefs_get_bool("/core/away/away_when_idle")) {
+		gtk_widget_set_sensitive(GTK_WIDGET(menu), FALSE);
 		gtk_widget_set_sensitive(GTK_WIDGET(select), FALSE);
 		gtk_widget_set_sensitive(GTK_WIDGET(label), FALSE);
 	}