diff --git a/xtrn/ecreader/ecReader.js b/xtrn/ecreader/ecReader.js index 1e1d0d61067e1a5b92cd5986703ad7d9e2d652d7..061265ad9acd5b85e795434d67746996ed4d0f56 100644 --- a/xtrn/ecreader/ecReader.js +++ b/xtrn/ecreader/ecReader.js @@ -20,6 +20,7 @@ var nfg = LIGHTGRAY; // Foreground colour of non-highlighted text var xfg = LIGHTCYAN; // Subtree expansion indicator colour var tfg = LIGHTCYAN; // Uh, that line beside subtree items var fbg = BG_BLUE; // Title, Header, Help frame background colour +var urm = WHITE; // Unread message foreground colour var hfg = "\1h\1w"; // Heading text (CTRL-A format, for now) var sffg = "\1h\1c"; // Heading sub-field text (CTRL-A format, for now) var mfg = "\1n\1w"; // Message text colour (CTRL-A format, for now) @@ -122,7 +123,11 @@ function getFlatList(oldestFirst) { messages.reverse(); for(var m = 0; m < messages.length; m++) { item = formatItem(messages[m].number, messages[m].from, messages[m].to, messages[m].subject, messages[m].when_written_time);; - tree.addItem(item, showMessage, messages[m], mail); + var i = tree.addItem(item, showMessage, messages[m], mail); + if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) + i.attr = urm; + else if(mail && messages[messages.length - 1].attr&MSG_READ == 0) + i.attr = urm; } tree.open(); tree.cycle(); @@ -144,7 +149,11 @@ function getThreadedList() { threads.thread[threads.order[t]].messages[0].subject, threads.thread[threads.order[t]].messages[0].when_written_time ); - tree.addItem(item, showMessage, messages[messages.length - 1], mail); + var i = tree.addItem(item, showMessage, messages[messages.length - 1], mail); + if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) + i.attr = urm; + else if(mail && messages[messages.length - 1].attr&MSG_READ == 0) + i.attr = urm; continue; } item = formatItem( @@ -164,7 +173,14 @@ function getThreadedList() { threads.thread[threads.order[t]].messages[m].subject, threads.thread[threads.order[t]].messages[m].when_written_time ); - st.addItem(item, showMessage, messages[messages.length - 1], mail); + var i = st.addItem(item, showMessage, messages[messages.length - 1], mail); + if(!mail && messages[messages.length - 1].number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) { + i.attr = urm; + st.attr = urm; + } else if(mail && messages[messages.length - 1].attr&MSG_READ == 0) { + i.attr = urm; + st.attr = urm; + } } } tree.open(); @@ -197,12 +213,21 @@ function getList() { } function showMessage(header) { + var retval = true; + var userInput = ""; + var h = null; + var n = header.number; currentMessage = messages.indexOf(header); messageFrame.top(); - if(!mail) + if(!mail) { mb = msgBase; - else + if(header.number > msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr) { + msg_area.grp_list[bbs.curgrp].sub_list[bbs.cursub].scan_ptr = header.number; + retval = "REFRESH"; + } + } else { mb = new MsgBase('mail'); + } mb.open(); var body = mb.get_msg_body(header.number); mb.close(); @@ -218,10 +243,6 @@ function showMessage(header) { bodyFrame.scrollTo(0, 0); bodyFrame.putmsg(mfg + word_wrap(body)); bodyFrame.scrollTo(0, 0); - var retval = true; - var userInput = ""; - var h = null; - var n = header.number; while(userInput != "Q") { if(frame.cycle()) console.gotoxy(80, 24);