diff --git a/package.nw/GridTracker.html b/package.nw/GridTracker.html index 908683f..1ca8ee9 100644 --- a/package.nw/GridTracker.html +++ b/package.nw/GridTracker.html @@ -977,8 +977,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. onclick="openSettingsTab(event, 'logSettingsDiv')">Logging - + + diff --git a/package.nw/gt_update.odt b/package.nw/gt_update.odt index 1745e72..05dce2c 100644 Binary files a/package.nw/gt_update.odt and b/package.nw/gt_update.odt differ diff --git a/package.nw/i18n/cn-t.json b/package.nw/i18n/cn-t.json index 3f57f32..e476fef 100644 --- a/package.nw/i18n/cn-t.json +++ b/package.nw/i18n/cn-t.json @@ -995,6 +995,7 @@ "roster.ignore.DXCCs": "DXCCs", "roster.ignore.CQZones": "CQ 分區", "roster.ignore.ITUZones": "ITU 分區", + "roster.menu.Settings": "Settings", "roster.menu.HideControls": "隱藏控件", "roster.menu.ShowControls": "顯示控件", "roster.menu.CompactMode": "緊密模式", diff --git a/package.nw/i18n/cn.json b/package.nw/i18n/cn.json index f5b22c8..9e638d4 100644 --- a/package.nw/i18n/cn.json +++ b/package.nw/i18n/cn.json @@ -995,6 +995,7 @@ "roster.ignore.DXCCs": "DXCCs", "roster.ignore.CQZones": "CQ分区", "roster.ignore.ITUZones": "ITU分区", + "roster.menu.Settings": "Settings", "roster.menu.HideControls": "隐藏控件栏", "roster.menu.ShowControls": "显示控件栏", "roster.menu.CompactMode": "紧凑模式", diff --git a/package.nw/i18n/en.json b/package.nw/i18n/en.json index 9c61e42..d573ab7 100644 --- a/package.nw/i18n/en.json +++ b/package.nw/i18n/en.json @@ -995,6 +995,7 @@ "roster.ignore.DXCCs": "DXCCs", "roster.ignore.CQZones": "CQ Zones", "roster.ignore.ITUZones": "ITU Zones", + "roster.menu.Settings": "Settings", "roster.menu.HideControls": "Hide Controls", "roster.menu.ShowControls": "Show Controls", "roster.menu.CompactMode": "Compact Mode", diff --git a/package.nw/lib/defaults.js b/package.nw/lib/defaults.js index 5da8f9a..63e124a 100644 --- a/package.nw/lib/defaults.js +++ b/package.nw/lib/defaults.js @@ -33,7 +33,6 @@ var validSettings = [ var def_appSettings = { alertMute: 0, - rosterAlwaysOnTop: false, centerGridsquare: "", chatUUID: "", clearOnCQ: false, @@ -64,9 +63,6 @@ var def_appSettings = { lookupPasswordQth: "", lookupService: "CALLOOK", lookupCallookPreferred: false, - clearRosterOnBandChange: false, - rosterDelayOnFocus: false, - rosterDelayTime: 1500, moonPath: 0, moonTrack: 0, mouseTrack: 0, @@ -125,7 +121,6 @@ var def_mapSettings = { pathColor: 0, qrzDxccFallback: false, qrzPathColor: 1, - rosterTime: 120, shadow: 0.1, splitQSL: true, trafficDecode: true, diff --git a/package.nw/lib/gt.js b/package.nw/lib/gt.js index 77b6dbf..67cfc98 100644 --- a/package.nw/lib/gt.js +++ b/package.nw/lib/gt.js @@ -2507,7 +2507,6 @@ function openCallRosterWindow(show = true) { g_callRosterWindowHandle.setMinimumSize(390, 250); g_callRosterWindowHandle.setResizable(true); - setRosterTop(); }); new_win.on("close", function () { @@ -6182,7 +6181,7 @@ function handleWsjtxStatus(newMessage) } } - if (g_appSettings.clearRosterOnBandChange && g_instances[newMessage.instance].oldStatus) + if (g_rosterInitialized && g_callRosterWindowHandle.window.g_rosterSettings.clearRosterOnBandChange && g_instances[newMessage.instance].oldStatus) { if (g_instances[newMessage.instance].oldStatus.Band != newMessage.Band || g_instances[newMessage.instance].oldStatus.MO != newMessage.MO) { @@ -12315,10 +12314,6 @@ function loadMapSettings() focusRigValue.checked = g_mapSettings.focusRig; haltAllOnTxValue.checked = g_mapSettings.haltAllOnTx; - clearRosterOnBandChange.checked = g_appSettings.clearRosterOnBandChange; - rosterDelayOnFocus.checked = g_appSettings.rosterDelayOnFocus; - rosterDelayTime.value = g_appSettings.rosterDelayTime; - rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; trafficDecode.checked = g_mapSettings.trafficDecode; setSpotImage(); @@ -12834,7 +12829,6 @@ function loadViewSettings() } spotPathChange(); - setRosterTimeView(); setLegendAndGridSettings(); } @@ -13030,8 +13024,6 @@ function startupButtonsAndInputs() alertMuteImg.src = g_alertImageArray[g_appSettings.alertMute]; modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode]; - rosterAlwaysOnTop.checked = g_appSettings.rosterAlwaysOnTop; - if (g_appSettings.centerGridsquare.length > 0) { homeQTHInput.value = g_appSettings.centerGridsquare.substr(0, 6); @@ -13792,24 +13784,6 @@ function loadLookupDetails() else lookupCredentials.style.display = "block"; } -function clearRosterOnBandChangeValueChanged(what) -{ - g_appSettings.clearRosterOnBandChange = clearRosterOnBandChange.checked; - saveAppSettings(); -} - -function rosterDelayOnFocusValueChanged(what) -{ - g_appSettings.rosterDelayOnFocus = rosterDelayOnFocus.checked; - saveAppSettings(); -} - -function changeRosterDelayTime() -{ - g_appSettings.rosterDelayTime = rosterDelayTime.value; - rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; -} - function lookupValueChanged(what) { if (g_appSettings.lookupService != lookupService.value) @@ -15931,41 +15905,6 @@ function gotoDonate() gui.Shell.openExternal("https://gridtracker.org/donations/"); } -function changeRosterTime() -{ - g_mapSettings.rosterTime = rosterTime.value; - setRosterTimeView(); - saveMapSettings(); - goProcessRoster(); -} - -function changeRosterTop(butt) -{ - g_appSettings.rosterAlwaysOnTop = butt.checked; - setRosterTop(); -} - -function setRosterTop() -{ - if (g_rosterInitialized) - { - try - { - g_callRosterWindowHandle.setAlwaysOnTop(g_appSettings.rosterAlwaysOnTop); - } - catch (e) - { - console.error(e); - } - } -} - -function setRosterTimeView() -{ - rosterTime.value = g_mapSettings.rosterTime; - rosterTimeTd.innerHTML = Number(rosterTime.value).toDHMS(); -} - function getSpotTime(hash) { if (hash in g_receptionReports.spots) diff --git a/package.nw/lib/roster.js b/package.nw/lib/roster.js index 54fb92a..8f30981 100644 --- a/package.nw/lib/roster.js +++ b/package.nw/lib/roster.js @@ -146,9 +146,13 @@ var g_defaultSettings = { controlsExtended: true, compact: false, settingProfiles: false, - sortColumn: "Age", - sortReverse: true + sortReverse: true, + clearRosterOnBandChange: false, + rosterAlwaysOnTop: false, + rosterDelayOnFocus: false, + rosterDelayTime: 1500, + rosterTime: 120 }; const LOGBOOK_LIVE_BAND_LIVE_MODE = "0"; @@ -1406,6 +1410,20 @@ function clearAllITUzIgnores() window.opener.goProcessRoster(); } +function openSettings() +{ + MainCallRoster.style.display = "block"; + settingsDiv.style.display = "block"; + editView.style.display = "none"; +} + +function closeSettings() +{ + MainCallRoster.style.display = "block"; + settingsDiv.style.display = "none"; + editView.style.display = "none"; +} + function closeEditIgnores() { MainCallRoster.style.display = "block"; @@ -1544,14 +1562,21 @@ function openIgnoreEdit() worker += ""; editTables.innerHTML = worker; - editView.style.height = (window.innerHeight - 50) + "px"; + editView.style.height = (window.innerHeight - 45) + "px"; } function onMyKeyDown(event) { if (!g_typingInRoster) { - window.opener.onMyKeyDown(event); + if (event.code == "KeyS" && event.ctrlKey == true) + { + openSettings(); + } + else + { + window.opener.onMyKeyDown(event); + } } } @@ -1600,6 +1625,8 @@ function init() // callback to addControls(); loadRosteri18n(); + + setRosterTop(); } // From i18n.js @@ -1649,9 +1676,7 @@ function addControls() this.label = hideControlsText; g_rosterSettings.controls = true; } - g_compactMenu.items[0].label = g_rosterSettings.controls - ? hideControlsText - : showControlsText; + g_compactMenu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText; localStorage.rosterSettings = JSON.stringify(g_rosterSettings); setVisual(); } @@ -1673,15 +1698,33 @@ function addControls() this.label = hideControlsText; g_rosterSettings.controls = true; } - g_menu.items[0].label = g_rosterSettings.controls - ? hideControlsText - : showControlsText; + g_menu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText; localStorage.rosterSettings = JSON.stringify(g_rosterSettings); setVisual(); } }); g_compactMenu.append(item); + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.menu.Settings"), + click: function () + { + openSettings(); + } + }); + g_menu.append(item); + + item = new nw.MenuItem({ + type: "normal", + label: $.i18n("roster.menu.Settings"), + click: function () + { + openSettings(); + } + }); + g_compactMenu.append(item); + item = new nw.MenuItem({ type: "normal", label: $.i18n("roster.menu.CompactMode"), @@ -2181,6 +2224,13 @@ function addControls() noUnknownDXCC.checked = g_rosterSettings.noUnknownDXCC; + clearRosterOnBandChange.checked = g_rosterSettings.clearRosterOnBandChange; + rosterDelayOnFocus.checked = g_rosterSettings.rosterDelayOnFocus; + rosterDelayTime.value = g_rosterSettings.rosterDelayTime; + rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; + + setRosterTimeView(); + setVisual(); document.addEventListener("keydown", onMyKeyDown, false); @@ -2190,6 +2240,50 @@ function addControls() updateInstances(); } +function clearRosterOnBandChangeValueChanged(what) +{ + g_rosterSettings.clearRosterOnBandChange = clearRosterOnBandChange.checked; + writeRosterSettings(); +} + +function rosterDelayOnFocusValueChanged(what) +{ + g_rosterSettings.rosterDelayOnFocus = rosterDelayOnFocus.checked; + writeRosterSettings(); +} + +function changeRosterDelayTime() +{ + g_rosterSettings.rosterDelayTime = rosterDelayTime.value; + rosterDelayTimeTd.innerHTML = rosterDelayTime.value + "ms"; + writeRosterSettings(); +} + +function changeRosterTime() +{ + g_rosterSettings.rosterTime = rosterTime.value; + setRosterTimeView(); + writeRosterSettings(); + viewRoster(); +} + +function changeRosterTop(butt) +{ + g_rosterSettings.rosterAlwaysOnTop = butt.checked; + setRosterTop(); +} + +function setRosterTop() +{ + nw.Window.get().setAlwaysOnTop(g_rosterSettings.rosterAlwaysOnTop); +} + +function setRosterTimeView() +{ + rosterTime.value = g_rosterSettings.rosterTime; + rosterTimeTd.innerHTML = Number(rosterTime.value).toDHMS(); +} + function handleContextMenu(ev) { if (editView.style.display == "inline-block") return false; diff --git a/package.nw/lib/roster/processRosterFiltering.js b/package.nw/lib/roster/processRosterFiltering.js index 5e0364f..95c0b28 100644 --- a/package.nw/lib/roster/processRosterFiltering.js +++ b/package.nw/lib/roster/processRosterFiltering.js @@ -40,7 +40,7 @@ function processRosterFiltering(callRoster, rosterSettings) continue; } - if (rosterSettings.now - callObj.age > window.opener.g_mapSettings.rosterTime) + if (rosterSettings.now - callObj.age > g_rosterSettings.rosterTime) { entry.tx = false; entry.alerted = false;