Implemented "Collapse to last"

SVN revision: 2224
This commit is contained in:
Stefan Ritt 2009-06-25 12:58:56 +00:00
parent 5fb386bf62
commit 5651a351f1

View File

@ -16713,7 +16713,7 @@ void synchronize(LOGBOOK * lbs, int mode)
void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int expand, int level, void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int expand, int level,
BOOL printable, int n_line, int show_attachments, int show_att_column, BOOL printable, int n_line, int show_attachments, int show_att_column,
char *date, char *reply_to, int n_attr_disp, char disp_attr[MAX_N_ATTR + 4][NAME_LENGTH], char *date, char *in_reply_to, char *reply_to, int n_attr_disp, char disp_attr[MAX_N_ATTR + 4][NAME_LENGTH],
BOOL disp_attr_link[MAX_N_ATTR + 4], char attrib[MAX_N_ATTR][NAME_LENGTH], int n_attr, BOOL disp_attr_link[MAX_N_ATTR + 4], char attrib[MAX_N_ATTR][NAME_LENGTH], int n_attr,
char *text, BOOL show_text, char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], char *text, BOOL show_text, char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH],
char *encoding, BOOL select, int *n_display, char *locked_by, int highlight, char *encoding, BOOL select, int *n_display, char *locked_by, int highlight,
@ -16766,7 +16766,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int exp
if (level == 0) if (level == 0)
strcpy(sclass, "threadh"); strcpy(sclass, "threadh");
else else
strcpy(sclass, "threadreplyh"); strcpy(sclass, "threadreply");
} else { } else {
if (level == 0) if (level == 0)
strcpy(sclass, "thread"); strcpy(sclass, "thread");
@ -16805,7 +16805,7 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, int exp
rsprintf("   "); rsprintf("   ");
/* display "+" if expandable */ /* display "+" if expandable */
if (expand == 0 && reply_to[0]) if (expand == 0 && (reply_to[0] || in_reply_to[0]))
rsprintf("+ "); rsprintf("+ ");
} }
@ -17567,7 +17567,7 @@ void display_reply(LOGBOOK * lbs, int message_id, int printable, int expand, int
return; return;
} }
display_line(lbs, message_id, 0, "threaded", expand, level, printable, n_line, FALSE, FALSE, date, reply_to, display_line(lbs, message_id, 0, "threaded", expand, level, printable, n_line, FALSE, FALSE, date, in_reply_to, reply_to,
n_attr_disp, disp_attr, NULL, (void *) attrib, lbs->n_attr, text, show_text, n_attr_disp, disp_attr, NULL, (void *) attrib, lbs->n_attr, text, show_text,
NULL, encoding, 0, NULL, locked_by, highlight, &re_buf[0], highlight_mid, absolute_link); NULL, encoding, 0, NULL, locked_by, highlight, &re_buf[0], highlight_mid, absolute_link);
@ -18944,7 +18944,7 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa
{ {
int i, j, n, index, size, status, d1, m1, y1, d2, m2, y2, n_line, flags, current_year, current_month, int i, j, n, index, size, status, d1, m1, y1, d2, m2, y2, n_line, flags, current_year, current_month,
current_day, printable, n_logbook, n_display, reverse, numeric, n_attr_disp, total_n_msg, n_msg, current_day, printable, n_logbook, n_display, reverse, numeric, n_attr_disp, total_n_msg, n_msg,
search_all, message_id, n_page, i_start, i_stop, in_reply_to_id, page_mid, page_mid_head; search_all, message_id, n_page, i_start, i_stop, in_reply_to_id, page_mid, page_mid_head, level;
char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], disp_attr[MAX_N_ATTR + 4][NAME_LENGTH], *list, *text, char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], disp_attr[MAX_N_ATTR + 4][NAME_LENGTH], *list, *text,
*text1, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], *text1, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH],
encoding[80], locked_by[256], str[NAME_LENGTH], ref[256], img[80], comment[NAME_LENGTH], mode[80], encoding[80], locked_by[256], str[NAME_LENGTH], ref[256], img[80], comment[NAME_LENGTH], mode[80],
@ -20669,8 +20669,21 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa
expand = atoi(getparam("expand")); expand = atoi(getparam("expand"));
} }
display_line(msg_list[index].lbs, message_id, index, mode, expand, 0, printable, n_line, level = 0;
show_attachments, show_att_column, date, reply_to, n_attr_disp, disp_attr, disp_attr_link, attrib, if (expand == 0 && (!getcfg(lbs->name, "Collapse to last", str, sizeof(str)) || atoi(str) == 1)) {
/* search last entry in this thread */
while (reply_to[0]) {
message_id = atoi(reply_to);
size = TEXT_SIZE;
status = el_retrieve(msg_list[index].lbs, message_id, date, attr_list, attrib, lbs->n_attr, text,
&size, in_reply_to, reply_to, attachment, encoding, locked_by);
if (status == SUCCESS)
level = 1;
}
}
display_line(msg_list[index].lbs, message_id, index, mode, expand, level, printable, n_line,
show_attachments, show_att_column, date, in_reply_to, reply_to, n_attr_disp, disp_attr, disp_attr_link, attrib,
lbs->n_attr, text, show_text, attachment, encoding, lbs->n_attr, text, show_text, attachment, encoding,
isparam("select") ? atoi(getparam("select")) : 0, &n_display, locked_by, 0, re_buf, isparam("select") ? atoi(getparam("select")) : 0, &n_display, locked_by, 0, re_buf,
page_mid, FALSE); page_mid, FALSE);
@ -20781,7 +20794,7 @@ void show_elog_thread(LOGBOOK * lbs, int message_id, int absolute_links, int hig
rsprintf("<tr><td><table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n"); rsprintf("<tr><td><table width=\"100%%\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\">\n");
display_line(lbs, head_id, 0, "Threaded", 1, 0, FALSE, 0, display_line(lbs, head_id, 0, "Threaded", 1, 0, FALSE, 0,
FALSE, FALSE, date, reply_to, n_attr_disp, disp_attr, NULL, attrib, lbs->n_attr, text, FALSE, FALSE, FALSE, date, in_reply_to, reply_to, n_attr_disp, disp_attr, NULL, attrib, lbs->n_attr, text, FALSE,
attachment, encoding, 0, &n_display, locked_by, message_id, NULL, highlight_mid, attachment, encoding, 0, &n_display, locked_by, message_id, NULL, highlight_mid,
absolute_links); absolute_links);