about summary refs log tree commit diff stats
path: root/src/command
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2016-01-24 01:04:21 +0000
committerJames Booth <boothj5@gmail.com>2016-01-24 01:04:21 +0000
commit6d8a3e2020067a9a322b27a311e83a892f79962e (patch)
tree74b39432e8257b1a5ee05352ae0ba327c17c40e2 /src/command
parent67abfaa21e02ae17baf212d65a5e6a999929633a (diff)
downloadprofani-tty-6d8a3e2020067a9a322b27a311e83a892f79962e.tar.gz
Added /roster private command
Diffstat (limited to 'src/command')
-rw-r--r--src/command/command.c17
-rw-r--r--src/command/commands.c27
2 files changed, 44 insertions, 0 deletions
diff --git a/src/command/command.c b/src/command/command.c
index f1e70f12..37787c56 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -286,6 +286,7 @@ static struct cmd_t command_defs[] =
             "/roster room position first|last",
             "/roster room order name|unread",
             "/roster room unread before|after|off",
+            "/roster private room|group|off",
             "/roster header char <char>|none",
             "/roster presence indent <indent>",
             "/roster contact char <char>|none",
@@ -340,6 +341,9 @@ static struct cmd_t command_defs[] =
             { "room unread before",         "Show unread message count before room in roster." },
             { "room unread after",          "Show unread message count after room in roster." },
             { "room unread off",            "Do not show unread message count for rooms in roster." },
+            { "room private room",          "Show room private chats below the room in the roster." },
+            { "room private group",         "Show room private chats as a separate roster group." },
+            { "room private off",           "Do not show room private chats in the roster." },
             { "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." },
@@ -1931,6 +1935,7 @@ static Autocomplete roster_room_ac;
 static Autocomplete roster_room_position_ac;
 static Autocomplete roster_room_order_ac;
 static Autocomplete roster_unread_ac;
+static Autocomplete roster_private_ac;
 static Autocomplete group_ac;
 static Autocomplete bookmark_ac;
 static Autocomplete bookmark_property_ac;
@@ -2198,6 +2203,12 @@ cmd_init(void)
     autocomplete_add(roster_ac, "contact");
     autocomplete_add(roster_ac, "resource");
     autocomplete_add(roster_ac, "presence");
+    autocomplete_add(roster_ac, "private");
+
+    roster_private_ac = autocomplete_new();
+    autocomplete_add(roster_private_ac, "room");
+    autocomplete_add(roster_private_ac, "group");
+    autocomplete_add(roster_private_ac, "off");
 
     roster_header_ac = autocomplete_new();
     autocomplete_add(roster_header_ac, "char");
@@ -2532,6 +2543,7 @@ cmd_uninit(void)
     autocomplete_free(roster_room_position_ac);
     autocomplete_free(roster_room_order_ac);
     autocomplete_free(roster_remove_all_ac);
+    autocomplete_free(roster_private_ac);
     autocomplete_free(group_ac);
     autocomplete_free(bookmark_ac);
     autocomplete_free(bookmark_property_ac);
@@ -2744,6 +2756,7 @@ cmd_reset_autocomplete(ProfWin *window)
     autocomplete_reset(roster_room_position_ac);
     autocomplete_reset(roster_room_order_ac);
     autocomplete_reset(roster_remove_all_ac);
+    autocomplete_reset(roster_private_ac);
     autocomplete_reset(group_ac);
     autocomplete_reset(titlebar_ac);
     autocomplete_reset(bookmark_ac);
@@ -3228,6 +3241,10 @@ _roster_autocomplete(ProfWin *window, const char *const input)
     if (result) {
         return result;
     }
+    result = autocomplete_param_with_ac(input, "/roster private", roster_private_ac, TRUE);
+    if (result) {
+        return result;
+    }
     result = autocomplete_param_with_ac(input, "/roster", roster_ac, TRUE);
     if (result) {
         return result;
diff --git a/src/command/commands.c b/src/command/commands.c
index 933c65bd..2356b17b 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2408,6 +2408,33 @@ cmd_roster(ProfWin *window, const char *const command, gchar **args)
             return TRUE;
         }
 
+    } else if (g_strcmp0(args[0], "private") == 0) {
+        if (g_strcmp0(args[1], "room") == 0) {
+            cons_show("Showing room private chats under room.");
+            prefs_set_string(PREF_ROSTER_PRIVATE, "room");
+            if (conn_status == JABBER_CONNECTED) {
+                rosterwin_roster();
+            }
+            return TRUE;
+        } else if (g_strcmp0(args[1], "group") == 0) {
+            cons_show("Showing room private chats as roster group.");
+            prefs_set_string(PREF_ROSTER_PRIVATE, "group");
+            if (conn_status == JABBER_CONNECTED) {
+                rosterwin_roster();
+            }
+            return TRUE;
+        } else if (g_strcmp0(args[1], "off") == 0) {
+            cons_show("Hiding room private chats in roster.");
+            prefs_set_string(PREF_ROSTER_PRIVATE, "off");
+            if (conn_status == JABBER_CONNECTED) {
+                rosterwin_roster();
+            }
+            return TRUE;
+        } else {
+            cons_bad_cmd_usage(command);
+            return TRUE;
+        }
+
     } else if (g_strcmp0(args[0], "room") == 0) {
         if (g_strcmp0(args[1], "position") == 0) {
             if (g_strcmp0(args[2], "first") == 0) {