--- lbbs/src/bbs_main.c 2004/10/22 15:20:32 1.7 +++ lbbs/src/bbs_main.c 2005/03/21 17:08:21 1.24 @@ -18,55 +18,145 @@ #include "bbs.h" #include "common.h" #include "io.h" +#include "menu.h" +#include "bbs_cmd.h" +#include +#include +#include +#include int -bbs_main() +bbs_main () { + char temp[256]; int ret; - - bbs_info(); - bbs_welcome(); - ret = bbs_login(); + set_input_echo (0); + + bbs_info (); + + //Welcome + bbs_welcome (); + + //Login + ret = bbs_login (); if (ret < 0) return -1; - - bbs_center(); + clearscr (); + + //BBS Top 10 + strcpy (temp, app_home_dir); + strcat (temp, "data/bbs_top.txt"); + display_file_ex (temp, 1, 1); + + //Main + bbs_center (); - bbs_exit(); + //Logout + bbs_exit (); return 0; } int -bbs_info() +bbs_info () { - prints( - "\033[1;37m»¶Ó­¹âÁÙ \033[33m%s \033[32m[%s] \033[37m( %s )\r\n", - BBS_name, BBS_server, app_version); - - iflush(); + prints ("»¶Ó­¹âÁÙ \033[1;33m%s \033[32m[%s] \033[37m( %s )\r\n", + BBS_name, BBS_server, app_version); + + iflush (); return 0; } int -bbs_exit() +bbs_exit () { - prints("\033[0;37m\r\n"); - iflush(); + char temp[256]; + + strcpy (temp, app_home_dir); + strcat (temp, "data/goodbye.txt"); + display_file_ex (temp, 1, 0); + + sleep (1); - sleep(1); - return 0; } int -bbs_center() +bbs_center () { - show_top(); - - show_bottom(); + int ch, result; + char action[MAX_MENUACTION_LENGTH]; + time_t t_last_action; + fd_set inputs, testfds; + struct timeval timeout; + + FD_ZERO (&inputs); + FD_SET (0, &inputs); + + t_last_action = time (0); + + clearscr (); + + show_top (""); + show_active_board (); + show_bottom (""); + display_menu (get_menu (&bbs_menu, "TOPMENU")); + + while (1) + { + testfds = inputs; + timeout.tv_sec = 0; + timeout.tv_usec = 100000; + + result = select (FD_SETSIZE, &testfds, (fd_set *) NULL, + (fd_set *) NULL, &timeout); + + switch (result) + { + case 0: + break; + case -1: + log_error ("select() error!\n"); + break; + default: + if (FD_ISSET (0, &testfds)) + { + ch = igetch (); + + switch (ch) + { + case KEY_NULL: + return 0; + default: + strcpy (action, menu_control (&bbs_menu, ch)); + switch (get_cmd_value (action)) + { + case EXITBBS: + return 0; + case BBSNET: + bbs_net (); + clearscr (); + show_top (""); + show_active_board (); + show_bottom (""); + display_current_menu (&bbs_menu); + break; + case UNKNOWN_CMD: + break; + } + } + } + break; + } + if (time (0) - t_last_action >= 10) + { + t_last_action = time (0); + show_active_board (); + show_bottom (""); + } + } return 0; }