Added /room remove command, reformetted form output
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
Reference in New Issue
Block a user