X-Git-Url: https://git.deb.at/w?a=blobdiff_plain;f=list.c;h=62159522a74368d295f03f681d51193f2bfbeadf;hb=8e362f5a1e900ad2cd11192436b5182e8b0e6ef6;hp=d349209582f31f44df74ccae33045a623b8d8dfc;hpb=c38bc4bc5254bd5925d8567e7ff1554a7844b8c7;p=pkg%2Fabook.git diff --git a/list.c b/list.c index d349209..6215952 100644 --- a/list.c +++ b/list.c @@ -40,8 +40,6 @@ init_extra_field(enum str_opts option) int i, ret = -1; char *option_str; - assert(option_name != NULL); - option_str = opt_get_str(option); if(option_str && *option_str) { @@ -89,7 +87,7 @@ refresh_list() ui_print_number_of_items(); - if( items < 1 ) { + if(items < 1) { refresh(); wrefresh(list); return; @@ -127,24 +125,26 @@ print_list_line(int i, int line, int highlight) if(highlight) highlight_line(list, line); - if( selected[i] ) + if(selected[i]) mvwaddch(list, line, 0, '*' ); - mvwaddnstr(list, line, NAMEPOS, database[i][NAME], NAMELEN); - if( opt_get_bool(BOOL_SHOW_ALL_EMAILS) ) + mvwaddnstr(list, line, NAMEPOS, database[i][NAME], + bytes2width(database[i][NAME], NAMELEN)); + if(opt_get_bool(BOOL_SHOW_ALL_EMAILS)) mvwaddnstr(list, line, EMAILPOS, database[i][EMAIL], - real_emaillen); + bytes2width(database[i][EMAIL], real_emaillen)); else { get_first_email(tmp, i); - mvwaddnstr(list, line, EMAILPOS, tmp, real_emaillen); + mvwaddnstr(list, line, EMAILPOS, tmp, + bytes2width(tmp, real_emaillen)); } if(extra < 0 || !database[i][extra]) extra = extra_alternative; if(extra >= 0) mvwaddnstr(list, line, EXTRAPOS, - safe_str(database[i][extra]), - EXTRALEN); + safe_str(database[i][extra]), + bytes2width(safe_str(database[i][extra]), EXTRALEN)); scrollok(list, TRUE); if(highlight) @@ -155,17 +155,15 @@ print_list_line(int i, int line, int highlight) void list_headerline() { -#ifdef A_BOLD +#if defined(A_BOLD) && defined(A_NORMAL) attrset(A_BOLD); -#else - /* hmm, maybe something here */ #endif mvaddstr(2, NAMEPOS, abook_fields[NAME].name); mvaddstr(2, EMAILPOS, abook_fields[EMAIL].name); if(extra_column > 0) mvaddnstr(2, EXTRAPOS, abook_fields[extra_column].name, COLS-EXTRAPOS); -#ifdef A_BOLD +#if defined(A_BOLD) && defined(A_NORMAL) attrset(A_NORMAL); #endif } @@ -173,7 +171,7 @@ list_headerline() void scroll_up() { - if( curitem < 1 ) + if(curitem < 1) return; curitem--; @@ -184,7 +182,7 @@ scroll_up() void scroll_down() { - if( curitem > items - 2 ) + if(curitem > items - 2) return; curitem++; @@ -196,7 +194,7 @@ scroll_down() void page_up() { - if( curitem < 1 ) + if(curitem < 1) return; curitem = curitem == first_list_item ? @@ -208,7 +206,7 @@ page_up() void page_down() { - if( curitem > items - 2 ) + if(curitem > items - 2) return; curitem = curitem == LAST_LIST_ITEM ? @@ -218,17 +216,16 @@ page_down() refresh_list(); } - void select_none() { - memset( selected, 0, items ); + memset(selected, 0, items); } void select_all() { - memset( selected, 1, items ); + memset(selected, 1, items); } void @@ -323,7 +320,7 @@ invert_selection() { int i; - if( items < 1 ) + if(items < 1) return; for(i = 0; i < items; i++) @@ -342,4 +339,25 @@ list_is_empty() return items < 1; } - +int +duplicate_item() +{ + int i; + list_item item; + + if(curitem < 0) + return 1; + + for(i = 0; i < ITEM_FIELDS; i++) + item[i] = database[curitem][i] ? strdup(database[curitem][i]) : + NULL; + + if(add_item2database(item)) + return 1; + + curitem = LAST_ITEM; + refresh_list(); + + return 0; +} +