Mercurial > pidgin
diff finch/gntprefs.c @ 19123:576edd9c4f72
propagate from branch 'im.pidgin.pidgin' (head 96be2c6bb0b910f823a48bf0ffc247135df4a988)
to branch 'im.pidgin.soc.2007.finchfeat' (head 2a7598789162e259bfd3ba6cfa189a024137c675)
author | Eric Polino <aluink@pidgin.im> |
---|---|
date | Fri, 29 Jun 2007 12:45:08 +0000 |
parents | 2d4df5ef0090 |
children | 719f73b9a593 |
line wrap: on
line diff
--- a/finch/gntprefs.c Fri Jun 29 02:58:27 2007 +0000 +++ b/finch/gntprefs.c Fri Jun 29 12:45:08 2007 +0000 @@ -30,9 +30,16 @@ #include "gntprefs.h" #include "gntrequest.h" +#include "gnt.h" +#include "gntwidget.h" + #include <string.h> -static GList *freestrings; /* strings to be freed when the pref-window is closed */ +static struct { + GList *freestrings; /* strings to be freed when the pref-window is closed */ + gboolean showing; + GntWidget *window; +} pref_request; void finch_prefs_init() { @@ -98,7 +105,7 @@ str = g_strdup_printf("%ld", purple_savedstatus_get_creation_time(iter->data)); list = g_list_append(list, (char*)purple_savedstatus_get_title(iter->data)); list = g_list_append(list, str); - freestrings = g_list_prepend(freestrings, str); + pref_request.freestrings = g_list_prepend(pref_request.freestrings, str); } return list; } @@ -190,22 +197,22 @@ {PURPLE_PREF_NONE, NULL, NULL, NULL}, }; -/* XXX: Translate after the freeze */ static Prefs idle[] = { - {PURPLE_PREF_STRING, "/purple/away/idle_reporting", "Report Idle time", get_idle_options}, - {PURPLE_PREF_BOOLEAN, "/purple/away/away_when_idle", "Change status when idle", NULL}, - {PURPLE_PREF_INT, "/purple/away/mins_before_away", "Minutes before changing status", NULL}, - {PURPLE_PREF_INT, "/purple/savedstatus/idleaway", "Change status to", get_status_titles}, + {PURPLE_PREF_STRING, "/purple/away/idle_reporting", N_("Report Idle time"), get_idle_options}, + {PURPLE_PREF_BOOLEAN, "/purple/away/away_when_idle", N_("Change status when idle"), NULL}, + {PURPLE_PREF_INT, "/purple/away/mins_before_away", N_("Minutes before changing status"), NULL}, + {PURPLE_PREF_INT, "/purple/savedstatus/idleaway", N_("Change status to"), get_status_titles}, {PURPLE_PREF_NONE, NULL, NULL, NULL}, }; static void free_strings() { - g_list_foreach(freestrings, (GFunc)g_free, NULL); - g_list_free(freestrings); - freestrings = NULL; + g_list_foreach(pref_request.freestrings, (GFunc)g_free, NULL); + g_list_free(pref_request.freestrings); + pref_request.freestrings = NULL; + pref_request.showing = FALSE; } static void @@ -236,6 +243,11 @@ { PurpleRequestFields *fields; + if (pref_request.showing) { + gnt_window_present(pref_request.window); + return; + } + fields = purple_request_fields_new(); add_pref_group(fields, _("Buddy List"), blist); @@ -243,7 +255,8 @@ add_pref_group(fields, _("Logging"), logging); add_pref_group(fields, _("Idle"), idle); - purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, + pref_request.showing = TRUE; + pref_request.window = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, _("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings, NULL, NULL, NULL, NULL);