diff options
Diffstat (limited to 'profanity.c')
-rw-r--r-- | profanity.c | 163 |
1 files changed, 6 insertions, 157 deletions
diff --git a/profanity.c b/profanity.c index d423747f..7ca3e52c 100644 --- a/profanity.c +++ b/profanity.c @@ -1,167 +1,16 @@ -#include <stdio.h> -#include <stdlib.h> -#include <unistd.h> -#include <ncurses.h> -#include <string.h> -#include <strophe/strophe.h> - #include "log.h" #include "windows.h" -#include "jabber.h" - -// reference to log -extern FILE *logp; - -// window references -extern WINDOW *title_bar; -extern WINDOW *cmd_bar; -extern WINDOW *cmd_win; -extern WINDOW *main_win; - -// curses functions -void event_loop(xmpp_ctx_t *ctx, xmpp_conn_t *conn); +#include "app.h" int main(void) { - char cmd[50]; - - xmpp_ctx_t *ctx; - xmpp_conn_t *conn; - xmpp_log_t *log; - - start_log(); - - // initialise curses, and create windows - initgui(); + log_init(); + gui_init(); - // set cursor in command window and loop on input - wmove(cmd_win, 0, 0); - while (TRUE) { - wgetstr(cmd_win, cmd); - - // handle quit - if (strcmp(cmd, "/quit") == 0) { - break; - // handle connect - } else if (strncmp(cmd, "/connect ", 9) == 0) { - char *user; - char passwd[20]; - - user = strndup(cmd+9, strlen(cmd)-9); - - mvwprintw(cmd_bar, 0, 0, "Enter password:"); - wrefresh(cmd_bar); - - wclear(cmd_win); - noecho(); - mvwgetstr(cmd_win, 0, 0, passwd); - echo(); - - mvwprintw(cmd_bar, 0, 0, "%s", user); - wrefresh(cmd_bar); - - wclear(cmd_win); - wmove(cmd_win, 0, 0); - wrefresh(cmd_win); - - char loginmsg[100]; - sprintf(loginmsg, "User <%s> logged in", user); - logmsg(PROF, loginmsg); - - xmpp_initialize(); - - log = xmpp_get_file_logger(); - ctx = xmpp_ctx_new(NULL, log); - conn = xmpp_conn_new(ctx); - - xmpp_conn_set_jid(conn, user); - xmpp_conn_set_pass(conn, passwd); - xmpp_connect_client(conn, NULL, 0, conn_handler, ctx); - - event_loop(ctx, conn); - - break; - } else { - // echo ignore - wclear(cmd_win); - wmove(cmd_win, 0, 0); - } - } + start_profanity(); - endwin(); - fclose(logp); + gui_close(); + log_close(); return 0; } - -void event_loop(xmpp_ctx_t *ctx, xmpp_conn_t *conn) -{ - int cmd_y = 0; - int cmd_x = 0; - - wtimeout(cmd_win, 0); - - while(TRUE) { - int ch = ERR; - char command[100]; - int size = 0; - - // while not enter - while(ch != '\n') { - usleep(1); - // handle incoming messages - xmpp_run_once(ctx, 10); - - // 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(); - } - - command[size++] = '\0'; - - // newline was hit, check if /quit command issued - if (strcmp(command, "/quit") == 0) { - break; - } else { - // send the message - prof_send(command, ctx, conn); - - // 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); - } - } - - xmpp_conn_release(conn); - xmpp_ctx_free(ctx); - - xmpp_shutdown(); - -} - |