* Finch is the legal property of its developers, whose names are too numerous * to list here. Please refer to the COPYRIGHT file distributed with this * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA #include <savedstatuses.h> GList *freestrings; /* strings to be freed when the pref-window is closed */ GntWidget *keyring_window; purple_prefs_add_none("/finch"); purple_prefs_add_none("/finch/plugins"); purple_prefs_add_path_list("/finch/plugins/loaded", NULL); purple_prefs_add_path_list("/finch/plugins/seen", NULL); purple_prefs_add_none("/finch/conversations"); purple_prefs_add_bool("/finch/conversations/timestamps", TRUE); purple_prefs_add_bool("/finch/conversations/notify_typing", FALSE); purple_prefs_add_none("/finch/filelocations"); purple_prefs_add_path("/finch/filelocations/last_save_folder", ""); purple_prefs_add_path("/finch/filelocations/last_save_folder", ""); void finch_prefs_update_old() GList *(*lv)(void); /* If the value is to be selected from a number of choices */ return purple_log_logger_get_options(); list = g_list_append(list, (char *)_("Based on keyboard use")); list = g_list_append(list, "system"); list = g_list_append(list, (char*)_("From last sent message")); list = g_list_append(list, "purple"); list = g_list_append(list, (char*)_("Never")); list = g_list_append(list, "never"); for (iter = purple_savedstatuses_get_all(); iter; iter = iter->next) { if (purple_savedstatus_is_transient(iter->data)) 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); pref_request.freestrings = g_list_prepend(pref_request.freestrings, str); static PurpleRequestField * get_pref_field(Prefs *prefs) PurpleRequestField *field = NULL; case PURPLE_PREF_BOOLEAN: field = purple_request_field_bool_new(prefs->pref, _(prefs->label), purple_prefs_get_bool(prefs->pref)); field = purple_request_field_int_new(prefs->pref, _(prefs->label), purple_prefs_get_int(prefs->pref), INT_MIN, INT_MAX); field = purple_request_field_string_new(prefs->pref, _(prefs->label), purple_prefs_get_string(prefs->pref), FALSE); GList *list = prefs->lv(), *iter; field = purple_request_field_list_new(prefs->pref, _(prefs->label)); for (iter = list; iter; iter = iter->next) const char *data = iter->data; case PURPLE_PREF_BOOLEAN: if (sscanf(iter->data, "%d", &idata) != 1) if (purple_prefs_get_bool(prefs->pref) == idata) if (sscanf(iter->data, "%d", &idata) != 1) if (purple_prefs_get_int(prefs->pref) == idata) if (purple_strequal(purple_prefs_get_string(prefs->pref), iter->data)) purple_request_field_list_add_icon(field, data, NULL, iter->data); purple_request_field_list_add_selected(field, data); {PURPLE_PREF_BOOLEAN, "/finch/blist/idletime", N_("Show Idle Time"), NULL}, {PURPLE_PREF_BOOLEAN, "/finch/blist/showoffline", N_("Show Offline Buddies"), NULL}, {PURPLE_PREF_NONE, NULL, NULL, NULL} {PURPLE_PREF_BOOLEAN, "/finch/conversations/timestamps", N_("Show Timestamps"), NULL}, {PURPLE_PREF_BOOLEAN, "/finch/conversations/notify_typing", N_("Notify buddies when you are typing"), NULL}, {PURPLE_PREF_NONE, NULL, NULL, NULL} {PURPLE_PREF_STRING, "/purple/logging/format", N_("Log format"), get_log_options}, {PURPLE_PREF_BOOLEAN, "/purple/logging/log_ims", N_("Log IMs"), NULL}, {PURPLE_PREF_BOOLEAN, "/purple/logging/log_chats", N_("Log chats"), NULL}, {PURPLE_PREF_BOOLEAN, "/purple/logging/log_system", N_("Log status change events"), NULL}, {PURPLE_PREF_NONE, NULL, NULL, NULL}, {PURPLE_PREF_STRING, "/purple/keyring/active", N_("Active keyring"), purple_keyring_get_options}, {PURPLE_PREF_NONE, NULL, NULL, NULL} {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}, g_list_free_full(pref_request.freestrings, g_free); pref_request.freestrings = NULL; pref_request.showing = FALSE; save_cb(void *data, PurpleRequestFields *allfields) finch_request_save_in_prefs(data, allfields); add_pref_group(PurpleRequestFields *fields, const char *title, Prefs *prefs) PurpleRequestField *field; PurpleRequestFieldGroup *group; group = purple_request_field_group_new(title); purple_request_fields_add_group(fields, group); for (i = 0; prefs[i].pref; i++) field = get_pref_field(prefs + i); purple_request_field_group_add_field(group, field); void finch_prefs_show_all() PurpleRequestFields *fields; if (pref_request.showing) { gnt_window_present(pref_request.window); if (pref_request.keyring_window != NULL) purple_request_close(PURPLE_REQUEST_FIELDS, pref_request.keyring_window); fields = purple_request_fields_new(); add_pref_group(fields, _("Buddy List"), blist); add_pref_group(fields, _("Conversations"), convs); add_pref_group(fields, _("Keyring"), keyring); add_pref_group(fields, _("Logging"), logging); add_pref_group(fields, _("Idle"), idle); pref_request.showing = TRUE; pref_request.window = purple_request_fields(NULL, _("Preferences"), NULL, NULL, fields, _("Save"), G_CALLBACK(save_cb), _("Cancel"), free_strings, finch_prefs_keyring_save(void *data, PurpleRequestFields *fields) pref_request.keyring_window = NULL; purple_keyring_apply_settings(NULL, fields); finch_prefs_keyring_cancel(void) pref_request.keyring_window = NULL; void finch_prefs_show_keyring(void) PurpleRequestFields *fields; if (pref_request.keyring_window != NULL) { gnt_window_present(pref_request.keyring_window); fields = purple_keyring_read_settings(); purple_notify_info(NULL, _("Keyring settings"), _("Selected keyring doesn't allow any configuration"), pref_request.keyring_window = purple_request_fields(NULL, _("Keyring settings"), NULL, NULL, fields, _("Save"), G_CALLBACK(finch_prefs_keyring_save), _("Cancel"), G_CALLBACK(finch_prefs_keyring_cancel),