int extra_column = -1;
int extra_alternative = -1;
-extern int items;
extern abook_field_list *fields_list;
static WINDOW *list = NULL;
else if(curitem > LAST_LIST_ITEM)
first_list_item = max(curitem - LIST_LINES + 1, 0);
- for( line = 0, i = first_list_item ; i <= LAST_LIST_ITEM && i < items;
- line++, i++ ) {
+ for(line = 0, i = first_list_item;
+ i <= LAST_LIST_ITEM && i < db_n_items();
+ line++, i++) {
print_list_line(i, line, i == curitem);
}
print_list_line(int i, int line, int highlight)
{
int extra = extra_column;
- char tmp[MAX_EMAILSTR_LEN];
+ char tmp[MAX_EMAILSTR_LEN], *emails;
int real_emaillen = (extra_column > 0 || extra_alternative > 0) ?
EMAILLEN : COLS - EMAILPOS;
mvwaddnstr(list, line, NAMEPOS, db_name_get(i),
bytes2width(db_name_get(i), NAMELEN));
- if(opt_get_bool(BOOL_SHOW_ALL_EMAILS))
- mvwaddnstr(list, line, EMAILPOS, db_email_get(i),
- bytes2width(db_email_get(i), real_emaillen));
- else {
+ if(opt_get_bool(BOOL_SHOW_ALL_EMAILS)) {
+ emails = db_email_get(i);
+ mvwaddnstr(list, line, EMAILPOS, emails,
+ bytes2width(emails, real_emaillen));
+ free(emails);
+ } else {
get_first_email(tmp, i);
mvwaddnstr(list, line, EMAILPOS, tmp,
bytes2width(tmp, real_emaillen));
void
scroll_down()
{
- if(curitem > items - 2)
+ if(curitem > db_n_items() - 2)
return;
curitem++;
void
page_down()
{
- if(curitem > items - 2)
+ if(curitem > db_n_items() - 2)
return;
- curitem = curitem == LAST_LIST_ITEM ?
- ((curitem += LIST_LINES) > LAST_ITEM ? LAST_ITEM : curitem) :
- min(LAST_LIST_ITEM, LAST_ITEM);
+ if(curitem == LAST_LIST_ITEM) {
+ if((curitem += LIST_LINES) > last_item())
+ curitem = last_item();
+ } else {
+ curitem = min(LAST_LIST_ITEM, last_item());
+ }
refresh_list();
}
void
select_none()
{
- memset(selected, 0, items);
+ memset(selected, 0, db_n_items());
}
void
select_all()
{
- memset(selected, 1, items);
+ memset(selected, 1, db_n_items());
+}
+
+void
+list_set_selection(int item, int value)
+{
+ assert(is_valid_item(item));
+
+ selected[item] = !!value;
+}
+
+void
+list_invert_curitem_selection()
+{
+ assert(is_valid_item(curitem));
+
+ selected[curitem] = !selected[curitem];
}
void
{
list_item tmp;
- if( curitem < 0 || curitem > LAST_ITEM )
+ if(curitem < 0 || curitem > last_item())
return;
tmp = item_create();
break;
case MOVE_ITEM_DOWN:
- if( curitem >= LAST_ITEM )
+ if(curitem >= last_item())
goto out_move;
item_copy(db_item_get(curitem),
db_item_get(curitem + 1));
void
goto_home()
{
- if(items > 0)
+ if(db_n_items() > 0)
curitem = 0;
refresh_list();
void
goto_end()
{
- if(items > 0)
- curitem = LAST_ITEM;
+ if(db_n_items() > 0)
+ curitem = last_item();
refresh_list();
}
{
int i, n = 0;
- for(i = 0; i < items; i++)
+ for(i = 0; i < db_n_items(); i++)
if(selected[i])
n++;
{
int i;
- if(items < 1)
+ if(list_is_empty())
return;
- for(i = 0; i < items; i++)
+ for(i = 0; i < db_n_items(); i++)
selected[i] = !selected[i];
}
int
-list_current_item()
+list_is_empty()
{
- return curitem;
+ return db_n_items() < 1;
}
int
-list_is_empty()
+list_get_curitem()
+{
+ return curitem;
+}
+
+void
+list_set_curitem(int i)
{
- return items < 1;
+ curitem = i;
}
int
}
item_free(&item);
- curitem = LAST_ITEM;
+ curitem = last_item();
refresh_list();
return 0;