about summary refs log tree commit diff stats
path: root/app.c
diff options
context:
space:
mode:
Diffstat (limited to 'app.c')
-rw-r--r--app.c65
1 files changed, 11 insertions, 54 deletions
diff --git a/app.c b/app.c
index 714f4403..e7cf7589 100644
--- a/app.c
+++ b/app.c
@@ -1,19 +1,12 @@
 #include <string.h>
 #include <unistd.h>
 
-#include <strophe/strophe.h>
 #include <ncurses.h>
 
 #include "log.h"
 #include "windows.h"
 #include "jabber.h"
 
-// window references
-extern WINDOW *title_bar;
-extern WINDOW *cmd_bar;
-extern WINDOW *cmd_win;
-extern WINDOW *main_win;
-
 static void main_event_loop(void);
 
 void start_profanity(void)
@@ -26,88 +19,52 @@ void start_profanity(void)
             break;
         } else if (strncmp(cmd, "/connect ", 9) == 0) {
             char *user;
-            char passwd[20];
-
             user = strndup(cmd+9, strlen(cmd)-9);
 
             bar_print_message("Enter password:");
+            char passwd[20];
             cmd_get_password(passwd);
-            bar_print_message(user);
 
+            bar_print_message(user);
             jabber_connect(user, passwd);
-
             main_event_loop();
-
             break;
         } else {
-            // echo ignore
-            wclear(cmd_win);
-            wmove(cmd_win, 0, 0);
+            cmd_clear();
         }
     }
 }
 
 static void main_event_loop(void)
 {
-    int cmd_y = 0;
-    int cmd_x = 0;
-
-    wtimeout(cmd_win, 0);
+    cmd_non_block();
 
     while(TRUE) {
         int ch = ERR;
         char command[100];
         int size = 0;
 
-        // while not enter
+        // while not enter, process all events, and try to get another char
         while(ch != '\n') {
             usleep(1);
+        
             // handle incoming messages
             jabber_process_events();
 
-            // move cursor back to cmd_win
-            getyx(cmd_win, cmd_y, cmd_x);
-            wmove(cmd_win, cmd_y, cmd_x);
-
-            // echo off, and get some more input
-            noecho();
-            ch = wgetch(cmd_win);
-
-            // if delete pressed, go back and delete it
-            if (ch == 127) {
-                if (size > 0) {
-                    getyx(cmd_win, cmd_y, cmd_x);
-                    wmove(cmd_win, cmd_y, cmd_x-1);
-                    wdelch(cmd_win);
-                    size--;
-                }
-            }
-            // else if not error or newline, show it and store it
-            else if (ch != ERR && ch != '\n') {
-                waddch(cmd_win, ch);
-                command[size++] = ch;
-            }
-
-            echo();
+            // get another character from the command box
+            cmd_poll_char(&ch, command, &size);
         }
 
+        // null terminate the input    
         command[size++] = '\0';
 
         // newline was hit, check if /quit command issued
         if (strcmp(command, "/quit") == 0) {
             break;
         } else {
-            // send the message
             jabber_send(command);
-
-            // show it in the main window
-            wprintw(main_win, "me: %s\n", command);
-            wrefresh(main_win);
-
-            // move back to the command window and clear it
-            wclear(cmd_win);
-            wmove(cmd_win, 0, 0);
-            wrefresh(cmd_win);
+            show_outgoing_msg("me", command);
+            cmd_clear();
         }
     }