diff --git a/xtrn/DDMsgReader/DDMsgReader.js b/xtrn/DDMsgReader/DDMsgReader.js index 14f3f96e0e6182834deb6e81d89fad9e8bbab245..5213c46dfc57f7ae15e910661c988c730a8224d0 100644 --- a/xtrn/DDMsgReader/DDMsgReader.js +++ b/xtrn/DDMsgReader/DDMsgReader.js @@ -124,11 +124,11 @@ * Fix: For indexed read mode (not doing a newscan), when choosing a sub-board to * read, the correct (first unread) message is displayed. Also, the user's scan * pointer is also updated to the last_read pointer. - * 2024-01-07 Eric Oulashin Version 1.93a + * 2024-01-08 Eric Oulashin Version 1.94 * New operator option for read mode: Add author email to email.can. * New command-line option: -indexModeScope, which can specify the indexed * reader scope (group/all) without prompting the user. - * Releasing this version + * User configuration options for newscan & email only shown when doing those actions */ "use strict"; @@ -234,8 +234,8 @@ var hexdump = load('hexdump_lib.js'); // Reader version information -var READER_VERSION = "1.93a"; -var READER_DATE = "2024-01-07"; +var READER_VERSION = "1.94"; +var READER_DATE = "2024-01-08"; // Keyboard key codes for displaying on the screen var UP_ARROW = ascii(24); @@ -14987,7 +14987,11 @@ function DigDistMsgReader_DoUserSettings_Scrollable(pDrawBottomhelpLineFn, pTopR // Create the user settings box var optBoxTitle = "Setting Enabled"; var optBoxWidth = ChoiceScrollbox_MinWidth(); - var optBoxHeight = 14; + var optBoxHeight = 10; + if (this.doingNewscan) + optBoxHeight += 3; + if (this.readingPersonalEmail) + ++optBoxHeight; var msgBoxTopRow = 1; if (typeof(pTopRowOverride) === "number" && pTopRowOverride >= 1 && pTopRowOverride <= console.screen_rows - optBoxHeight + 1) msgBoxTopRow = pTopRowOverride; @@ -15029,17 +15033,24 @@ function DigDistMsgReader_DoUserSettings_Scrollable(pDrawBottomhelpLineFn, pTopR if (this.userSettings.useIndexedModeForNewscan) optionBox.chgCharInTextItem(INDEXED_MODE_NEWSCAN_OPT_INDEX, checkIdx, CHECK_CHAR); - const SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Show indexed menu if there are no new messages")); - if (this.userSettings.displayIndexedModeMenuIfNoNewMessages) - optionBox.chgCharInTextItem(SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); + // Indexed-mode newscan options + var SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_INDEX = -1; + var INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = -1; + var INDEXED_MODE_MENU_SNAP_TO_NEW_MSGS_OPT_INDEX = -1; + if (this.doingNewscan) + { + SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Show indexed menu if there are no new messages")); + if (this.userSettings.displayIndexedModeMenuIfNoNewMessages) + optionBox.chgCharInTextItem(SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); - const INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Show indexed menu after reading all new msgs")); - if (this.userSettings.showIndexedNewscanMenuAfterReadingAllNewMsgs) - optionBox.chgCharInTextItem(INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); + INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Show indexed menu after reading all new msgs")); + if (this.userSettings.showIndexedNewscanMenuAfterReadingAllNewMsgs) + optionBox.chgCharInTextItem(INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); - const INDEXED_MODE_MENU_SNAP_TO_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Index menu: Snap to sub-boards w/ new messages")); - if (this.userSettings.indexedModeMenuSnapToFirstWithNew) - optionBox.chgCharInTextItem(INDEXED_MODE_MENU_SNAP_TO_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); + INDEXED_MODE_MENU_SNAP_TO_NEW_MSGS_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Index newscan: Snap to sub-boards w/ new msgs")); + if (this.userSettings.indexedModeMenuSnapToFirstWithNew) + optionBox.chgCharInTextItem(INDEXED_MODE_MENU_SNAP_TO_NEW_MSGS_OPT_INDEX, checkIdx, CHECK_CHAR); + } const INDEX_NEWSCAN_ENTER_SHOWS_MSG_LIST_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Index menu: Enter shows message list")); if (this.userSettings.enterFromIndexMenuShowsMsgList) @@ -15053,9 +15064,14 @@ function DigDistMsgReader_DoUserSettings_Scrollable(pDrawBottomhelpLineFn, pTopR if (this.userSettings.promptDelPersonalEmailAfterReply) optionBox.chgCharInTextItem(PROPMT_DEL_PERSONAL_MSG_AFTER_REPLY_OPT_INDEX, checkIdx, CHECK_CHAR); - const DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Display email 'replied' indicator")); - if (this.userSettings.displayMsgRepliedChar) - optionBox.chgCharInTextItem(DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_INDEX, checkIdx, CHECK_CHAR); + // Specific to personal email + var DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_INDEX = -1; + if (this.readingPersonalEmail) + { + DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_INDEX = optionBox.addTextItem(format(optionFormatStr, "Display email 'replied' indicator")); + if (this.userSettings.displayMsgRepliedChar) + optionBox.chgCharInTextItem(DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_INDEX, checkIdx, CHECK_CHAR); + } // Create an object containing toggle values (true/false) for each option index var optionToggles = {}; @@ -15212,17 +15228,31 @@ function DigDistMsgReader_DoUserSettings_Traditional() userTwitListChanged: false }; - var LIST_MESSAGES_IN_REVERSE_OPT_NUM = 1; - var NEWSCAN_ONLY_SHOW_NEW_MSGS_OPT_NUM = 2; - var USE_INDEXED_MODE_FOR_NEWSCAN_OPT_NUM = 3; - var SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_NUM = 4; - var INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = 5; - var INDEX_NEWSCAN_ENTER_SHOWS_MSG_LIST_OPT_NUM = 6; - var READER_QUIT_TO_MSG_LIST_OPT_NUM = 7; - var PROPMT_DEL_PERSONAL_MSG_AFTER_REPLY_OPT_NUM = 8; - var DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM = 9; - var USER_TWITLIST_OPT_NUM = 10; - var HIGHEST_CHOICE_NUM = USER_TWITLIST_OPT_NUM; + var optNum = 1; + var LIST_MESSAGES_IN_REVERSE_OPT_NUM = optNum++; + var NEWSCAN_ONLY_SHOW_NEW_MSGS_OPT_NUM = optNum++; + var USE_INDEXED_MODE_FOR_NEWSCAN_OPT_NUM = optNum++; + var INDEX_NEWSCAN_ENTER_SHOWS_MSG_LIST_OPT_NUM = optNum++; + var READER_QUIT_TO_MSG_LIST_OPT_NUM = optNum++; + var PROPMT_DEL_PERSONAL_MSG_AFTER_REPLY_OPT_NUM = optNum++; + var USER_TWITLIST_OPT_NUM = optNum++; + var HIGHEST_CHOICE_NUM = USER_TWITLIST_OPT_NUM; // Highest choice number + // Specific to personal email + var DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM = -1; + if (this.readingPersonalEmail) + { + DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM = optNum++; + HIGHEST_CHOICE_NUM = DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM; + } + // Indexed-mode newscan options (will only be displayed if doing a newscan) + var SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_NUM = -1; + var INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = -1; + if (this.doingNewscan) + { + SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_NUM = optNum++; + INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX = optNum++; + HIGHEST_CHOICE_NUM = INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX; + } console.crlf(); var wordFirstCharAttrs = "\x01c\x01h"; @@ -15231,13 +15261,19 @@ function DigDistMsgReader_DoUserSettings_Traditional() printTradUserSettingOption(LIST_MESSAGES_IN_REVERSE_OPT_NUM, "List messages in reverse", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(NEWSCAN_ONLY_SHOW_NEW_MSGS_OPT_NUM, "Only show new messages for newscan", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(USE_INDEXED_MODE_FOR_NEWSCAN_OPT_NUM, "Use Indexed mode for newscan", wordFirstCharAttrs, wordRemainingAttrs); - printTradUserSettingOption(SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_NUM, "Show indexed menu if there are no new messages", wordFirstCharAttrs, wordRemainingAttrs); - printTradUserSettingOption(INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX, "Show indexed menu after reading all new messages", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(INDEX_NEWSCAN_ENTER_SHOWS_MSG_LIST_OPT_NUM, "Index: Selection shows message list", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(READER_QUIT_TO_MSG_LIST_OPT_NUM, "Quitting From reader goes to message list", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(PROPMT_DEL_PERSONAL_MSG_AFTER_REPLY_OPT_NUM, "Prompt to delete personal message after replying", wordFirstCharAttrs, wordRemainingAttrs); - printTradUserSettingOption(DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM, "Display email replied indicator", wordFirstCharAttrs, wordRemainingAttrs); printTradUserSettingOption(USER_TWITLIST_OPT_NUM, "Personal twit list", wordFirstCharAttrs, wordRemainingAttrs); + // Specific to personal email + if (this.readingPersonalEmail) + printTradUserSettingOption(DISPLAY_PERSONAL_MAIL_REPLIED_INDICATOR_CHAR_OPT_NUM, "Display email replied indicator", wordFirstCharAttrs, wordRemainingAttrs); + // Newscan options + if (this.doingNewscan) + { + printTradUserSettingOption(SHOW_INDEXED_NEWSCAN_MENU_IF_NO_NEW_MSGS_OPT_NUM, "Show indexed menu if there are no new messages", wordFirstCharAttrs, wordRemainingAttrs); + printTradUserSettingOption(INDEXED_MODE_NEWSCAN_MENU_AFTER_READING_ALL_NEW_MSGS_OPT_INDEX, "Show indexed menu after reading all new messages", wordFirstCharAttrs, wordRemainingAttrs); + } console.crlf(); console.print("\x01cYour choice (\x01hQ\x01n\x01c: Quit)\x01h: \x01g"); var userChoiceNum = console.getnum(HIGHEST_CHOICE_NUM); diff --git a/xtrn/DDMsgReader/ddmr_cfg.js b/xtrn/DDMsgReader/ddmr_cfg.js index e9d8ed20d403de00a9fb208eca7724f054d7d4ba..a102c96fbb3d99571a02107f65fa8752b46441a9 100644 --- a/xtrn/DDMsgReader/ddmr_cfg.js +++ b/xtrn/DDMsgReader/ddmr_cfg.js @@ -5,7 +5,7 @@ // If you have DDMsgReader in a directory other than xtrn/DDMsgReader, then the changes to // DDMsgReader.cfg will be saved in that directory (assuming you're running ddmr_cfg.js from // that same directory). -// Currently for DDMsgReader 1.93a. +// Currently for DDMsgReader 1.94. // // If you're running DDMsgReader from xtrn/DDMsgReader (the standard location) and you want // to save the configuration file there (rather than sbbs/mods), you can use one of the @@ -18,7 +18,7 @@ require("sbbsdefs.js", "P_NONE"); require("uifcdefs.js", "UIFC_INMSG"); -if (!uifc.init("DigDist. Message Reader 1.93a Configurator")) +if (!uifc.init("DigDist. Message Reader 1.94 Configurator")) { print("Failed to initialize uifc"); exit(1); diff --git a/xtrn/DDMsgReader/readme.txt b/xtrn/DDMsgReader/readme.txt index 1be848e6750091e7ff63bd5239763c522e3e91fb..2c29a2b29213bd6c1fa9f49d3011ad73b37f53da 100644 --- a/xtrn/DDMsgReader/readme.txt +++ b/xtrn/DDMsgReader/readme.txt @@ -1,6 +1,6 @@ Digital Distortion Message Reader - Version 1.93a - Release date: 2024-01-07 + Version 1.94 + Release date: 2024-01-08 by diff --git a/xtrn/DDMsgReader/revision_history.txt b/xtrn/DDMsgReader/revision_history.txt index ead58f5b52e909c978a40472eef78378dec377e2..b4d061f9c2b3261ce76a0533c7e19d6dda49524b 100644 --- a/xtrn/DDMsgReader/revision_history.txt +++ b/xtrn/DDMsgReader/revision_history.txt @@ -5,7 +5,7 @@ Revision History (change log) ============================= Version Date Description ------- ---- ----------- -1.93a 2024-01-07 Fix: For indexed read mode (not doing a newscan), when +1.94 2024-01-07 Fix: For indexed read mode (not doing a newscan), when choosing a sub-board to read, the correct (first unread) message is displayed. Also, the user's scan pointer is also updated to the last_read pointer. @@ -14,6 +14,8 @@ Version Date Description New command-line option: -indexModeScope, which can specify the indexed reader scope (group/all) without prompting the user. + User configuration options for newscan & email only shown + when doing those actions 1.93 2024-01-01 New user-toggleable behavior: Show indexed menu after reading all new messages Also, indexed reader mode (started with the -indexedMode