1
0
mirror of https://github.com/profanity-im/profanity.git synced 2024-12-04 14:46:46 -05:00

Added /roster size and /occupants size settings

This commit is contained in:
James Booth 2014-11-15 23:47:27 +00:00
parent 3a778cc974
commit 1479a5e134
6 changed files with 93 additions and 9 deletions

View File

@ -169,9 +169,9 @@ static struct cmd_t command_defs[] =
{ "/roster", { "/roster",
cmd_roster, parse_args_with_freetext, 0, 3, NULL, cmd_roster, parse_args_with_freetext, 0, 3, NULL,
{ "/roster [show|hide|by|add|remove|nick|clearnick] [offline|resource] [group|presence|none] [jid] [nickname]", "Manage your roster.", { "/roster [show|hide|by|size|add|remove|nick|clearnick] [offline|resource] [percent] [group|presence|none] [jid] [nickname]", "Manage your roster.",
{ "/roster [show|hide|by|add|remove|nick|clearnick] [offline|resource] [group|presence|none] [jid] [nickname]", { "/roster [show|hide|by|size|add|remove|nick|clearnick] [offline|resource] [percent] [group|presence|none] [jid] [nickname]",
"----------------------------------------------------------------------------------------------------------", "-------------------------------------------------------------------------------------------------------------------------",
"View, add to, and remove from your roster.", "View, add to, and remove from your roster.",
"Passing no arguments lists all contacts in your roster.", "Passing no arguments lists all contacts in your roster.",
"show - Show the roster panel in the console window.", "show - Show the roster panel in the console window.",
@ -183,6 +183,7 @@ static struct cmd_t command_defs[] =
"by group - Group contacts in the roster panel by roster group.", "by group - Group contacts in the roster panel by roster group.",
"by presence - Group contacts in the roster panel by presence.", "by presence - Group contacts in the roster panel by presence.",
"by none - No grouping in the roster panel.", "by none - No grouping in the roster panel.",
"size - Percentage of the screen taken up by the roster (1-99).",
"add - Add a new item, jid is required, nickname is optional.", "add - Add a new item, jid is required, nickname is optional.",
"remove - Removes a contact, jid is required.", "remove - Removes a contact, jid is required.",
"nick - Changes a contacts nickname, both jid and nickname are required,", "nick - Changes a contacts nickname, both jid and nickname are required,",
@ -383,12 +384,13 @@ static struct cmd_t command_defs[] =
{ "/occupants", { "/occupants",
cmd_occupants, parse_args, 1, 2, &cons_occupants_setting, cmd_occupants, parse_args, 1, 2, &cons_occupants_setting,
{ "/occupants show|hide|default [show|hide]", "Show or hide room occupants.", { "/occupants show|hide|default|size [show|hide] [percent]", "Show or hide room occupants.",
{ "/occupants show|hide|default [show|hide]", { "/occupants show|hide|default|size [show|hide] [percent]",
"----------------------------------------", "-------------------------------------------------------",
"show - Show the occupants panel in chat rooms.", "show - Show the occupants panel in chat rooms.",
"hide - Hide the occupants panel in chat rooms.", "hide - Hide the occupants panel in chat rooms.",
"default - Whether occupants are shown by default in new rooms, 'show' or 'hide'", "default - Whether occupants are shown by default in new rooms, 'show' or 'hide'",
"size - Percentage of the screen taken by the occupants list in rooms (1-99).",
NULL } } }, NULL } } },
{ "/form", { "/form",
@ -1244,6 +1246,7 @@ cmd_init(void)
autocomplete_add(roster_ac, "show"); autocomplete_add(roster_ac, "show");
autocomplete_add(roster_ac, "hide"); autocomplete_add(roster_ac, "hide");
autocomplete_add(roster_ac, "by"); autocomplete_add(roster_ac, "by");
autocomplete_add(roster_ac, "size");
roster_option_ac = autocomplete_new(); roster_option_ac = autocomplete_new();
autocomplete_add(roster_option_ac, "offline"); autocomplete_add(roster_option_ac, "offline");
@ -1388,6 +1391,7 @@ cmd_init(void)
autocomplete_add(occupants_ac, "show"); autocomplete_add(occupants_ac, "show");
autocomplete_add(occupants_ac, "hide"); autocomplete_add(occupants_ac, "hide");
autocomplete_add(occupants_ac, "default"); autocomplete_add(occupants_ac, "default");
autocomplete_add(occupants_ac, "size");
occupants_default_ac = autocomplete_new(); occupants_default_ac = autocomplete_new();
autocomplete_add(occupants_default_ac, "show"); autocomplete_add(occupants_default_ac, "show");

View File

@ -1330,6 +1330,23 @@ cmd_roster(gchar **args, struct cmd_help_t help)
cons_show_roster(list); cons_show_roster(list);
return TRUE; return TRUE;
// set roster size
} else if (g_strcmp0(args[0], "size") == 0) {
int intval = 0;
if (!args[1]) {
cons_show("Usage: %s", help.usage);
return TRUE;
} else if (_strtoi(args[1], &intval, 1, 99) == 0) {
prefs_set_roster_size(intval);
cons_show("Roster screen size set to: %d%%", intval);
if (prefs_get_boolean(PREF_ROSTER)) {
wins_resize_all();
}
return TRUE;
} else {
return TRUE;
}
// show/hide roster // show/hide roster
} else if (g_strcmp0(args[0], "show") == 0) { } else if (g_strcmp0(args[0], "show") == 0) {
if (args[1] == NULL) { if (args[1] == NULL) {
@ -2491,6 +2508,19 @@ cmd_occupants(gchar **args, struct cmd_help_t help)
return TRUE; return TRUE;
} }
if (g_strcmp0(args[0], "size") == 0) {
int intval = 0;
if (!args[1]) {
cons_show("Usage: %s", help.usage);
return TRUE;
} else if (_strtoi(args[1], &intval, 1, 99) == 0) {
prefs_set_occupants_size(intval);
cons_show("Occupants screen size set to: %d%%", intval);
wins_resize_all();
return TRUE;
}
}
if (g_strcmp0(args[0], "default") == 0) { if (g_strcmp0(args[0], "default") == 0) {
if (g_strcmp0(args[1], "show") == 0) { if (g_strcmp0(args[1], "show") == 0) {
cons_show("Occupant list enabled."); cons_show("Occupant list enabled.");

View File

@ -316,6 +316,44 @@ prefs_set_autoaway_time(gint value)
_save_prefs(); _save_prefs();
} }
void
prefs_set_occupants_size(gint value)
{
g_key_file_set_integer(prefs, PREF_GROUP_UI, "occupants.size", value);
_save_prefs();
}
gint
prefs_get_occupants_size(void)
{
gint result = g_key_file_get_integer(prefs, PREF_GROUP_UI, "occupants.size", NULL);
if (result > 99 || result < 1) {
return 20;
} else {
return result;
}
}
void
prefs_set_roster_size(gint value)
{
g_key_file_set_integer(prefs, PREF_GROUP_UI, "roster.size", value);
_save_prefs();
}
gint
prefs_get_roster_size(void)
{
gint result = g_key_file_get_integer(prefs, PREF_GROUP_UI, "roster.size", NULL);
if (result > 99 || result < 1) {
return 20;
} else {
return result;
}
}
gboolean gboolean
prefs_add_alias(const char * const name, const char * const value) prefs_add_alias(const char * const name, const char * const value)
{ {

View File

@ -58,7 +58,9 @@ typedef enum {
PREF_HISTORY, PREF_HISTORY,
PREF_MOUSE, PREF_MOUSE,
PREF_OCCUPANTS, PREF_OCCUPANTS,
PREF_OCCUPANTS_SIZE,
PREF_ROSTER, PREF_ROSTER,
PREF_ROSTER_SIZE,
PREF_ROSTER_OFFLINE, PREF_ROSTER_OFFLINE,
PREF_ROSTER_RESOURCE, PREF_ROSTER_RESOURCE,
PREF_ROSTER_BY, PREF_ROSTER_BY,
@ -121,6 +123,11 @@ gint prefs_get_reconnect(void);
void prefs_set_autoping(gint value); void prefs_set_autoping(gint value);
gint prefs_get_autoping(void); gint prefs_get_autoping(void);
void prefs_set_occupants_size(gint value);
gint prefs_get_occupants_size(void);
void prefs_set_roster_size(gint value);
gint prefs_get_roster_size(void);
gint prefs_get_autoaway_time(void); gint prefs_get_autoaway_time(void);
void prefs_set_autoaway_time(gint value); void prefs_set_autoaway_time(gint value);

View File

@ -883,6 +883,9 @@ _cons_occupants_setting(void)
cons_show("Occupants (/occupants) : show"); cons_show("Occupants (/occupants) : show");
else else
cons_show("Occupants (/occupants) : hide"); cons_show("Occupants (/occupants) : hide");
int size = prefs_get_occupants_size();
cons_show("Occupants size (/occupants) : %d", size);
} }
static void static void
@ -958,6 +961,9 @@ _cons_roster_setting(void)
cons_show("Roster resource (/roster) : show"); cons_show("Roster resource (/roster) : show");
else else
cons_show("Roster resource (/roster) : hide"); cons_show("Roster resource (/roster) : hide");
int size = prefs_get_roster_size();
cons_show("Roster size (/roster) : %d", size);
} }
static void static void

View File

@ -53,9 +53,6 @@
#define CEILING(X) (X-(int)(X) > 0 ? (int)(X+1) : (int)(X)) #define CEILING(X) (X-(int)(X) > 0 ? (int)(X+1) : (int)(X))
static int roster_win_percent = 20;
static int occupants_win_percent = 20;
static void _win_print(ProfWin *window, const char show_char, const char * const date_fmt, static void _win_print(ProfWin *window, const char show_char, const char * const date_fmt,
int flags, int attrs, const char * const from, const char * const message); int flags, int attrs, const char * const from, const char * const message);
static void _win_print_wrapped(WINDOW *win, const char * const message); static void _win_print_wrapped(WINDOW *win, const char * const message);
@ -63,6 +60,7 @@ static void _win_print_wrapped(WINDOW *win, const char * const message);
int int
win_roster_cols(void) win_roster_cols(void)
{ {
int roster_win_percent = prefs_get_roster_size();
int cols = getmaxx(stdscr); int cols = getmaxx(stdscr);
return CEILING( (((double)cols) / 100) * roster_win_percent); return CEILING( (((double)cols) / 100) * roster_win_percent);
} }
@ -70,6 +68,7 @@ win_roster_cols(void)
int int
win_occpuants_cols(void) win_occpuants_cols(void)
{ {
int occupants_win_percent = prefs_get_occupants_size();
int cols = getmaxx(stdscr); int cols = getmaxx(stdscr);
return CEILING( (((double)cols) / 100) * occupants_win_percent); return CEILING( (((double)cols) / 100) * occupants_win_percent);
} }