diff console/gntblist.c @ 14126:b71bfeaaed58

[gaim-migrate @ 16764] Add a savedstatus dialog, and a "status" command to bring it up. You an also select "Saved..." from the dropdown in the buddylist. The 'Add' and 'Edit' buttons don't do anything yet. They will probably get to work some time tomorrow. committer: Tailor Script <tailor@pidgin.im>
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Tue, 15 Aug 2006 06:21:39 +0000
parents eaf7f35635bc
children db2311999862
line wrap: on
line diff
--- a/console/gntblist.c	Tue Aug 15 04:07:38 2006 +0000
+++ b/console/gntblist.c	Tue Aug 15 06:21:39 2006 +0000
@@ -17,6 +17,7 @@
 #include "gnttree.h"
 
 #include "gntblist.h"
+#include "gntstatus.h"
 #include <string.h>
 
 #define PREF_ROOT "/gaim/gnt/blist"
@@ -42,7 +43,8 @@
 typedef enum
 {
 	STATUS_PRIMITIVE = 0,
-	STATUS_SAVED
+	STATUS_SAVED_POPULAR,
+	STATUS_SAVED_ALL,
 } StatusType;
 
 typedef struct
@@ -1035,6 +1037,7 @@
 	int i;
 	GList *iter;
 	GList *items = NULL;
+	StatusBoxItem *item = NULL;
 
 	/* First the primitives */
 	GaimStatusPrimitive prims[] = {GAIM_STATUS_AVAILABLE, GAIM_STATUS_AWAY,
@@ -1042,7 +1045,7 @@
 
 	for (i = 0; prims[i] != GAIM_STATUS_UNSET; i++)
 	{
-		StatusBoxItem *item = g_new0(StatusBoxItem, 1);
+		item = g_new0(StatusBoxItem, 1);
 		item->type = STATUS_PRIMITIVE;
 		item->u.prim = prims[i];
 		items = g_list_prepend(items, item);
@@ -1053,18 +1056,26 @@
 	/* Now the popular statuses */
 	for (iter = gaim_savedstatuses_get_popular(6); iter; iter = iter->next)
 	{
-		StatusBoxItem *item = g_new0(StatusBoxItem, 1);
-		item->type = STATUS_SAVED;
+		item = g_new0(StatusBoxItem, 1);
+		item->type = STATUS_SAVED_POPULAR;
 		item->u.saved = iter->data;
 		items = g_list_prepend(items, item);
 		gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
 				gaim_savedstatus_get_title(iter->data));
 	}
 
+	/* More savedstatuses */
+	item = g_new0(StatusBoxItem, 1);
+	item->type = STATUS_SAVED_ALL;
+	items = g_list_prepend(items, item);
+	gnt_combo_box_add_data(GNT_COMBO_BOX(ggblist->status), item,
+			_("Saved..."));
+
 	/* The keys for the combobox are created here, and never used
 	 * anywhere else. So make sure the keys are freed when the widget
 	 * is destroyed. */
-	g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses", items, (GDestroyNotify)destroy_status_list);
+	g_object_set_data_full(G_OBJECT(ggblist->status), "list of statuses",
+			items, (GDestroyNotify)destroy_status_list);
 }
 
 void gg_blist_init()
@@ -1125,7 +1136,7 @@
 status_selection_changed(GntComboBox *box, StatusBoxItem *old, StatusBoxItem *now, gpointer null)
 {
 	gnt_entry_set_text(GNT_ENTRY(ggblist->statustext), NULL);
-	if (now->type == STATUS_SAVED)
+	if (now->type == STATUS_SAVED_POPULAR)
 	{
 		/* Set the status immediately */
 		gaim_savedstatus_activate(now->u.saved);
@@ -1137,6 +1148,10 @@
 		gnt_box_move_focus(GNT_BOX(ggblist->window), 1);
 		ggblist->typing = g_timeout_add(TYPING_TIMEOUT, (GSourceFunc)remove_typing_cb, NULL);
 	}
+	else if (now->type == STATUS_SAVED_ALL)
+	{
+		gg_savedstatus_show_all();
+	}
 	else
 		g_return_if_reached();
 }