Added /roster order name|presence

This commit is contained in:
James Booth
2015-11-17 23:37:33 +00:00
parent 230a14219c
commit 8e8852fa9f
8 changed files with 184 additions and 10 deletions

View File

@@ -277,6 +277,7 @@ static struct cmd_t command_defs[] =
"/roster show [offline|resource|presence|status|empty]",
"/roster hide [offline|resource|presence|status|empty]",
"/roster by group|presence|none",
"/roster order name|presence"
"/roster size <percent>",
"/roster add <jid> [<nick>]",
"/roster remove <jid>",
@@ -303,6 +304,8 @@ static struct cmd_t command_defs[] =
{ "by group", "Group contacts in the roster panel by roster group." },
{ "by presence", "Group contacts in the roster panel by presence." },
{ "by none", "No grouping in the roster panel." },
{ "order name", "Order roster items by name only." },
{ "order presence", "Order roster items by presence, and then by name." },
{ "size <precent>", "Percentage of the screen taken up by the roster (1-99)." },
{ "add <jid> [<nick>]", "Add a new item to the roster." },
{ "remove <jid>", "Removes an item from the roster." },
@@ -1771,6 +1774,7 @@ static Autocomplete wins_ac;
static Autocomplete roster_ac;
static Autocomplete roster_option_ac;
static Autocomplete roster_by_ac;
static Autocomplete roster_order_ac;
static Autocomplete roster_remove_all_ac;
static Autocomplete group_ac;
static Autocomplete bookmark_ac;
@@ -2014,6 +2018,7 @@ cmd_init(void)
autocomplete_add(roster_ac, "show");
autocomplete_add(roster_ac, "hide");
autocomplete_add(roster_ac, "by");
autocomplete_add(roster_ac, "order");
autocomplete_add(roster_ac, "size");
roster_option_ac = autocomplete_new();
@@ -2028,6 +2033,10 @@ cmd_init(void)
autocomplete_add(roster_by_ac, "presence");
autocomplete_add(roster_by_ac, "none");
roster_order_ac = autocomplete_new();
autocomplete_add(roster_order_ac, "name");
autocomplete_add(roster_order_ac, "presence");
roster_remove_all_ac = autocomplete_new();
autocomplete_add(roster_remove_all_ac, "contacts");
@@ -2282,6 +2291,7 @@ cmd_uninit(void)
autocomplete_free(roster_ac);
autocomplete_free(roster_option_ac);
autocomplete_free(roster_by_ac);
autocomplete_free(roster_order_ac);
autocomplete_free(roster_remove_all_ac);
autocomplete_free(group_ac);
autocomplete_free(bookmark_ac);
@@ -2468,6 +2478,7 @@ cmd_reset_autocomplete(ProfWin *window)
autocomplete_reset(roster_ac);
autocomplete_reset(roster_option_ac);
autocomplete_reset(roster_by_ac);
autocomplete_reset(roster_order_ac);
autocomplete_reset(roster_remove_all_ac);
autocomplete_reset(group_ac);
autocomplete_reset(titlebar_ac);
@@ -2881,6 +2892,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
if (result) {
return result;
}
result = autocomplete_param_with_ac(input, "/roster order", roster_order_ac, TRUE);
if (result) {
return result;
}
result = autocomplete_param_with_ac(input, "/roster", roster_ac, TRUE);
if (result) {
return result;

View File

@@ -1872,6 +1872,26 @@ cmd_roster(ProfWin *window, const char *const command, gchar **args)
cons_bad_cmd_usage(command);
return TRUE;
}
// roster item order
} else if (g_strcmp0(args[0], "order") == 0) {
if (g_strcmp0(args[1], "name") == 0) {
cons_show("Ordering roster by name");
prefs_set_string(PREF_ROSTER_ORDER, "name");
if (conn_status == JABBER_CONNECTED) {
rosterwin_roster();
}
return TRUE;
} else if (g_strcmp0(args[1], "presence") == 0) {
cons_show("Ordering roster by presence");
prefs_set_string(PREF_ROSTER_ORDER, "presence");
if (conn_status == JABBER_CONNECTED) {
rosterwin_roster();
}
return TRUE;
} else {
cons_bad_cmd_usage(command);
return TRUE;
}
// add contact
} else if (strcmp(args[0], "add") == 0) {
if (conn_status != JABBER_CONNECTED) {