-void do_addrbook_view(addrbookent *addrbook, int num_ab) {
- int i = 0;
- int displayed = 0;
- int bg = 0;
- static int NAMESPERPAGE = 60;
- int num_pages = 0;
- int tabfirst = 0;
- char tabfirst_label[64];
- int tablast = 0;
- char tablast_label[64];
- char this_tablabel[64];
- int page = 0;
- char **tablabels;
-
- if (num_ab == 0) {
- wc_printf("<br><br><br><div align=\"center\"><i>");
- wc_printf(_("This address book is empty."));
- wc_printf("</i></div>\n");
- return;
- }
-
- if (num_ab > 1) {
- qsort(addrbook, num_ab, sizeof(addrbookent), abcmp);
- }
-
- num_pages = (num_ab / NAMESPERPAGE) + 1;
-
- tablabels = malloc(num_pages * sizeof (char *));
- if (tablabels == NULL) {
- wc_printf("<br><br><br><div align=\"center\"><i>");
- wc_printf(_("An internal error has occurred."));
- wc_printf("</i></div>\n");
- return;
- }
-
- for (i=0; i<num_pages; ++i) {
- tabfirst = i * NAMESPERPAGE;
- tablast = tabfirst + NAMESPERPAGE - 1;
- if (tablast > (num_ab - 1)) tablast = (num_ab - 1);
- nametab(tabfirst_label, 64, addrbook[tabfirst].ab_name);
- nametab(tablast_label, 64, addrbook[tablast].ab_name);
- sprintf(this_tablabel, "%s - %s", tabfirst_label, tablast_label);
- tablabels[i] = strdup(this_tablabel);
- }
-
- tabbed_dialog(num_pages, tablabels);
- page = (-1);
-
- for (i=0; i<num_ab; ++i) {
-
- if ((i / NAMESPERPAGE) != page) { /* New tab */
- page = (i / NAMESPERPAGE);
- if (page > 0) {
- wc_printf("</tr></table>\n");
- end_tab(page-1, num_pages);
- }
- begin_tab(page, num_pages);
- wc_printf("<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\" width=\"100%%\">\n");
- displayed = 0;
- }