diff options
Diffstat (limited to 'app.c')
-rw-r--r-- | app.c | 65 |
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(); } } |