about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorJames Booth <boothj5@gmail.com>2014-09-07 00:49:42 +0100
committerJames Booth <boothj5@gmail.com>2014-09-07 00:49:42 +0100
commit85ccedd01cd111fd023b876dc793597576563c83 (patch)
tree9785a0ab17cd7181403b60741977eb071489da47 /src
parent47d1b1ea21eb5d069aab082940ca1398cab2e68f (diff)
downloadprofani-tty-85ccedd01cd111fd023b876dc793597576563c83.tar.gz
Create new window for room configuration
Diffstat (limited to 'src')
-rw-r--r--src/ui/core.c39
-rw-r--r--src/ui/window.h1
-rw-r--r--src/ui/windows.c15
3 files changed, 38 insertions, 17 deletions
diff --git a/src/ui/core.c b/src/ui/core.c
index f5827cee..83bcb6ba 100644
--- a/src/ui/core.c
+++ b/src/ui/core.c
@@ -1873,51 +1873,58 @@ _ui_draw_term_title(void)
 static void
 _ui_handle_room_configuration(const char * const room, DataForm *form)
 {
-    cons_show("Recieved configuration form for %s", room);
+    GString *title = g_string_new(room);
+    g_string_append(title, " config");
+    ProfWin *window = wins_new(title->str, WIN_MUC_CONFIG);
+    g_string_free(title, TRUE);
+    int num = wins_get_num(window);
+    ui_switch_win(num);
+
+    win_save_vprint(window, '-', NULL, 0, 0, "", "Receieved configuration for room %s.", room);
 
     if (form->type != NULL) {
-        cons_show("  Type: %s", form->type);
+        win_save_vprint(window, '-', NULL, 0, 0, "", "  Type: %s", form->type);
     }
     if (form->title != NULL) {
-        cons_show("  Title: %s", form->title);
+        win_save_vprint(window, '-', NULL, 0, 0, "", "  Title: %s", form->title);
     }
     if (form->instructions != NULL) {
-        cons_show("  Instructions: %s", form->instructions);
+        win_save_vprint(window, '-', NULL, 0, 0, "", "  Instructions: %s", form->instructions);
     }
 
     GSList *fields = form->fields;
     GSList *curr_field = fields;
     while (curr_field != NULL) {
         FormField *field = curr_field->data;
-        cons_show("  Field:");
+        win_save_vprint(window, '-', NULL, 0, 0, "", "  Field:");
 
         if (field->label != NULL) {
-            cons_show("    Label: %s", field->label);
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Label: %s", field->label);
         }
         if (field->type != NULL) {
-            cons_show("    Type: %s", field->type);
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Type: %s", field->type);
         }
         if (field->var != NULL) {
-            cons_show("    Var: %s", field->var);
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Var: %s", field->var);
         }
         if (field->description != NULL) {
-            cons_show("    Description: %s", field->description);
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Description: %s", field->description);
         }
 
         if (field->required) {
-            cons_show("    Required: TRUE");
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Required: TRUE");
         } else {
-            cons_show("    Required: FALSE");
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Required: FALSE");
         }
 
         GSList *values = field->values;
         GSList *curr_value = values;
         if (curr_value != NULL) {
-            cons_show("    Values:");
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Values:");
         }
         while (curr_value != NULL) {
             char *value = curr_value->data;
-            cons_show("      %s", value);
+            win_save_vprint(window, '-', NULL, 0, 0, "", "      %s", value);
 
             curr_value = g_slist_next(curr_value);
         }
@@ -1925,15 +1932,15 @@ _ui_handle_room_configuration(const char * const room, DataForm *form)
         GSList *options = field->options;
         GSList *curr_option = options;
         if (curr_option != NULL) {
-            cons_show("    Options:");
+            win_save_vprint(window, '-', NULL, 0, 0, "", "    Options:");
         }
         while (curr_option != NULL) {
             FormOption *option = curr_option->data;
             if (option->label != NULL) {
-                cons_show("      Label: %s", option->label);
+                win_save_vprint(window, '-', NULL, 0, 0, "", "      Label: %s", option->label);
             }
             if (option->value != NULL) {
-                cons_show("        Value: %s", option->value);
+                win_save_vprint(window, '-', NULL, 0, 0, "", "        Value: %s", option->value);
             }
 
             curr_option = g_slist_next(curr_option);
diff --git a/src/ui/window.h b/src/ui/window.h
index ed0c64b4..5a72f18f 100644
--- a/src/ui/window.h
+++ b/src/ui/window.h
@@ -58,6 +58,7 @@ typedef enum {
     WIN_CONSOLE,
     WIN_CHAT,
     WIN_MUC,
+    WIN_MUC_CONFIG,
     WIN_PRIVATE,
     WIN_DUCK,
     WIN_XML
diff --git a/src/ui/windows.c b/src/ui/windows.c
index 3d835a0e..5156684b 100644
--- a/src/ui/windows.c
+++ b/src/ui/windows.c
@@ -385,7 +385,11 @@ wins_get_prune_recipients(void)
 
     while (curr != NULL) {
         ProfWin *window = curr->data;
-        if (window->unread == 0 && window->type != WIN_MUC && window->type != WIN_CONSOLE) {
+        if (window->unread == 0 &&
+                window->type != WIN_MUC &&
+                window->type != WIN_MUC_CONFIG &&
+                window->type != WIN_XML &&
+                window->type != WIN_CONSOLE) {
             result = g_slist_append(result, window->from);
         }
         curr = g_list_next(curr);
@@ -539,6 +543,7 @@ wins_create_summary(void)
         GString *chat_string;
         GString *priv_string;
         GString *muc_string;
+        GString *muc_config_string;
         GString *duck_string;
         GString *xml_string;
 
@@ -606,6 +611,14 @@ wins_create_summary(void)
 
                 break;
 
+            case WIN_MUC_CONFIG:
+                muc_config_string = g_string_new("");
+                g_string_printf(muc_config_string, "%d: %s", ui_index, window->from);
+                result = g_slist_append(result, strdup(muc_config_string->str));
+                g_string_free(muc_config_string, TRUE);
+
+                break;
+
             case WIN_DUCK:
                 duck_string = g_string_new("");
                 g_string_printf(duck_string, "%d: DuckDuckGo search", ui_index);