X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;ds=sidebyside;f=list.c;h=faf3ae80f80a1cd7577e992b90e13518e8413aa4;hb=6657a001a523faa2caa088db41bb4c1e8c1fbcdb;hp=32c12ed8b8466c0c6aa3ee72573c619bf8f7a2e5;hpb=d4cd6aada86c2d1c3e046b91a271184e659716fa;p=pkg%2Fabook.git diff --git a/list.c b/list.c index 32c12ed..faf3ae8 100644 --- a/list.c +++ b/list.c @@ -10,6 +10,7 @@ #include #include #include "abook.h" +#include #include "ui.h" #include "database.h" #include "edit.h" @@ -33,47 +34,43 @@ extern struct abook_field abook_fields[]; WINDOW *list = NULL; -void -init_list() +static int +init_extra_field(char *option_name) { - int i; - char *e_column_str = options_get_str("extra_column"); - char *e_alternative_str = options_get_str("extra_alternative"); - - list = newwin(LIST_LINES, LIST_COLS, LIST_TOP, 0); - scrollok(list, TRUE); + int i, ret = -1; + char *option_str; - /* - * init extra_column and extra alternative - */ + assert(option_name != NULL); + + option_str = options_get_str(option_name); - if(e_column_str && *e_column_str) { + if(option_str && *option_str) { for(i = 0; i < ITEM_FIELDS; i++) { - if(!strcasecmp(e_column_str, abook_fields[i].key)) { - extra_column = i; + if(!strcasecmp(option_str, abook_fields[i].key)) { + ret = i; break; } } - if(extra_column < MIN_EXTRA_COLUMN || - extra_column > MAX_EXTRA_COLUMN) { - extra_column = -1; + if(ret < MIN_EXTRA_COLUMN || ret > MAX_EXTRA_COLUMN) { + ret = -1; } } - if(e_alternative_str && *e_alternative_str) { - for(i = 0; i < ITEM_FIELDS; i++) { - if(!strcasecmp(e_alternative_str, - abook_fields[i].key)) { - extra_alternative = i; - break; - } - } - if(extra_alternative < MIN_EXTRA_COLUMN || - extra_alternative > MAX_EXTRA_COLUMN) { - extra_alternative = -1; - } - } + return ret; +} + +void +init_list() +{ + list = newwin(LIST_LINES, LIST_COLS, LIST_TOP, 0); + scrollok(list, TRUE); + /* + * init extra_column and extra alternative + */ + + extra_column = init_extra_field("extra_column"); + extra_alternative = init_extra_field("extra_alternative"); } void @@ -112,19 +109,14 @@ refresh_list() for( line = 0, i = first_list_item ; i <= LAST_LIST_ITEM && i < items; line++, i++ ) { - if(i == curitem) - highlight_line(list, line); - - print_list_line(i, line); - - wstandend(list); + print_list_line(i, line, i == curitem); } wrefresh(list); } void -print_list_line(int i, int line) +print_list_line(int i, int line, int highlight) { int extra = extra_column; char tmp[MAX_EMAILSTR_LEN]; @@ -132,6 +124,8 @@ print_list_line(int i, int line) EMAILLEN : COLS - EMAILPOS; scrollok(list, FALSE); + if(highlight) + highlight_line(list, line); if( selected[i] ) mvwaddch(list, line, 0, '*' ); @@ -153,6 +147,8 @@ print_list_line(int i, int line) EXTRALEN); scrollok(list, TRUE); + if(highlight) + wstandend(list); }