1
1
mirror of https://github.com/profanity-im/profanity.git synced 2025-02-02 15:08:15 -05:00

Extracted form field display code

This commit is contained in:
James Booth 2014-09-10 19:59:30 +01:00
parent acc7df161d
commit 5aa75b1f8b

View File

@ -1871,44 +1871,8 @@ _ui_draw_term_title(void)
}
static void
_ui_handle_room_configuration(const char * const room, DataForm *form)
_ui_handle_form_field(ProfWin *window, FormField *field)
{
GString *title = g_string_new(room);
g_string_append(title, " config");
ProfWin *window = wins_new(title->str, WIN_MUC_CONFIG);
g_string_free(title, TRUE);
int num = wins_get_num(window);
ui_switch_win(num);
if (form->title != NULL) {
win_save_print(window, '-', NULL, 0, 0, "", form->title);
} else {
win_save_vprint(window, '-', NULL, 0, 0, "", "Configuration for room %s.", room);
}
win_save_print(window, '-', NULL, 0, 0, "", "");
if (form->instructions != NULL) {
win_save_vprint(window, '-', NULL, 0, 0, "", "Instructions:");
win_save_print(window, '-', NULL, 0, 0, "", form->instructions);
win_save_print(window, '-', NULL, 0, 0, "", "");
}
GSList *fields = form->fields;
GSList *curr_field = fields;
while (curr_field != NULL) {
FormField *field = curr_field->data;
if (g_strcmp0(field->type, "hidden") != 0) {
if (field->required) {
win_save_vprint(window, '-', NULL, NO_EOL, 0, "", "%s (", field->label);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, COLOUR_AWAY, "", field->var);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", ") Required: ");
} else {
win_save_vprint(window, '-', NULL, NO_EOL, 0, "", "%s (", field->label);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, COLOUR_AWAY, "", field->var);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", "): ");
}
GSList *values = field->values;
GSList *curr_value = values;
@ -2023,6 +1987,49 @@ _ui_handle_room_configuration(const char * const room, DataForm *form)
default:
break;
}
}
static void
_ui_handle_room_configuration(const char * const room, DataForm *form)
{
GString *title = g_string_new(room);
g_string_append(title, " config");
ProfWin *window = wins_new(title->str, WIN_MUC_CONFIG);
g_string_free(title, TRUE);
int num = wins_get_num(window);
ui_switch_win(num);
if (form->title != NULL) {
win_save_print(window, '-', NULL, 0, 0, "", form->title);
} else {
win_save_vprint(window, '-', NULL, 0, 0, "", "Configuration for room %s.", room);
}
win_save_print(window, '-', NULL, 0, 0, "", "");
if (form->instructions != NULL) {
win_save_vprint(window, '-', NULL, 0, 0, "", "Instructions:");
win_save_print(window, '-', NULL, 0, 0, "", form->instructions);
win_save_print(window, '-', NULL, 0, 0, "", "");
}
GSList *fields = form->fields;
GSList *curr_field = fields;
while (curr_field != NULL) {
FormField *field = curr_field->data;
if (g_strcmp0(field->type, "hidden") != 0) {
if (field->required) {
win_save_vprint(window, '-', NULL, NO_EOL, 0, "", "%s (", field->label);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, COLOUR_AWAY, "", field->var);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", ") Required: ");
} else {
win_save_vprint(window, '-', NULL, NO_EOL, 0, "", "%s (", field->label);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, COLOUR_AWAY, "", field->var);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", "): ");
}
_ui_handle_form_field(window, field);
/*
TODO add command to get help for a field