X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=edit.c;h=412b38562a285235925723bb78b06dcf464aa42b;hb=216cf3ed9e60bea94d777029eb3b5e44c65f1b68;hp=f5e05845e8022e1abc94f20e4845815a5aa0c8d9;hpb=4909ba20244f55ee7326a40d751cf6737c2bc2b6;p=pkg%2Fabook.git diff --git a/edit.c b/edit.c index f5e0584..412b385 100644 --- a/edit.c +++ b/edit.c @@ -29,10 +29,7 @@ * some extern variables */ - -extern int curitem; extern int views_count; -extern int items; WINDOW *editw; @@ -51,10 +48,7 @@ editor_tab(const int tab) int width = strwidth(tab_name) + 5; if(x_pos + width + 1 > EDITW_COLS) { - statusline_msg(_("Tab name too wide for screen")); - /* Disabling this field */ - /* TODO should be recomputed on window resize */ - views_count--; + statusline_addstr(_("Tab name too wide for screen")); break; } @@ -82,29 +76,33 @@ editor_tab(const int tab) void get_first_email(char *str, int item) { - char *tmp; + char *tmp, *emails = db_email_get(item); - if(!db_email_get(item)) { + if(!*emails) { *str = 0; return; } - strncpy(str, db_email_get(item), MAX_EMAIL_LEN); + strncpy(str, emails, MAX_EMAIL_LEN); + free(emails); if( (tmp = strchr(str, ',')) ) *tmp = 0; else str[MAX_EMAIL_LEN - 1] = 0; } +/* This only rolls emails from the 'email' field, not emails from any + * field of type FIELD_EMAILS. + * TODO: expand to ask for which field to roll if several are present? */ static void roll_emails(int item, enum rotate_dir dir) { - abook_list *emails = csv_to_abook_list(db_email_get(item)); + abook_list *emails = csv_to_abook_list(db_fget(item, EMAIL)); if(!emails) return; - free(db_email_get(item)); + free(db_fget(item, EMAIL)); abook_list_rotate(&emails, dir); db_fput(item, EMAIL, abook_list_to_csv(emails)); abook_list_free(&emails); @@ -181,7 +179,7 @@ print_editor_header(int item) get_first_email(email, item); - if(*db_email_get(item)) + if(*email) snprintf(header, EDITW_COLS, "%s <%s>", db_name_get(item), email); @@ -513,17 +511,17 @@ edit_loop(int item) void edit_item(int item) { - if( item < 0 ) { - if( curitem < 0 ) + if(item < 0) { + if(list_get_curitem() < 0) return; else - item = curitem; + item = list_get_curitem(); } init_editor(); while((item = edit_loop(item)) >= 0) - curitem = item; /* hmm, this is not very clean way to go */ + list_set_curitem(item); /* this is not very clean way to go */ close_editor(); } @@ -534,7 +532,7 @@ add_item() char *field = NULL; list_item item = item_create(); - change_field("Name: ", &field, MAX_FIELD_LEN); + change_field(_("Name: "), &field, MAX_FIELD_LEN); if( field == NULL ) return; @@ -544,8 +542,8 @@ add_item() add_item2database(item); item_free(&item); - curitem = LAST_ITEM; + list_set_curitem(last_item()); - edit_item(LAST_ITEM); + edit_item(last_item()); }