about summary refs log tree commit diff stats
path: root/src/command
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2015-04-12 02:16:13 +0100
committerJames Booth <boothj5@gmail.com>2015-04-12 02:16:13 +0100
commitbcfbbac49a0b031a16f61204955861fd2f7c6db8 (patch)
treebc49794e02bcbbd0e07292d6f4fe7dc14744b253 /src/command
parent7ba7e098fead9e7a9a72090e30bc64d9a12e87ee (diff)
parent57dc5f14efec19c9532c2ec9a8742e90e4c964d2 (diff)
downloadprofani-tty-bcfbbac49a0b031a16f61204955861fd2f7c6db8.tar.gz
Merge branch 'master' into pgp
Diffstat (limited to 'src/command')
-rw-r--r--src/command/command.c45
-rw-r--r--src/command/commands.c34
2 files changed, 64 insertions, 15 deletions
diff --git a/src/command/command.c b/src/command/command.c
index ab59e2a0..519550a3 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -451,16 +451,19 @@ static struct cmd_t command_defs[] =
           NULL } } },
 
     { "/occupants",
-        cmd_occupants, parse_args, 1, 2, cons_occupants_setting,
-        { "/occupants show|hide|default|size [show|hide] [percent]", "Show or hide room occupants.",
-        { "/occupants show|hide|default|size [show|hide] [percent]",
-          "-------------------------------------------------------",
+        cmd_occupants, parse_args, 1, 3, cons_occupants_setting,
+        { "/occupants show|hide|default|size [jid|show|hide|percent] [jid]", "Show or hide room occupants.",
+        { "/occupants show|hide|default|size [jid|show|hide|percent] [jid]",
+          "---------------------------------------------------------------",
           "Show or hide room occupants, and occupants panel display settings.",
           "",
-          "show              : Show the occupants panel in chat rooms.",
-          "hide              : Hide the occupants panel in chat rooms.",
-          "default show|hide : Whether occupants are shown by default in new rooms, 'show' or 'hide'",
-          "size percent      : Percentage of the screen taken by the occupants list in rooms (1-99).",
+          "show                    : Show the occupants panel in current room.",
+          "hide                    : Hide the occupants panel in current room.",
+          "show jid                : Show jid in the occupants panel in current room.",
+          "hide jid                : Hide jid in the occupants panel in current room.",
+          "default show|hide       : Whether occupants are shown by default in new rooms.",
+          "default show|hide jid   : Whether occupants jids are shown by default in new rooms.",
+          "size percent            : Percentage of the screen taken by the occupants list in rooms (1-99).",
           NULL } } },
 
     { "/form",
@@ -1208,6 +1211,7 @@ static Autocomplete form_ac;
 static Autocomplete form_field_multi_ac;
 static Autocomplete occupants_ac;
 static Autocomplete occupants_default_ac;
+static Autocomplete occupants_show_ac;
 static Autocomplete time_ac;
 static Autocomplete time_statusbar_ac;
 static Autocomplete resource_ac;
@@ -1553,6 +1557,9 @@ cmd_init(void)
     autocomplete_add(occupants_default_ac, "show");
     autocomplete_add(occupants_default_ac, "hide");
 
+    occupants_show_ac = autocomplete_new();
+    autocomplete_add(occupants_show_ac, "jid");
+
     time_ac = autocomplete_new();
     autocomplete_add(time_ac, "minutes");
     autocomplete_add(time_ac, "seconds");
@@ -1635,6 +1642,7 @@ cmd_uninit(void)
     autocomplete_free(form_field_multi_ac);
     autocomplete_free(occupants_ac);
     autocomplete_free(occupants_default_ac);
+    autocomplete_free(occupants_show_ac);
     autocomplete_free(time_ac);
     autocomplete_free(time_statusbar_ac);
     autocomplete_free(resource_ac);
@@ -1803,6 +1811,7 @@ cmd_reset_autocomplete()
     autocomplete_reset(form_field_multi_ac);
     autocomplete_reset(occupants_ac);
     autocomplete_reset(occupants_default_ac);
+    autocomplete_reset(occupants_show_ac);
     autocomplete_reset(time_ac);
     autocomplete_reset(time_statusbar_ac);
     autocomplete_reset(resource_ac);
@@ -2653,11 +2662,31 @@ _occupants_autocomplete(const char * const input)
 {
     char *found = NULL;
 
+    found = autocomplete_param_with_ac(input, "/occupants default show", occupants_show_ac, TRUE);
+    if (found != NULL) {
+        return found;
+    }
+
+    found = autocomplete_param_with_ac(input, "/occupants default hide", occupants_show_ac, TRUE);
+    if (found != NULL) {
+        return found;
+    }
+
     found = autocomplete_param_with_ac(input, "/occupants default", occupants_default_ac, TRUE);
     if (found != NULL) {
         return found;
     }
 
+    found = autocomplete_param_with_ac(input, "/occupants show", occupants_show_ac, TRUE);
+    if (found != NULL) {
+        return found;
+    }
+
+    found = autocomplete_param_with_ac(input, "/occupants hide", occupants_show_ac, TRUE);
+    if (found != NULL) {
+        return found;
+    }
+
     found = autocomplete_param_with_ac(input, "/occupants", occupants_ac, TRUE);
     if (found != NULL) {
         return found;
diff --git a/src/command/commands.c b/src/command/commands.c
index 5cd9c347..049e9893 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2866,12 +2866,22 @@ cmd_occupants(gchar **args, struct cmd_help_t help)
 
     if (g_strcmp0(args[0], "default") == 0) {
         if (g_strcmp0(args[1], "show") == 0) {
-            cons_show("Occupant list enabled.");
-            prefs_set_boolean(PREF_OCCUPANTS, TRUE);
+            if (g_strcmp0(args[2], "jid") == 0) {
+                cons_show("Occupant jids enabled.");
+                prefs_set_boolean(PREF_OCCUPANTS_JID, TRUE);
+            } else {
+                cons_show("Occupant list enabled.");
+                prefs_set_boolean(PREF_OCCUPANTS, TRUE);
+            }
             return TRUE;
         } else if (g_strcmp0(args[1], "hide") == 0) {
-            cons_show("Occupant list disabled.");
-            prefs_set_boolean(PREF_OCCUPANTS, FALSE);
+            if (g_strcmp0(args[2], "jid") == 0) {
+                cons_show("Occupant jids disabled.");
+                prefs_set_boolean(PREF_OCCUPANTS_JID, FALSE);
+            } else {
+                cons_show("Occupant list disabled.");
+                prefs_set_boolean(PREF_OCCUPANTS, FALSE);
+            }
             return TRUE;
         } else {
             cons_show("Usage: %s", help.usage);
@@ -2881,16 +2891,26 @@ cmd_occupants(gchar **args, struct cmd_help_t help)
 
     win_type_t win_type = ui_current_win_type();
     if (win_type != WIN_MUC) {
-        cons_show("Cannot show/hide occupant list when not in chat room.");
+        cons_show("Cannot apply setting when not in chat room.");
         return TRUE;
     }
 
     ProfMucWin *mucwin = wins_get_current_muc();
 
     if (g_strcmp0(args[0], "show") == 0) {
-        ui_room_show_occupants(mucwin->roomjid);
+        if (g_strcmp0(args[1], "jid") == 0) {
+            mucwin->showjid = TRUE;
+            ui_room_update_occupants(mucwin->roomjid);
+        } else {
+            ui_room_show_occupants(mucwin->roomjid);
+        }
     } else if (g_strcmp0(args[0], "hide") == 0) {
-        ui_room_hide_occupants(mucwin->roomjid);
+        if (g_strcmp0(args[1], "jid") == 0) {
+            mucwin->showjid = FALSE;
+            ui_room_update_occupants(mucwin->roomjid);
+        } else {
+            ui_room_hide_occupants(mucwin->roomjid);
+        }
     } else {
         cons_show("Usage: %s", help.usage);
     }