about summary refs log tree commit diff stats
path: root/src/command
diff options
context:
space:
mode:
Diffstat (limited to 'src/command')
-rw-r--r--src/command/command.c13
-rw-r--r--src/command/commands.c33
2 files changed, 32 insertions, 14 deletions
diff --git a/src/command/command.c b/src/command/command.c
index ecfbca3a..73902ad3 100644
--- a/src/command/command.c
+++ b/src/command/command.c
@@ -306,10 +306,13 @@ static struct cmd_t command_defs[] =
 
     { "/room",
         cmd_room, parse_args, 2, 2, NULL,
-        { "/room config accept|cancel", "Room configuration.",
-        { "/room config accept|cncel",
-          "-------------------------",
-          "Accept or cancel default room configuration.",
+        { "/room config accept|destroy|edit|cancel", "Room configuration.",
+        { "/room config accept|destroy|edit|cancel",
+          "---------------------------------------",
+          "config accept  - Accept default room configuration.",
+          "config destroy - Cancel default room configuration.",
+          "config edit    - Edit room configuration.",
+          "config cancel  - Cancel room configuration.",
           NULL } } },
 
     { "/rooms",
@@ -1210,6 +1213,8 @@ cmd_init(void)
 
     room_config_ac = autocomplete_new();
     autocomplete_add(room_config_ac, "accept");
+    autocomplete_add(room_config_ac, "destroy");
+    autocomplete_add(room_config_ac, "edit");
     autocomplete_add(room_config_ac, "cancel");
 
     cmd_history_init();
diff --git a/src/command/commands.c b/src/command/commands.c
index 7b49ad61..e6ec9e2d 100644
--- a/src/command/commands.c
+++ b/src/command/commands.c
@@ -1809,7 +1809,9 @@ cmd_room(gchar **args, struct cmd_help_t help)
     }
 
     if ((g_strcmp0(args[1], "accept") != 0) &&
-            (g_strcmp0(args[1], "cancel") != 0)) {
+            (g_strcmp0(args[1], "cancel") != 0) &&
+            (g_strcmp0(args[1], "destroy") != 0) &&
+            (g_strcmp0(args[1], "edit") != 0)) {
         cons_show("Usage: %s", help.usage);
         return TRUE;
     }
@@ -1821,22 +1823,33 @@ cmd_room(gchar **args, struct cmd_help_t help)
     if (ui_index == 10) {
         ui_index = 0;
     }
-    gboolean requires_config = muc_requires_config(room);
-    if (!requires_config) {
-        win_save_vprint(window, '!', NULL, 0, COLOUR_ROOMINFO, "", "Current room does not require configuration.");
+
+    if (g_strcmp0(args[1], "accept") == 0) {
+        gboolean requires_config = muc_requires_config(room);
+        if (!requires_config) {
+            win_save_vprint(window, '!', NULL, 0, COLOUR_ROOMINFO, "", "Current room does not require configuration.");
+            return TRUE;
+        } else {
+            iq_confirm_instant_room(room);
+            muc_set_requires_config(room, FALSE);
+            win_save_vprint(window, '!', NULL, 0, COLOUR_ROOMINFO, "", "Room unlocked.");
+            cons_show("Room unlocked: %s (%d)", room, ui_index);
+            return TRUE;
+        }
+    }
+
+    if (g_strcmp0(args[1], "destroy") == 0) {
+        iq_destroy_instant_room(room);
         return TRUE;
     }
 
-    if (g_strcmp0(args[1], "accept") == 0) {
-        iq_confirm_instant_room(room);
-        muc_set_requires_config(room, FALSE);
-        win_save_vprint(window, '!', NULL, 0, COLOUR_ROOMINFO, "", "Room unlocked.");
-        cons_show("Room unlocked: %s (%d)", room, ui_index);
+    if (g_strcmp0(args[1], "edit") == 0) {
+        iq_request_room_config_form(room);
         return TRUE;
     }
 
     if (g_strcmp0(args[1], "cancel") == 0) {
-        iq_destroy_instant_room(room);
+        iq_room_config_cancel(room);
         return TRUE;
     }