X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=ui.c;h=3777fe7537f71384bab6f650d73cc197a2840f52;hb=addc54efb596b39b0e4e6ce219ee0f1506337475;hp=756a98127dcf9e7315be14b8926cf8251a2d8ca7;hpb=c5d8ef5198f2bfd02f678b7a709b6538ef83cd44;p=pkg%2Fabook.git diff --git a/ui.c b/ui.c index 756a981..3777fe7 100644 --- a/ui.c +++ b/ui.c @@ -1,6 +1,6 @@ /* - * $Id: ui.c,v 1.31 2004/04/19 17:08:00 jheinonen Exp $ + * $Id: ui.c,v 1.39 2005/08/23 10:03:34 jheinonen Exp $ * * by JH * @@ -22,16 +22,10 @@ #include "misc.h" #include "options.h" #include "filter.h" +#include "xmalloc.h" #ifdef HAVE_CONFIG_H # include "config.h" #endif -#ifdef HAVE_TERMIOS_H -# include -#else -# ifdef HAVE_LINUX_TERMIOS_H -# include -# endif -#endif #ifdef HAVE_SYS_IOCTL_H # include #endif @@ -45,25 +39,24 @@ extern int items, curitem; extern char *datafile; -extern int alternative_datafile; +extern bool alternative_datafile; /* * internal variables */ -bool ui_initialized = FALSE; +static bool ui_initialized = FALSE; -bool should_resize = FALSE; -bool can_resize = FALSE; +static bool should_resize = FALSE; +static bool can_resize = FALSE; -WINDOW *top = NULL, *bottom = NULL; +static WINDOW *top = NULL, *bottom = NULL; static void init_windows() { top = newwin(LIST_TOP - 1, COLS, 0, 0); - bottom = newwin(LINES - LIST_BOTTOM, COLS, LIST_BOTTOM, 0); } @@ -82,13 +75,13 @@ resize_abook() #ifdef TIOCGWINSZ struct winsize winsz; - ioctl (0, TIOCGWINSZ, &winsz); + ioctl(0, TIOCGWINSZ, &winsz); #ifdef DEBUG if(winsz.ws_col >= MIN_COLS && winsz.ws_row >= MIN_LINES) { fprintf(stderr, "Warning: COLS=%d, LINES=%d\n", winsz.ws_col, winsz.ws_row); } #endif - + if(winsz.ws_col >= MIN_COLS && winsz.ws_row >= MIN_LINES) { #ifdef HAVE_RESIZETERM resizeterm(winsz.ws_row, winsz.ws_col); @@ -112,10 +105,10 @@ resize_abook() static void win_changed(int i) { - if( can_resize ) + if(can_resize) resize_abook(); else - should_resize = TRUE; + should_resize = TRUE; } #endif /* SIGWINCH */ @@ -155,15 +148,15 @@ init_ui() return 1; } -#ifdef SIGWINCH - signal(SIGWINCH, win_changed); -#endif - init_list(); init_windows(); ui_initialized = TRUE; +#ifdef SIGWINCH + signal(SIGWINCH, win_changed); +#endif + return 0; } @@ -198,7 +191,7 @@ void refresh_screen() { #ifdef SIGWINCH - if( should_resize ) { + if(should_resize) { resize_abook(); return; } @@ -217,7 +210,7 @@ int statusline_msg(char *msg) { int c; - + clear_statusline(); statusline_addstr(msg); c = getch(); @@ -265,11 +258,13 @@ statusline_ask_boolean(char *msg, int def) free(msg2); - switch( tolower(getch()) ) { + switch(tolower(getch())) { case 'n': + case 'N': ret = FALSE; break; case 'y': + case 'Y': ret = TRUE; break; default: @@ -282,7 +277,6 @@ statusline_ask_boolean(char *msg, int def) return ret; } - void refresh_statusline() { @@ -294,7 +288,6 @@ refresh_statusline() wrefresh(bottom); } - char * ask_filename(char *prompt) { @@ -343,10 +336,10 @@ display_help(int help) erase(); headerline("help"); - for( i = 0; tbl[i] != NULL; i++) { + for(i = 0; tbl[i] != NULL; i++) { waddstr(helpw, tbl[i]); - if( ( !( (i+1) % (LINES-8) ) ) || - (tbl[i+1] == NULL) ) { + if( (!((i + 1) % (LINES - 8))) || + (tbl[i + 1] == NULL) ) { refresh(); wrefresh(helpw); refresh_statusline(); @@ -375,13 +368,15 @@ get_commands() for(;;) { can_resize = TRUE; /* it's safe to resize now */ - hide_cursor(); - if( should_resize ) + if(!opt_get_bool(BOOL_SHOW_CURSOR)) + hide_cursor(); + if(should_resize) refresh_screen(); ch = getch(); - show_cursor(); + if(!opt_get_bool(BOOL_SHOW_CURSOR)) + show_cursor(); can_resize = FALSE; /* it's not safe to resize anymore */ - switch( ch ) { + switch(ch) { case 'q': return; case 'Q': quit_abook(QUIT_DONTSAVE); break; case 'P': print_stderr(selected_items() ? @@ -463,7 +458,6 @@ get_commands() } } - void ui_remove_items() { @@ -473,7 +467,7 @@ ui_remove_items() if(statusline_ask_boolean("Remove selected item(s)", TRUE)) remove_selected_items(); - clear_statusline(); + clear_statusline(); refresh_list(); } @@ -496,7 +490,7 @@ ui_find(int next) clear_statusline(); if(next) { - if( !*findstr ) + if(!*findstr) return; } else { char *s; @@ -546,12 +540,12 @@ ui_print_database() char *command = opt_get_str(STR_PRINT_COMMAND); int mode; - if( list_is_empty() ) + if(list_is_empty()) return; statusline_addstr("Print All/Selected/Cancel (a/s/C)?"); - switch( tolower(getch()) ) { + switch(tolower(getch())) { case 'a': mode = ENUM_ALL; break; @@ -573,7 +567,7 @@ ui_print_database() return; fexport("text", handle, mode); - + pclose(handle); } @@ -585,13 +579,13 @@ ui_open_datafile() filename = ask_filename("File to open: "); - if( !filename || ! *filename) { + if(!filename || ! *filename) { free(filename); refresh_screen(); return; } - if( opt_get_bool(BOOL_AUTOSAVE) ) + if(opt_get_bool(BOOL_AUTOSAVE)) save_database(); else if(statusline_ask_boolean("Save current database", FALSE)) save_database(); @@ -600,12 +594,12 @@ ui_open_datafile() load_database(filename); - if( items == 0 ) { + if(items == 0) { statusline_msg("Sorry, that specified file appears not to be a valid abook addressbook"); load_database(datafile); } else { free(datafile); - datafile = strdup(filename); + datafile = xstrdup(filename); } refresh_screen();