about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-01-27 22:34:22 +0000
committerJames Booth <boothj5@gmail.com>2016-01-27 22:34:22 +0000
commitdbc52de0433de7ec441896832b2ec35fc4fb2fc4 (patch)
tree8a39fab40236b759e3b1377368090808cd792d98 /src
parent8d10dbfc494945d9f06d47466c20d6df32b8bc8e (diff)
downloadprofani-tty-dbc52de0433de7ec441896832b2ec35fc4fb2fc4.tar.gz
Added /roster count command
Diffstat (limited to 'src')
-rw-r--r--src/command/command.c29
-rw-r--r--src/command/commands.h2
2 files changed, 28 insertions, 3 deletions
diff --git a/src/command/command.c b/src/command/command.c
index bfa1385a..c57f48a9 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -278,9 +278,11 @@ static struct cmd_t command_defs[] =
         CMD_SYN(
             "/roster",
             "/roster online",
-            "/roster show [offline|resource|presence|status|empty|count|priority|contacts|rooms]",
-            "/roster hide [offline|resource|presence|status|empty|count|priority|contacts|rooms]",
+            "/roster show [offline|resource|presence|status|empty|priority|contacts|rooms]",
+            "/roster hide [offline|resource|presence|status|empty|priority|contacts|rooms]",
             "/roster by group|presence|none",
+            "/roster count unread|items|off"
+            "/roster count zero on|off"
             "/roster order name|presence",
             "/roster unread before|after|off",
             "/roster room char <char>|none",
@@ -331,6 +333,11 @@ 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." },
+            { "count unread",               "Show total unread message count with roster headers." },
+            { "count items",                "Show item count with roster headers." },
+            { "count off",                  "Do not show any count with roster headers." },
+            { "count zero on",              "Show roster count when 0." },
+            { "count zero off",             "Hide roster count when 0." },
             { "order name",                 "Order roster items by name only." },
             { "order presence",             "Order roster items by presence, and then by name." },
             { "unread before",              "Show unread message count before contact in roster." },
@@ -1930,6 +1937,7 @@ static Autocomplete wins_ac;
 static Autocomplete roster_ac;
 static Autocomplete roster_show_ac;
 static Autocomplete roster_by_ac;
+static Autocomplete roster_count_ac;
 static Autocomplete roster_order_ac;
 static Autocomplete roster_header_ac;
 static Autocomplete roster_contact_ac;
@@ -2200,6 +2208,7 @@ cmd_init(void)
     autocomplete_add(roster_ac, "show");
     autocomplete_add(roster_ac, "hide");
     autocomplete_add(roster_ac, "by");
+    autocomplete_add(roster_ac, "count");
     autocomplete_add(roster_ac, "order");
     autocomplete_add(roster_ac, "unread");
     autocomplete_add(roster_ac, "room");
@@ -2251,6 +2260,12 @@ cmd_init(void)
     autocomplete_add(roster_by_ac, "presence");
     autocomplete_add(roster_by_ac, "none");
 
+    roster_count_ac = autocomplete_new();
+    autocomplete_add(roster_count_ac, "unread");
+    autocomplete_add(roster_count_ac, "items");
+    autocomplete_add(roster_count_ac, "off");
+    autocomplete_add(roster_count_ac, "zero");
+
     roster_order_ac = autocomplete_new();
     autocomplete_add(roster_order_ac, "name");
     autocomplete_add(roster_order_ac, "presence");
@@ -2545,6 +2560,7 @@ cmd_uninit(void)
     autocomplete_free(roster_char_ac);
     autocomplete_free(roster_show_ac);
     autocomplete_free(roster_by_ac);
+    autocomplete_free(roster_count_ac);
     autocomplete_free(roster_order_ac);
     autocomplete_free(roster_room_ac);
     autocomplete_free(roster_unread_ac);
@@ -2758,6 +2774,7 @@ cmd_reset_autocomplete(ProfWin *window)
     autocomplete_reset(roster_char_ac);
     autocomplete_reset(roster_show_ac);
     autocomplete_reset(roster_by_ac);
+    autocomplete_reset(roster_count_ac);
     autocomplete_reset(roster_order_ac);
     autocomplete_reset(roster_room_ac);
     autocomplete_reset(roster_unread_ac);
@@ -3192,6 +3209,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_func(input, "/roster count zero", prefs_autocomplete_boolean_choice);
+    if (result) {
+        return result;
+    }
 
     jabber_conn_status_t conn_status = jabber_get_connection_status();
     if (conn_status == JABBER_CONNECTED) {
@@ -3225,6 +3246,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_ac(input, "/roster count", roster_count_ac, TRUE);
+    if (result) {
+        return result;
+    }
     result = autocomplete_param_with_ac(input, "/roster order", roster_order_ac, TRUE);
     if (result) {
         return result;
diff --git a/src/command/commands.h b/src/command/commands.h
index 5972e224..14683115 100644
--- a/src/command/commands.h
+++ b/src/command/commands.h
@@ -42,7 +42,7 @@ typedef struct cmd_help_t {
     const gchar *tags[20];
     const gchar *synopsis[50];
     const gchar *desc;
-    const gchar *args[64][2];
+    const gchar *args[128][2];
     const gchar *examples[20];
 } CommandHelp;