Add /occupants indent command

Roster has a `/roster contact indent` option.
Now we have the same for occupants. So contacts in roster and in MUC can
have configurable indentation.

Regards https://github.com/boothj5/profanity/issues/690
This commit is contained in:
Michael Vetter
2019-04-18 20:53:02 +02:00
parent 7e4e9e6688
commit 0c248a0b16
7 changed files with 80 additions and 3 deletions

View File

@@ -753,7 +753,8 @@ static struct cmd_t command_defs[] =
CMD_SYN(
"/occupants show|hide [jid]",
"/occupants default show|hide [jid]",
"/occupants size [<percent>]")
"/occupants size [<percent>]",
"/occupants indent <indent>")
CMD_DESC(
"Show or hide room occupants, and occupants panel display settings.")
CMD_ARGS(
@@ -763,7 +764,8 @@ static struct cmd_t command_defs[] =
{ "hide jid", "Hide jid in the occupants panel in current room." },
{ "default show|hide", "Whether occupants are shown by default in new rooms." },
{ "default show|hide jid", "Whether occupants jids are shown by default in new rooms." },
{ "size <percent>", "Percentage of the screen taken by the occupants list in rooms (1-99)." })
{ "size <percent>", "Percentage of the screen taken by the occupants list in rooms (1-99)." },
{ "indent <indent>", "Indent contact line by <indent> spaces (0 to 10)." })
CMD_NOEXAMPLES
},

View File

@@ -4409,6 +4409,38 @@ cmd_occupants(ProfWin *window, const char *const command, gchar **args)
ProfMucWin *mucwin = (ProfMucWin*)window;
assert(mucwin->memcheck == PROFMUCWIN_MEMCHECK);
if (g_strcmp0(args[0], "indent") == 0) {
if (!args[1]) {
cons_bad_cmd_usage(command);
return TRUE;
} else {
int intval = 0;
char *err_msg = NULL;
gboolean res = strtoi_range(args[1], &intval, 0, 10, &err_msg);
if (res) {
prefs_set_occupants_indent(intval);
cons_show("Occupants indent set to: %d", intval);
// get the list of joined rooms
GList *rooms = muc_rooms();
GList *curr = rooms;
while (curr) {
char* roomjid = curr->data;
ProfMucWin *mw = wins_get_muc(roomjid);
if (mw != NULL)
mucwin_update_occupants(mw);
curr = g_list_next(curr);
}
} else {
cons_show(err_msg);
free(err_msg);
}
return TRUE;
}
}
if (g_strcmp0(args[0], "show") == 0) {
if (g_strcmp0(args[1], "jid") == 0) {
mucwin->showjid = TRUE;