merge-requests/237/merge
Tag 2023-01-17 04:42:36 -08:00
rodzic 34ae314e70
commit 84b6f94c2d
10 zmienionych plików z 267 dodań i 216 usunięć

Wyświetl plik

@ -977,8 +977,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
onclick="openSettingsTab(event, 'logSettingsDiv')">Logging</button> onclick="openSettingsTab(event, 'logSettingsDiv')">Logging</button>
<button data-i18n="settings.Alerts.label" class="settingsTablinks" <button data-i18n="settings.Alerts.label" class="settingsTablinks"
onclick="openSettingsTab(event, 'alertsDiv')">Alerts</button> onclick="openSettingsTab(event, 'alertsDiv')">Alerts</button>
<button data-i18n="settings.CallRoster.label" class="settingsTablinks"
onclick="openSettingsTab(event, 'callRosterDiv')">Call Roster</button>
<button data-i18n="settings.OAMS.label" class="settingsTablinks" <button data-i18n="settings.OAMS.label" class="settingsTablinks"
onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button> onclick="openSettingsTab(event, 'chatSettingsDiv')">OAMS</button>
<button data-i18n="settings.Logbook.label" id="logbut" class="settingsTablinks" <button data-i18n="settings.Logbook.label" id="logbut" class="settingsTablinks"
@ -1080,6 +1078,24 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</table> </table>
</div> </div>
</td> </td>
<td>
<div class="mapItem" id="multiRigCRDiv" style="display:none;">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.SwitchView.label" align="center">Switch View To Transmitting
Instance</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="focusRigValue" onchange="changeFocusRigValue(this);" />
</td>
</tr>
</table>
</div>
</td>
</tr> </tr>
</table> </table>
<table align="center"> <table align="center">
@ -1118,6 +1134,23 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</table> </table>
</div> </div>
</td> </td>
<td>
<div class="mapItem" id="haltTXDiv" style="display:none;">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.HaltTx.label" align="center">Halt TX On All Other Instances</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="haltAllOnTxValue" onchange="changeHaltOntTxValue(this);" />
</td>
</tr>
</table>
</div>
</td>
</tr> </tr>
</table> </table>
<table align="center"> <table align="center">
@ -1975,7 +2008,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</tr> </tr>
</table> </table>
</div> </div>
<br /> <br />
<div class="mapItem"> <div class="mapItem">
<table align="center"> <table align="center">
@ -2428,7 +2460,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
<td></td> <td></td>
</tr> </tr>
</table> </table>
<h2 data-i18n="settings.logging.other.title">Other Services</h2> <h2 data-i18n="settings.logging.other.title">Other Services</h2>
<table class="darkTable" align="center"> <table class="darkTable" align="center">
<tr> <tr>
@ -2454,136 +2485,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
</td> </td>
</tr> </tr>
</table> </table>
</div>
<div id="callRosterDiv" class="settingsTabcontent">
<div class="mapItem">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.AlwaysOnTop.label" align="center">Window Always On Top</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="rosterAlwaysOnTop" onchange="changeRosterTop(this);" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MaxAge.label" align="center">Call Roster Max Age</td>
</tr>
<tr align="center">
<td align="center" id="rosterTimeTd">2m 0s</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="range" min="5" max="300" value="120" step="15" class="slider" id="rosterTime"
oninput="changeRosterTime()" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Clear Call Roster on Band change</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="clearRosterOnBandChange"
onchange="clearRosterOnBandChangeValueChanged(this);" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Call Roster Decode Delay On Focus</td>
</tr>
<td colspan="2">
<input type="checkbox" id="rosterDelayOnFocus" onchange="rosterDelayOnFocusValueChanged(this);" />
</td>
<tr align="center">
<td align="center" id="rosterDelayTimeTd">1500ms</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="50"
max="5000"
value="1500"
step="10"
class="slider"
id="rosterDelayTime"
oninput="changeRosterDelayTime()"
/>
</td>
</tr>
</table>
</div>
<div class="mapItem" id="haltTXDiv" style="display: none">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.HaltTx.label" align="center">Halt TX On All Other Instances</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="haltAllOnTxValue" onchange="changeHaltOntTxValue(this);" />
</td>
</tr>
</table>
</div>
<div class="mapItem" id="multiRigCRDiv" style="display: none">
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.label" align="center">On QSO Reply</td>
</tr>
<tr align="center">
<td data-i18n="settings.callroster.MultiRig.SwitchView.label" align="center">Switch View To Transmitting
Instance</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="focusRigValue" onchange="changeFocusRigValue(this);" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center" title="Alert when new 'Wanted Row(s)' appear in the Call Roster">
<tr>
<td data-i18n="settings.callroster.AudioAlert.label" colspan="2">Audio Alert On <b>New Wanted</b></td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" id="huntRoster" onchange="wantedChanged(this);" />
</td>
</tr>
<tr>
<td>
<select id="huntRosterNotify" onchange="wantedChanged(this);">
<option data-i18n="settings.callroster.AudioAlert.TextToSpeech" value="1">Text-to-Speech</option>
<option data-i18n="settings.callroster.AudioAlert.MediaFile" value="0">Media File</option>
</select>
</td>
<td>
<input id="huntRosterNotifyWord" type="text" class="inputTextValue" size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);" />
<select id="huntRosterNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
</table>
</div>
</div> </div>
<div id="alertsDiv" class="settingsTabcontent"> <div id="alertsDiv" class="settingsTabcontent">
<div id="alertMatrixDiv" style="display: inline-block"> <div id="alertMatrixDiv" style="display: inline-block">
@ -2760,6 +2661,36 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
oninput="ValidateText(this);wantedChanged(this);" /> oninput="ValidateText(this);wantedChanged(this);" />
<select id="huntStatesNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select> <select id="huntStatesNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td> </td>
<tr>
<td colspan="5">
<div class="mapItem">
<table align="center" title="Alert when new 'Wanted Row(s)' appear in the Call Roster">
<tr>
<td data-i18n="settings.callroster.AudioAlert.label" colspan="2">Call Roster On <b>New Wanted</b></td>
</tr>
<tr>
<td colspan="2">
<input type="checkbox" id="huntRoster" onchange="wantedChanged(this);" />
</td>
</tr>
<tr>
<td>
<select id="huntRosterNotify" onchange="wantedChanged(this);">
<option data-i18n="settings.callroster.AudioAlert.TextToSpeech" value="1">Text-to-Speech</option>
<option data-i18n="settings.callroster.AudioAlert.MediaFile" value="0">Media File</option>
</select>
</td>
<td>
<input id="huntRosterNotifyWord" type="text" class="inputTextValue" size="14"
onkeyup="if (event.keyCode === 13) { speakAlertString(this.value);}"
oninput="ValidateText(this);wantedChanged(this);" />
<select id="huntRosterNotifyMedia" style="display: block" onchange="wantedChanged(this);"></select>
</td>
</tr>
</table>
</div>
</td>
</tr>
</tr> </tr>
</table> </table>
<table class="roundBorder" align="left" <table class="roundBorder" align="left"

Wyświetl plik

@ -43,8 +43,8 @@
<script src="./lib/roster/sendAlerts.js" type="text/javascript"></script> <script src="./lib/roster/sendAlerts.js" type="text/javascript"></script>
<script src="./lib/screens.js" type="text/javascript"></script> <script src="./lib/screens.js" type="text/javascript"></script>
</head> </head>
<body id="rosterBody" onload="init()" style="display: none;" class="roster" oncontextmenu="return handleContextMenu(event);"> <body id="rosterBody" onload="init()" onresize="resize()" style="display: none;" class="roster" oncontextmenu="return handleContextMenu(event);">
<div id="MainCallRoster"> <div id="MainCallRoster" style="display:block;";>
<header id="RosterControls"> <header id="RosterControls">
<div id="TransmitControls"> <div id="TransmitControls">
<div id="txrxdec" style=" background-color: Green; border-style: outset; border-color: yellow; border-width: 3px; margin: 2px;" class="roundBorder"> <div id="txrxdec" style=" background-color: Green; border-style: outset; border-color: yellow; border-width: 3px; margin: 2px;" class="roundBorder">
@ -425,13 +425,102 @@
<div <div
id="editView" id="editView"
class="roundBorder" class="roundBorder"
style="height: 100%; border: 3px solid #066; padding: 10px; margin: 10px; display: none" style="height: 100%; width:95%; top:0px; left:0px; border: 3px solid #066; padding: 10px; margin: 10px; display: none; position: absolute;"
> >
<div style="display: block; font-size: larger">Callsign, CQ and DXCC Ignores</div> <div style="display: block; font-size: larger">Callsign, CQ and DXCC Ignores</div>
<br /> <br />
<div id="editTables"></div> <div id="editTables"></div>
<div class="button" style="margin-top: 5px" onclick="closeEditIgnores()">Close</div> <div style="top: 1px; right: 1px; position: absolute">
<button class="Xbutton" onclick="closeEditIgnores()">X</button>
</div>
</div> </div>
<div id="settingsDiv" class="roundBorder" style="overflow: hidden;
margin: 0;
top: 10px;
left: 15%;
width: 70%;
display: none;
background-color: #000000;
padding: 0px;
text-align: center;
vertical-align: middle;
position: absolute;
z-index: 600;
border: 3px solid rgb(0, 50, 189);" >
<div class="mapItem" >
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.AlwaysOnTop.label" align="center">Window Always On Top</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="rosterAlwaysOnTop" onchange="changeRosterTop(this);" />
</td>
</tr>
</table>
</div>
<div class="mapItem" >
<table align="center">
<tr align="center">
<td data-i18n="settings.callroster.MaxAge.label" align="center">Call Roster Max Age</td>
</tr>
<tr align="center">
<td align="center" id="rosterTimeTd">2m 0s</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="range" min="5" max="300" value="120" step="5" class="slider" id="rosterTime"
oninput="changeRosterTime()" />
</td>
</tr>
</table>
</div>
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Clear Call Roster on Band change</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="checkbox" id="clearRosterOnBandChange"
onchange="clearRosterOnBandChangeValueChanged(this);" />
</td>
</tr>
</table>
</div>
<br />
<div class="mapItem">
<table align="center">
<tr align="center">
<td align="center">Call Roster Decode Delay On Focus</td>
</tr>
<td colspan="2">
<input type="checkbox" id="rosterDelayOnFocus" onchange="rosterDelayOnFocusValueChanged(this);" />
</td>
<tr align="center">
<td align="center" id="rosterDelayTimeTd">1500ms</td>
</tr>
<tr align="center">
<td colspan="2">
<input
type="range"
min="50"
max="5000"
value="1500"
step="10"
class="slider"
id="rosterDelayTime"
oninput="changeRosterDelayTime()"
/>
</td>
</tr>
</table>
</div>
<br />
<div style="top: 1px; right: 1px; position: absolute">
<button class="Xbutton" onclick="closeSettings()">X</button>
</div>
</div>
</body> </body>
</html> </html>

Plik binarny nie jest wyświetlany.

Wyświetl plik

@ -995,6 +995,7 @@
"roster.ignore.DXCCs": "DXCCs", "roster.ignore.DXCCs": "DXCCs",
"roster.ignore.CQZones": "CQ 分區", "roster.ignore.CQZones": "CQ 分區",
"roster.ignore.ITUZones": "ITU 分區", "roster.ignore.ITUZones": "ITU 分區",
"roster.menu.Settings": "Settings",
"roster.menu.HideControls": "隱藏控件", "roster.menu.HideControls": "隱藏控件",
"roster.menu.ShowControls": "顯示控件", "roster.menu.ShowControls": "顯示控件",
"roster.menu.CompactMode": "緊密模式", "roster.menu.CompactMode": "緊密模式",

Wyświetl plik

@ -995,6 +995,7 @@
"roster.ignore.DXCCs": "DXCCs", "roster.ignore.DXCCs": "DXCCs",
"roster.ignore.CQZones": "CQ分区", "roster.ignore.CQZones": "CQ分区",
"roster.ignore.ITUZones": "ITU分区", "roster.ignore.ITUZones": "ITU分区",
"roster.menu.Settings": "Settings",
"roster.menu.HideControls": "隐藏控件栏", "roster.menu.HideControls": "隐藏控件栏",
"roster.menu.ShowControls": "显示控件栏", "roster.menu.ShowControls": "显示控件栏",
"roster.menu.CompactMode": "紧凑模式", "roster.menu.CompactMode": "紧凑模式",

Wyświetl plik

@ -995,6 +995,7 @@
"roster.ignore.DXCCs": "DXCCs", "roster.ignore.DXCCs": "DXCCs",
"roster.ignore.CQZones": "CQ Zones", "roster.ignore.CQZones": "CQ Zones",
"roster.ignore.ITUZones": "ITU Zones", "roster.ignore.ITUZones": "ITU Zones",
"roster.menu.Settings": "Settings",
"roster.menu.HideControls": "Hide Controls", "roster.menu.HideControls": "Hide Controls",
"roster.menu.ShowControls": "Show Controls", "roster.menu.ShowControls": "Show Controls",
"roster.menu.CompactMode": "Compact Mode", "roster.menu.CompactMode": "Compact Mode",

Wyświetl plik

@ -33,7 +33,6 @@ var validSettings = [
var def_appSettings = { var def_appSettings = {
alertMute: 0, alertMute: 0,
rosterAlwaysOnTop: false,
centerGridsquare: "", centerGridsquare: "",
chatUUID: "", chatUUID: "",
clearOnCQ: false, clearOnCQ: false,
@ -64,9 +63,6 @@ var def_appSettings = {
lookupPasswordQth: "", lookupPasswordQth: "",
lookupService: "CALLOOK", lookupService: "CALLOOK",
lookupCallookPreferred: false, lookupCallookPreferred: false,
clearRosterOnBandChange: false,
rosterDelayOnFocus: false,
rosterDelayTime: 1500,
moonPath: 0, moonPath: 0,
moonTrack: 0, moonTrack: 0,
mouseTrack: 0, mouseTrack: 0,
@ -125,7 +121,6 @@ var def_mapSettings = {
pathColor: 0, pathColor: 0,
qrzDxccFallback: false, qrzDxccFallback: false,
qrzPathColor: 1, qrzPathColor: 1,
rosterTime: 120,
shadow: 0.1, shadow: 0.1,
splitQSL: true, splitQSL: true,
trafficDecode: true, trafficDecode: true,

Wyświetl plik

@ -2507,7 +2507,6 @@ function openCallRosterWindow(show = true)
{ {
g_callRosterWindowHandle.setMinimumSize(390, 250); g_callRosterWindowHandle.setMinimumSize(390, 250);
g_callRosterWindowHandle.setResizable(true); g_callRosterWindowHandle.setResizable(true);
setRosterTop();
}); });
new_win.on("close", function () 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) 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; focusRigValue.checked = g_mapSettings.focusRig;
haltAllOnTxValue.checked = g_mapSettings.haltAllOnTx; 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; trafficDecode.checked = g_mapSettings.trafficDecode;
setSpotImage(); setSpotImage();
@ -12834,7 +12829,6 @@ function loadViewSettings()
} }
spotPathChange(); spotPathChange();
setRosterTimeView();
setLegendAndGridSettings(); setLegendAndGridSettings();
} }
@ -13030,8 +13024,6 @@ function startupButtonsAndInputs()
alertMuteImg.src = g_alertImageArray[g_appSettings.alertMute]; alertMuteImg.src = g_alertImageArray[g_appSettings.alertMute];
modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode]; modeImg.src = g_maidenheadModeImageArray[g_appSettings.sixWideMode];
rosterAlwaysOnTop.checked = g_appSettings.rosterAlwaysOnTop;
if (g_appSettings.centerGridsquare.length > 0) if (g_appSettings.centerGridsquare.length > 0)
{ {
homeQTHInput.value = g_appSettings.centerGridsquare.substr(0, 6); homeQTHInput.value = g_appSettings.centerGridsquare.substr(0, 6);
@ -13792,24 +13784,6 @@ function loadLookupDetails()
else lookupCredentials.style.display = "block"; 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) function lookupValueChanged(what)
{ {
if (g_appSettings.lookupService != lookupService.value) if (g_appSettings.lookupService != lookupService.value)
@ -15931,41 +15905,6 @@ function gotoDonate()
gui.Shell.openExternal("https://gridtracker.org/donations/"); 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) function getSpotTime(hash)
{ {
if (hash in g_receptionReports.spots) if (hash in g_receptionReports.spots)

Wyświetl plik

@ -146,9 +146,13 @@ var g_defaultSettings = {
controlsExtended: true, controlsExtended: true,
compact: false, compact: false,
settingProfiles: false, settingProfiles: false,
sortColumn: "Age", sortColumn: "Age",
sortReverse: true sortReverse: true,
clearRosterOnBandChange: false,
rosterAlwaysOnTop: false,
rosterDelayOnFocus: false,
rosterDelayTime: 1500,
rosterTime: 120
}; };
const LOGBOOK_LIVE_BAND_LIVE_MODE = "0"; const LOGBOOK_LIVE_BAND_LIVE_MODE = "0";
@ -1406,6 +1410,20 @@ function clearAllITUzIgnores()
window.opener.goProcessRoster(); 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() function closeEditIgnores()
{ {
MainCallRoster.style.display = "block"; MainCallRoster.style.display = "block";
@ -1544,14 +1562,21 @@ function openIgnoreEdit()
worker += "</table></div>"; worker += "</table></div>";
editTables.innerHTML = worker; editTables.innerHTML = worker;
editView.style.height = (window.innerHeight - 50) + "px"; editView.style.height = (window.innerHeight - 45) + "px";
} }
function onMyKeyDown(event) function onMyKeyDown(event)
{ {
if (!g_typingInRoster) 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(); // callback to addControls();
loadRosteri18n(); loadRosteri18n();
setRosterTop();
} }
// From i18n.js // From i18n.js
@ -1649,9 +1676,7 @@ function addControls()
this.label = hideControlsText; this.label = hideControlsText;
g_rosterSettings.controls = true; g_rosterSettings.controls = true;
} }
g_compactMenu.items[0].label = g_rosterSettings.controls g_compactMenu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText;
? hideControlsText
: showControlsText;
localStorage.rosterSettings = JSON.stringify(g_rosterSettings); localStorage.rosterSettings = JSON.stringify(g_rosterSettings);
setVisual(); setVisual();
} }
@ -1673,15 +1698,33 @@ function addControls()
this.label = hideControlsText; this.label = hideControlsText;
g_rosterSettings.controls = true; g_rosterSettings.controls = true;
} }
g_menu.items[0].label = g_rosterSettings.controls g_menu.items[0].label = g_rosterSettings.controls ? hideControlsText : showControlsText;
? hideControlsText
: showControlsText;
localStorage.rosterSettings = JSON.stringify(g_rosterSettings); localStorage.rosterSettings = JSON.stringify(g_rosterSettings);
setVisual(); setVisual();
} }
}); });
g_compactMenu.append(item); 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({ item = new nw.MenuItem({
type: "normal", type: "normal",
label: $.i18n("roster.menu.CompactMode"), label: $.i18n("roster.menu.CompactMode"),
@ -2181,6 +2224,13 @@ function addControls()
noUnknownDXCC.checked = g_rosterSettings.noUnknownDXCC; 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(); setVisual();
document.addEventListener("keydown", onMyKeyDown, false); document.addEventListener("keydown", onMyKeyDown, false);
@ -2190,6 +2240,50 @@ function addControls()
updateInstances(); 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) function handleContextMenu(ev)
{ {
if (editView.style.display == "inline-block") return false; if (editView.style.display == "inline-block") return false;

Wyświetl plik

@ -40,7 +40,7 @@ function processRosterFiltering(callRoster, rosterSettings)
continue; continue;
} }
if (rosterSettings.now - callObj.age > window.opener.g_mapSettings.rosterTime) if (rosterSettings.now - callObj.age > g_rosterSettings.rosterTime)
{ {
entry.tx = false; entry.tx = false;
entry.alerted = false; entry.alerted = false;