Add occupants char

`/occupants char` now sets a character that is displayed before the nick
in MUCs. Similar like `/roster char` is displaying a char for the roster.

Regards #690
This commit is contained in:
Michael Vetter
2019-05-02 17:01:55 +02:00
parent 722cb5fdc3
commit f082563bf2
9 changed files with 94 additions and 3 deletions

View File

@@ -184,6 +184,7 @@ static Autocomplete occupants_ac;
static Autocomplete occupants_default_ac;
static Autocomplete occupants_show_ac;
static Autocomplete occupants_header_ac;
static Autocomplete occupants_header_char_ac;
static Autocomplete occupants_char_ac;
static Autocomplete time_ac;
static Autocomplete time_format_ac;
@@ -688,6 +689,7 @@ cmd_ac_init(void)
autocomplete_add(occupants_ac, "indent");
autocomplete_add(occupants_ac, "header");
autocomplete_add(occupants_ac, "wrap");
autocomplete_add(occupants_ac, "char");
occupants_default_ac = autocomplete_new();
autocomplete_add(occupants_default_ac, "show");
@@ -696,11 +698,14 @@ cmd_ac_init(void)
occupants_show_ac = autocomplete_new();
autocomplete_add(occupants_show_ac, "jid");
occupants_char_ac = autocomplete_new();
autocomplete_add(occupants_char_ac, "none");
occupants_header_ac = autocomplete_new();
autocomplete_add(occupants_header_ac, "char");
occupants_char_ac = autocomplete_new();
autocomplete_add(occupants_char_ac, "none");
occupants_header_char_ac = autocomplete_new();
autocomplete_add(occupants_header_char_ac, "none");
time_ac = autocomplete_new();
autocomplete_add(time_ac, "console");
@@ -1115,10 +1120,11 @@ cmd_ac_reset(ProfWin *window)
autocomplete_reset(form_ac);
autocomplete_reset(form_field_multi_ac);
autocomplete_reset(occupants_ac);
autocomplete_reset(occupants_char_ac);
autocomplete_reset(occupants_default_ac);
autocomplete_reset(occupants_show_ac);
autocomplete_reset(occupants_header_ac);
autocomplete_reset(occupants_char_ac);
autocomplete_reset(occupants_header_char_ac);
autocomplete_reset(time_ac);
autocomplete_reset(time_format_ac);
autocomplete_reset(resource_ac);
@@ -1247,6 +1253,7 @@ cmd_ac_uninit(void)
autocomplete_free(form_ac);
autocomplete_free(form_field_multi_ac);
autocomplete_free(occupants_ac);
autocomplete_free(occupants_char_ac);
autocomplete_free(occupants_default_ac);
autocomplete_free(occupants_show_ac);
autocomplete_free(occupants_header_ac);
@@ -2563,6 +2570,11 @@ _occupants_autocomplete(ProfWin *window, const char *const input, gboolean previ
return found;
}
found = autocomplete_param_with_ac(input, "/occupants char", occupants_char_ac, TRUE, previous);
if (found) {
return found;
}
found = autocomplete_param_with_ac(input, "/occupants default hide", occupants_show_ac, TRUE, previous);
if (found) {
return found;

View File

@@ -752,6 +752,7 @@ static struct cmd_t command_defs[] =
CMD_TAG_UI)
CMD_SYN(
"/occupants show|hide [jid]",
"/occupants char <char>|none",
"/occupants default show|hide [jid]",
"/occupants size [<percent>]",
"/occupants indent <indent>",
@@ -761,6 +762,8 @@ static struct cmd_t command_defs[] =
"Show or hide room occupants, and occupants panel display settings.")
CMD_ARGS(
{ "show", "Show the occupants panel in current room." },
{ "char <char>", "Prefix occupants with specified character." },
{ "char none", "Remove occupants character prefix." },
{ "hide", "Hide the occupants panel in current room." },
{ "show jid", "Show jid in the occupants panel in current room." },
{ "hide jid", "Hide jid in the occupants panel in current room." },

View File

@@ -4402,6 +4402,23 @@ cmd_occupants(ProfWin *window, const char *const command, gchar **args)
}
}
if (g_strcmp0(args[0], "char") == 0) {
if (!args[1]) {
cons_bad_cmd_usage(command);
} else if (g_strcmp0(args[1], "none") == 0) {
prefs_clear_occupants_char();
cons_show("Occupants char removed.");
occupantswin_occupants_all();
} else {
prefs_set_occupants_char(args[1][0]);
cons_show("Occupants char set to %c.", args[1][0]);
occupantswin_occupants_all();
}
return TRUE;
}
if (g_strcmp0(args[0], "default") == 0) {
if (g_strcmp0(args[1], "show") == 0) {
if (g_strcmp0(args[2], "jid") == 0) {