Added /room remove command, reformetted form output

This commit is contained in:
James Booth
2014-09-14 01:53:52 +01:00
parent 68b839a508
commit 7a12684523
5 changed files with 43 additions and 10 deletions

View File

@@ -4,3 +4,4 @@ Don't allow form windows to be closed without submitting/cancelling
Help command for form fields Help command for form fields
Command to show current form Command to show current form
Handle error on form submit Handle error on form submit
Show field after setting/adding/removing

View File

@@ -2021,7 +2021,29 @@ cmd_room(gchar **args, struct cmd_help_t help)
if (!form_tag_exists(current->form, tag)) { if (!form_tag_exists(current->form, tag)) {
ui_current_print_line("Form does not contain a field with tag %s", tag); ui_current_print_line("Form does not contain a field with tag %s", tag);
} else { } else {
ui_current_print_line("Remove Tag: %s, Value: %s", tag, value); form_field_type_t field_type = form_get_field_type(current->form, tag);
gboolean valid = FALSE;
switch (field_type) {
case FIELD_LIST_MULTI:
valid = form_field_contains_option(current->form, tag, value);
if (valid == TRUE) {
form_remove_value(current->form, tag, value);
ui_current_print_line("Removed %s from %s", value, tag);
} else {
ui_current_print_line("Value %s not a valid option for field: %s", value, tag);
}
break;
case FIELD_TEXT_MULTI:
ui_current_print_line("TODO");
break;
case FIELD_JID_MULTI:
form_remove_value(current->form, tag, value);
ui_current_print_line("Removed %s from %s", value, tag);
break;
default:
ui_current_print_line("Remove command not valid for field: %s", tag);
break;
}
} }
} }

View File

@@ -1903,9 +1903,10 @@ _ui_handle_form_field(ProfWin *window, FormField *field)
break; break;
case FIELD_TEXT_MULTI: case FIELD_TEXT_MULTI:
win_save_newline(window); win_save_newline(window);
int index = 1;
while (curr_value != NULL) { while (curr_value != NULL) {
char *value = curr_value->data; char *value = curr_value->data;
win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " %s", value); win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " [%d] %s", index++, value);
curr_value = g_slist_next(curr_value); curr_value = g_slist_next(curr_value);
} }
break; break;
@@ -1934,9 +1935,9 @@ _ui_handle_form_field(ProfWin *window, FormField *field)
while (curr_option != NULL) { while (curr_option != NULL) {
FormOption *option = curr_option->data; FormOption *option = curr_option->data;
if (g_strcmp0(option->value, value) == 0) { if (g_strcmp0(option->value, value) == 0) {
win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " %s (%s)", option->label, option->value); win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " [%s] %s", option->value, option->label);
} else { } else {
win_save_vprint(window, '-', NULL, 0, 0, "", " %s (%s)", option->label, option->value); win_save_vprint(window, '-', NULL, 0, COLOUR_OFFLINE, "", " [%s] %s", option->value, option->label);
} }
curr_option = g_slist_next(curr_option); curr_option = g_slist_next(curr_option);
} }
@@ -1950,9 +1951,9 @@ _ui_handle_form_field(ProfWin *window, FormField *field)
while (curr_option != NULL) { while (curr_option != NULL) {
FormOption *option = curr_option->data; FormOption *option = curr_option->data;
if (g_slist_find_custom(curr_value, option->value, (GCompareFunc)g_strcmp0) != NULL) { if (g_slist_find_custom(curr_value, option->value, (GCompareFunc)g_strcmp0) != NULL) {
win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " %s (%s)", option->label, option->value); win_save_vprint(window, '-', NULL, 0, COLOUR_ONLINE, "", " [%s] %s", option->value, option->label);
} else { } else {
win_save_vprint(window, '-', NULL, 0, 0, "", " %s (%s)", option->label, option->value); win_save_vprint(window, '-', NULL, 0, COLOUR_OFFLINE, "", " [%s] %s", option->value, option->label);
} }
curr_option = g_slist_next(curr_option); curr_option = g_slist_next(curr_option);
} }
@@ -2021,12 +2022,13 @@ _ui_handle_room_configuration(const char * const room, DataForm *form)
FormField *field = curr_field->data; FormField *field = curr_field->data;
if (g_strcmp0(field->type, "hidden") != 0) { if (g_strcmp0(field->type, "hidden") != 0) {
win_save_vprint(window, '-', NULL, NO_EOL, 0, "", "%s (", field->label); char *tag = g_hash_table_lookup(form->var_to_tag, field->var);
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, COLOUR_AWAY, "", g_hash_table_lookup(form->var_to_tag, field->var)); win_save_vprint(window, '-', NULL, NO_EOL, COLOUR_AWAY, "", "[%s] ", tag);
win_save_vprint(window, '-', NULL, NO_EOL | NO_DATE, 0, "", "%s", field->label);
if (field->required) { if (field->required) {
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", ") Required: "); win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", " (required): ");
} else { } else {
win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", "): "); win_save_print(window, '-', NULL, NO_DATE | NO_EOL, 0, "", ": ");
} }
_ui_handle_form_field(window, field); _ui_handle_form_field(window, field);

View File

@@ -470,6 +470,12 @@ _form_add_value(DataForm *form, const char * const tag, char *value)
} }
} }
static void
_form_remove_value(DataForm *form, const char * const tag, char *value)
{
// TODO
}
static gboolean static gboolean
_form_field_contains_option(DataForm *form, const char * const tag, char *value) _form_field_contains_option(DataForm *form, const char * const tag, char *value)
{ {
@@ -503,6 +509,7 @@ form_init_module(void)
form_get_field_type = _form_get_field_type; form_get_field_type = _form_get_field_type;
form_set_value = _form_set_value; form_set_value = _form_set_value;
form_add_value = _form_add_value; form_add_value = _form_add_value;
form_remove_value = _form_remove_value;
form_field_contains_option = _form_field_contains_option; form_field_contains_option = _form_field_contains_option;
form_tag_exists = _form_tag_exists; form_tag_exists = _form_tag_exists;
} }

View File

@@ -210,6 +210,7 @@ void (*form_destroy)(DataForm *form);
char * (*form_get_form_type_field)(DataForm *form); char * (*form_get_form_type_field)(DataForm *form);
void (*form_set_value)(DataForm *form, const char * const tag, char *value); void (*form_set_value)(DataForm *form, const char * const tag, char *value);
void (*form_add_value)(DataForm *form, const char * const tag, char *value); void (*form_add_value)(DataForm *form, const char * const tag, char *value);
void (*form_remove_value)(DataForm *form, const char * const tag, char *value);
gboolean (*form_tag_exists)(DataForm *form, const char * const tag); gboolean (*form_tag_exists)(DataForm *form, const char * const tag);
form_field_type_t (*form_get_field_type)(DataForm *form, const char * const tag); form_field_type_t (*form_get_field_type)(DataForm *form, const char * const tag);
gboolean (*form_field_contains_option)(DataForm *form, const char * const tag, char *value); gboolean (*form_field_contains_option)(DataForm *form, const char * const tag, char *value);