about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-10-09 13:16:36 +0100
committerJames Booth <boothj5@gmail.com>2014-10-09 13:16:36 +0100
commit778a495fbd708fbb1ac9c6f9eb3c4890a4a51bc3 (patch)
treeaf21682295ed35d7659bb90d5e21e6eea00a4660
parentf6e0a219ffb49b77a1d022ba5b33ca5c3a763c0b (diff)
downloadprofani-tty-778a495fbd708fbb1ac9c6f9eb3c4890a4a51bc3.tar.gz
Added /occupants commands, unfinished
-rw-r--r--src/command/command.c9
-rw-r--r--src/command/commands.c29
-rw-r--r--src/command/commands.h1
-rw-r--r--src/ui/core.c22
-rw-r--r--src/ui/ui.h2
5 files changed, 62 insertions, 1 deletions
diff --git a/src/command/command.c b/src/command/command.c
index b4fc5645..f09c8298 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -317,6 +317,15 @@ static struct cmd_t command_defs[] =
           "info    - Show room details.",
           NULL } } },
 
+    { "/occupants",
+        cmd_occupants, parse_args, 1, 1, NULL,
+        { "/occupants show|hide", "Room configuration.",
+        { "/occupants show|hide",
+          "--------------------",
+          "show - Show the occupants panel in chat rooms.",
+          "hide - Hide the occupants panel in chat rooms.",
+          NULL } } },
+
     { "/form",
         cmd_form, parse_args, 1, 3, NULL,
         { "/form show|submit|cancel|set|add|remove|help [tag] [value]", "Form manipulation.",
diff --git a/src/command/commands.c b/src/command/commands.c
index ff202df4..f3f9e4eb 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -2327,6 +2327,35 @@ cmd_room(gchar **args, struct cmd_help_t help)
 }
 
 gboolean
+cmd_occupants(gchar **args, struct cmd_help_t help)
+{
+    jabber_conn_status_t conn_status = jabber_get_connection_status();
+
+    if (conn_status != JABBER_CONNECTED) {
+        cons_show("You are not currently connected.");
+        return TRUE;
+    }
+
+    win_type_t win_type = ui_current_win_type();
+    if (win_type != WIN_MUC) {
+        cons_show("Command '/occupants' does not apply to this window.");
+        return TRUE;
+    }
+
+    char *room = ui_current_recipient();
+
+    if (g_strcmp0(args[0], "show") == 0) {
+        ui_room_show_occupants(room);
+    } else if (g_strcmp0(args[0], "hide") == 0) {
+        ui_room_hide_occupants(room);
+    } else {
+        cons_show("Usage: %s", help.usage);
+    }
+
+    return TRUE;
+}
+
+gboolean
 cmd_rooms(gchar **args, struct cmd_help_t help)
 {
     jabber_conn_status_t conn_status = jabber_get_connection_status();
diff --git a/src/command/commands.h b/src/command/commands.h
index 528c78aa..0145cfd8 100644
--- a/src/command/commands.h
+++ b/src/command/commands.h
@@ -126,5 +126,6 @@ gboolean cmd_alias(gchar **args, struct cmd_help_t help);
 gboolean cmd_xmlconsole(gchar **args, struct cmd_help_t help);
 gboolean cmd_ping(gchar **args, struct cmd_help_t help);
 gboolean cmd_form(gchar **args, struct cmd_help_t help);
+gboolean cmd_occupants(gchar **args, struct cmd_help_t help);
 
 #endif
diff --git a/src/ui/core.c b/src/ui/core.c
index a96d152d..6ed88e11 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -2721,7 +2721,7 @@ static void
 _ui_muc_roster(const char * const room)
 {
     ProfWin *window = wins_get_by_recipient(room);
-    if (room) {
+    if (window) {
         GList *roster = muc_roster(room);
         if (roster) {
             werase(window->subwin);
@@ -2784,6 +2784,24 @@ _ui_muc_roster(const char * const room)
 }
 
 static void
+_ui_room_show_occupants(const char * const room)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window && !window->subwin) {
+        cons_debug("Showing occupants");
+    }
+}
+
+static void
+_ui_room_hide_occupants(const char * const room)
+{
+    ProfWin *window = wins_get_by_recipient(room);
+    if (window && window->subwin) {
+        cons_debug("Hiding occupants");
+    }
+}
+
+static void
 _win_handle_switch(const wint_t * const ch)
 {
     if (*ch == KEY_F(1)) {
@@ -3079,5 +3097,7 @@ ui_init_module(void)
     ui_handle_room_role_list_error = _ui_handle_room_role_list_error;
     ui_handle_room_role_list = _ui_handle_room_role_list;
     ui_muc_roster = _ui_muc_roster;
+    ui_room_show_occupants = _ui_room_show_occupants; 
+    ui_room_hide_occupants = _ui_room_hide_occupants;
 }
 
diff --git a/src/ui/ui.h b/src/ui/ui.h
index 0c61c296..12969291 100644
--- a/src/ui/ui.h
+++ b/src/ui/ui.h
@@ -162,6 +162,8 @@ void (*ui_room_member_nick_change)(const char * const room,
 void (*ui_room_nick_change)(const char * const room, const char * const nick);
 void (*ui_room_member_presence)(const char * const room,
     const char * const nick, const char * const show, const char * const status);
+void (*ui_room_show_occupants)(const char * const room);
+void (*ui_room_hide_occupants)(const char * const room);
 void (*ui_roster_add)(const char * const barejid, const char * const name);
 void (*ui_roster_remove)(const char * const barejid);
 void (*ui_contact_already_in_group)(const char * const contact, const char * const group);