about summary refs log tree commit diff stats
path: root/src/command/command.c
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-01-09 22:21:09 +0000
committerJames Booth <boothj5@gmail.com>2016-01-09 22:21:09 +0000
commitde902434010f68b5d3d0d7d8dbfb9d0b0b1c0b9b (patch)
treecdea9519785364e5c4138059d79311661066cdc9 /src/command/command.c
parentcd2458c0198bab99655248dd2e1071a862e5ef80 (diff)
downloadprofani-tty-de902434010f68b5d3d0d7d8dbfb9d0b0b1c0b9b.tar.gz
Added roster rooms order preference
Diffstat (limited to 'src/command/command.c')
-rw-r--r--src/command/command.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/src/command/command.c b/src/command/command.c
index 1a72f74a..27661679 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -281,6 +281,7 @@ static struct cmd_t command_defs[] =
             "/roster hide [offline|resource|presence|status|empty|count|priority|rooms]",
             "/roster by group|presence|none",
             "/roster order name|presence",
+            "/roster room order name|unread",
             "/roster header char <char>|none",
             "/roster presence indent <indent>",
             "/roster contact char <char>|none",
@@ -323,6 +324,8 @@ static struct cmd_t command_defs[] =
             { "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." },
+            { "room order name",            "Order roster rooms by name." },
+            { "room order unread",          "Order roster rooms by unread messages, and then by name." },
             { "header char <char>",         "Prefix roster headers with specified character." },
             { "header char none",           "Remove roster header character prefix." },
             { "contact char <char>",        "Prefix roster contacts with specified character." },
@@ -1895,6 +1898,8 @@ static Autocomplete roster_resource_ac;
 static Autocomplete roster_presence_ac;
 static Autocomplete roster_char_ac;
 static Autocomplete roster_remove_all_ac;
+static Autocomplete roster_room_ac;
+static Autocomplete roster_room_order_ac;
 static Autocomplete group_ac;
 static Autocomplete bookmark_ac;
 static Autocomplete bookmark_property_ac;
@@ -2155,6 +2160,7 @@ cmd_init(void)
     autocomplete_add(roster_ac, "hide");
     autocomplete_add(roster_ac, "by");
     autocomplete_add(roster_ac, "order");
+    autocomplete_add(roster_ac, "room");
     autocomplete_add(roster_ac, "size");
     autocomplete_add(roster_ac, "wrap");
     autocomplete_add(roster_ac, "header");
@@ -2199,6 +2205,13 @@ cmd_init(void)
     autocomplete_add(roster_order_ac, "name");
     autocomplete_add(roster_order_ac, "presence");
 
+    roster_room_ac = autocomplete_new();
+    autocomplete_add(roster_room_ac, "order");
+
+    roster_room_order_ac = autocomplete_new();
+    autocomplete_add(roster_room_order_ac, "name");
+    autocomplete_add(roster_room_order_ac, "unread");
+
     roster_remove_all_ac = autocomplete_new();
     autocomplete_add(roster_remove_all_ac, "contacts");
 
@@ -2472,6 +2485,8 @@ cmd_uninit(void)
     autocomplete_free(roster_show_ac);
     autocomplete_free(roster_by_ac);
     autocomplete_free(roster_order_ac);
+    autocomplete_free(roster_room_ac);
+    autocomplete_free(roster_room_order_ac);
     autocomplete_free(roster_remove_all_ac);
     autocomplete_free(group_ac);
     autocomplete_free(bookmark_ac);
@@ -2681,6 +2696,8 @@ cmd_reset_autocomplete(ProfWin *window)
     autocomplete_reset(roster_show_ac);
     autocomplete_reset(roster_by_ac);
     autocomplete_reset(roster_order_ac);
+    autocomplete_reset(roster_room_ac);
+    autocomplete_reset(roster_room_order_ac);
     autocomplete_reset(roster_remove_all_ac);
     autocomplete_reset(group_ac);
     autocomplete_reset(titlebar_ac);
@@ -3087,6 +3104,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_ac(input, "/roster room order", roster_room_order_ac, TRUE);
+    if (result) {
+        return result;
+    }
 
     jabber_conn_status_t conn_status = jabber_get_connection_status();
     if (conn_status == JABBER_CONNECTED) {
@@ -3124,6 +3145,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_ac(input, "/roster room", roster_room_ac, TRUE);
+    if (result) {
+        return result;
+    }
     result = autocomplete_param_with_func(input, "/roster wrap", prefs_autocomplete_boolean_choice);
     if (result) {
         return result;