From 6246c8b94074d0fa28aa36d4412b834c8657b819 Mon Sep 17 00:00:00 2001 From: James Booth Date: Sat, 18 Oct 2014 23:16:19 +0100 Subject: Add fields to command autocompleter on switch/previous/next --- src/command/command.c | 35 +++++++++++++++++++++++++++++++++++ src/command/command.h | 4 ++++ 2 files changed, 39 insertions(+) (limited to 'src/command') diff --git a/src/command/command.c b/src/command/command.c index 03dc6e01..2a3afb24 100644 --- a/src/command/command.c +++ b/src/command/command.c @@ -53,6 +53,7 @@ #include "contact.h" #include "roster_list.h" #include "jid.h" +#include "xmpp/form.h" #include "log.h" #include "muc.h" #ifdef HAVE_LIBOTR @@ -1420,6 +1421,40 @@ cmd_autocomplete_add(char *value) } } +void +cmd_autocomplete_add_form_fields(DataForm *form) +{ + if (form) { + GSList *fields = autocomplete_create_list(form->tag_ac); + GSList *curr_field = fields; + while (curr_field) { + GString *field_str = g_string_new("/"); + g_string_append(field_str, curr_field->data); + cmd_autocomplete_add(field_str->str); + g_string_free(field_str, TRUE); + curr_field = g_slist_next(curr_field); + } + g_slist_free_full(fields, free); + } +} + +void +cmd_autocomplete_remove_form_fields(DataForm *form) +{ + if (form) { + GSList *fields = autocomplete_create_list(form->tag_ac); + GSList *curr_field = fields; + while (curr_field) { + GString *field_str = g_string_new("/"); + g_string_append(field_str, curr_field->data); + cmd_autocomplete_remove(field_str->str); + g_string_free(field_str, TRUE); + curr_field = g_slist_next(curr_field); + } + g_slist_free_full(fields, free); + } +} + void cmd_autocomplete_remove(char *value) { diff --git a/src/command/command.h b/src/command/command.h index a2ded657..13cf2d00 100644 --- a/src/command/command.h +++ b/src/command/command.h @@ -37,6 +37,8 @@ #include +#include "xmpp/form.h" + GHashTable *commands; void cmd_init(void); @@ -46,6 +48,8 @@ void cmd_autocomplete(char *input, int *size); void cmd_reset_autocomplete(void); void cmd_autocomplete_add(char *value); void cmd_autocomplete_remove(char *value); +void cmd_autocomplete_add_form_fields(DataForm *form); +void cmd_autocomplete_remove_form_fields(DataForm *form); void cmd_alias_add(char *value); void cmd_alias_remove(char *value); -- cgit 1.4.1-2-gfad0