mirror of
https://github.com/profanity-im/profanity.git
synced 2025-01-03 14:57:42 -05:00
Add /occupants color command
`/occupants color on|off` to enable or disable XEP-0392 also for the MUC occupants. Regards https://github.com/profanity-im/profanity/issues/1191
This commit is contained in:
parent
6d82020a66
commit
808850c6f5
@ -708,6 +708,7 @@ cmd_ac_init(void)
|
||||
autocomplete_add(occupants_ac, "header");
|
||||
autocomplete_add(occupants_ac, "wrap");
|
||||
autocomplete_add(occupants_ac, "char");
|
||||
autocomplete_add(occupants_ac, "color");
|
||||
|
||||
occupants_default_ac = autocomplete_new();
|
||||
autocomplete_add(occupants_default_ac, "show");
|
||||
@ -2651,6 +2652,11 @@ _occupants_autocomplete(ProfWin *window, const char *const input, gboolean previ
|
||||
return found;
|
||||
}
|
||||
|
||||
found = autocomplete_param_with_func(input, "/occupants color", prefs_autocomplete_boolean_choice, previous);
|
||||
if (found) {
|
||||
return found;
|
||||
}
|
||||
|
||||
found = autocomplete_param_with_ac(input, "/occupants default hide", occupants_show_ac, TRUE, previous);
|
||||
if (found) {
|
||||
return found;
|
||||
|
@ -714,6 +714,7 @@ static struct cmd_t command_defs[] =
|
||||
CMD_SYN(
|
||||
"/occupants show|hide [jid]",
|
||||
"/occupants char <char>|none",
|
||||
"/occupants color on|off",
|
||||
"/occupants default show|hide [jid]",
|
||||
"/occupants size [<percent>]",
|
||||
"/occupants indent <indent>",
|
||||
@ -725,6 +726,8 @@ static struct cmd_t command_defs[] =
|
||||
{ "show", "Show the occupants panel in current room." },
|
||||
{ "char <char>", "Prefix occupants with specified character." },
|
||||
{ "char none", "Remove occupants character prefix." },
|
||||
{ "color on", "Enable generated color names (XEP-0392) for occupants" },
|
||||
{ "color off", "Disable generated color names (XEP-0392) for occupants" },
|
||||
{ "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." },
|
||||
|
@ -4442,6 +4442,12 @@ cmd_occupants(ProfWin *window, const char *const command, gchar **args)
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (g_strcmp0(args[0], "color") == 0) {
|
||||
_cmd_set_boolean_preference(args[1], command, "Occupants consistent colors", PREF_OCCUPANTS_COLOR_NICK);
|
||||
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) {
|
||||
|
@ -1712,6 +1712,7 @@ _get_group(preference_t pref)
|
||||
case PREF_CONSOLE_CHAT:
|
||||
case PREF_COLOR_NICK:
|
||||
case PREF_ROSTER_COLOR_NICK:
|
||||
case PREF_OCCUPANTS_COLOR_NICK:
|
||||
case PREF_STATUSBAR_SHOW_NAME:
|
||||
case PREF_STATUSBAR_SHOW_NUMBER:
|
||||
case PREF_STATUSBAR_SELF:
|
||||
@ -1975,6 +1976,8 @@ _get_key(preference_t pref)
|
||||
return "color.nick";
|
||||
case PREF_ROSTER_COLOR_NICK:
|
||||
return "color.roster.nick";
|
||||
case PREF_OCCUPANTS_COLOR_NICK:
|
||||
return "color.occupants.nick";
|
||||
case PREF_BOOKMARK_INVITE:
|
||||
return "bookmark.invite";
|
||||
case PREF_PLUGINS_SOURCEPATH:
|
||||
|
@ -145,6 +145,7 @@ typedef enum {
|
||||
PREF_CONSOLE_CHAT,
|
||||
PREF_COLOR_NICK,
|
||||
PREF_ROSTER_COLOR_NICK,
|
||||
PREF_OCCUPANTS_COLOR_NICK,
|
||||
PREF_BOOKMARK_INVITE,
|
||||
PREF_PLUGINS_SOURCEPATH,
|
||||
PREF_ROOM_LIST_CACHE,
|
||||
|
@ -1991,9 +1991,15 @@ cons_color_setting(void)
|
||||
prefs_free_string(color_pref);
|
||||
|
||||
if (prefs_get_boolean(PREF_ROSTER_COLOR_NICK)) {
|
||||
cons_show("Consistent color generation in roster (/roster) : ON");
|
||||
cons_show("Consistent color generation in roster (/roster) : ON");
|
||||
} else {
|
||||
cons_show("Consistent color generation in roster (/roster) : OFF");
|
||||
cons_show("Consistent color generation in roster (/roster) : OFF");
|
||||
}
|
||||
|
||||
if (prefs_get_boolean(PREF_OCCUPANTS_COLOR_NICK)) {
|
||||
cons_show("Consistent color generation for occupants (/occupants) : ON");
|
||||
} else {
|
||||
cons_show("Consistent color generation for occupants (/occupants) : OFF");
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -44,9 +44,19 @@
|
||||
static void
|
||||
_occuptantswin_occupant(ProfLayoutSplit *layout, Occupant *occupant, gboolean showjid)
|
||||
{
|
||||
const char *presence_str = string_from_resource_presence(occupant->presence);
|
||||
theme_item_t presence_colour = theme_main_presence_attrs(presence_str);
|
||||
wattron(layout->subwin, theme_attrs(presence_colour));
|
||||
int colour;
|
||||
theme_item_t presence_colour;
|
||||
|
||||
if (prefs_get_boolean(PREF_OCCUPANTS_COLOR_NICK)) {
|
||||
colour = theme_hash_attrs(occupant->nick);
|
||||
|
||||
wattron(layout->subwin, colour);
|
||||
} else {
|
||||
const char *presence_str = string_from_resource_presence(occupant->presence);
|
||||
presence_colour = theme_main_presence_attrs(presence_str);
|
||||
|
||||
wattron(layout->subwin, theme_attrs(presence_colour));
|
||||
}
|
||||
|
||||
GString *spaces = g_string_new(" ");
|
||||
|
||||
@ -86,7 +96,11 @@ _occuptantswin_occupant(ProfLayoutSplit *layout, Occupant *occupant, gboolean sh
|
||||
|
||||
g_string_free(spaces, TRUE);
|
||||
|
||||
wattroff(layout->subwin, theme_attrs(presence_colour));
|
||||
if (prefs_get_boolean(PREF_OCCUPANTS_COLOR_NICK)) {
|
||||
wattroff(layout->subwin, colour);
|
||||
} else {
|
||||
wattroff(layout->subwin, theme_attrs(presence_colour));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
|
Loading…
Reference in New Issue
Block a user