Lobby register/login dialog cleanup.

Move JS code from XML files to JS files.
Move all terms data to one JS object.
Unify duplicate Terms dialog opening code.
Update the checkbox enabled property only upon dialog close, not onTick.

This was SVN commit r21846.
This commit is contained in:
elexis
2018-06-08 13:39:52 +00:00
parent f51f78c999
commit de1a73ba65
3 changed files with 54 additions and 48 deletions
@@ -19,7 +19,7 @@
<object type="button" style="ModernButtonRed" tooltip_style="snToolTip" size="100%-408 100%-52 100%-218 100%-24" hotkey="cancel">
<translatableAttribute id="caption">Close</translatableAttribute>
<action on="Press"><![CDATA[closeManual();]]></action>
<action on="Press">closeManual();</action>
</object>
<object name="url" type="button" style="ModernButtonRed" size="100%-214 100%-52 100%-24 100%-24" hidden="true">
<translatableAttribute id="caption">View Online</translatableAttribute>
@@ -1,16 +1,36 @@
var g_LobbyIsConnecting = false;
var g_EncryptedPassword = "";
var g_PasswordInputIsHidden = false;
var g_TermsOfServiceRead = false;
var g_TermsOfUseRead = false;
var g_DisplayingSystemMessage = false;
var g_Terms = {
"Service": {
"title": translate("Terms of Service"),
"instruction": translate("Please read the Terms of Service"),
"file": "prelobby/Terms_of_Service",
"read": false
},
"Use": {
"title": translate("Terms of Use"),
"instruction": translate("Please read the Terms of Use"),
"file": "prelobby/Terms_of_Use",
"read": false
}
};
function init()
{
let username = Engine.ConfigDB_GetValue("user", "lobby.login");
g_EncryptedPassword = Engine.ConfigDB_GetValue("user", "lobby.password");
// We only show 10 characters to make it look decent.
Engine.GetGUIObjectByName("connectUsername").caption = username;
Engine.GetGUIObjectByName("connectPassword").caption = g_EncryptedPassword.substring(0, 10);
Engine.GetGUIObjectByName("rememberPassword").checked =
Engine.ConfigDB_GetValue("user", "lobby.rememberpassword") == "true";
g_EncryptedPassword = Engine.ConfigDB_GetValue("user", "lobby.password");
if (Engine.ConfigDB_GetValue("user", "lobby.login") && g_EncryptedPassword)
if (username && g_EncryptedPassword)
switchPage("connect");
}
@@ -129,16 +149,16 @@ function onTick()
feedback.caption = translate("Passwords do not match");
}
// Check that they read the Terms of Service.
else if (!g_TermsOfServiceRead)
else if (!g_Terms.Service.read)
{
continueButton.enabled = false;
feedback.caption = translate("Please read the Terms of Service");
feedback.caption = g_Terms.Service.instruction;
}
// Check that they read the Terms of Use.
else if (!g_TermsOfUseRead)
else if (!g_Terms.Use.read)
{
continueButton.enabled = false;
feedback.caption = translate("Please read the Terms of Use");
feedback.caption = g_Terms.Use.instruction;
}
// Check that they agree to the terms of service and use.
else if (!agreeTerms.checked)
@@ -257,22 +277,25 @@ function switchPage(page)
break;
}
}
function openTermsOfService()
function openTerms(terms)
{
g_TermsOfServiceRead = true;
g_Terms[terms].read = true;
Engine.GetGUIObjectByName("registerAgreeTerms").enabled = g_Terms.Service.read && g_Terms.Use.read;
Engine.PushGuiPage("page_manual.xml", {
"page": "prelobby/Terms_of_Service",
"title": translate("Terms of Service"),
"page": g_Terms[terms].file,
"title": g_Terms[terms].title
});
}
function openTermsOfUse()
function prelobbyConnect()
{
g_TermsOfUseRead = true;
Engine.PushGuiPage("page_manual.xml", {
"page": "prelobby/Terms_of_Use",
"title": translate("Terms of Use"),
});
if (!Engine.GetGUIObjectByName("pageConnect").hidden)
lobbyStartConnect();
else if (!Engine.GetGUIObjectByName("pageRegister").hidden)
lobbyStartRegister();
}
function prelobbyCancel()
@@ -17,9 +17,7 @@
<object name="dialog" type="image" style="ModernDialog" size="50%-230 50%-130 50%+230 50%+130">
<action on="Tick">
onTick();
</action>
<action on="Tick">onTick();</action>
<object style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14">
<translatableAttribute id="caption">Multiplayer Lobby</translatableAttribute>
@@ -42,32 +40,22 @@
<object name="connectUsernameLabel" type="text" size="20 40 50% 70" style="ModernRightLabelText">
<translatableAttribute id="caption">Login:</translatableAttribute>
</object>
<object name="connectUsername" type="input" size="50%+10 40 100%-20 64" style="ModernInput">
<action on="Load">
this.caption = Engine.ConfigDB_GetValue("user", "lobby.login");
</action>
</object>
<object name="connectUsername" type="input" size="50%+10 40 100%-20 64" style="ModernInput"/>
<object name="connectPasswordLabel" type="text" size="20 80 50% 110" style="ModernRightLabelText">
<translatableAttribute id="caption">Password:</translatableAttribute>
</object>
<object name="connectPassword" type="input" size="50%+10 80 100%-20 104" style="ModernInput" mask="true" mask_char="*">
<action on="Load">
// We only show 10 characters to make it look decent.
this.caption = Engine.ConfigDB_GetValue("user", "lobby.password").substring(0, 10);
</action>
<action on="Press">
lobbyStartConnect();
</action>
<action on="Press">lobbyStartConnect();</action>
</object>
<object name="rememberPassword" type="checkbox" size="50%-19 115 50% 135" style="ModernTickBox">
<action on="Press">
toggleRememberPassword();
</action>
<action on="Press">toggleRememberPassword();</action>
</object>
<object type="text" size="50%+10 115 100%-20 135" style="ModernLeftLabelText">
<translatableAttribute id="caption">Remember Password</translatableAttribute>
</object>
</object>
<object name="pageRegister" size="0 32 100% 100%" hidden="true">
<object type="text" size="0 0 100% 30" style="ModernLabelText">
@@ -91,22 +79,22 @@
<object type="button" size="20 160 100%-20 188" style="ModernButtonRed">
<translatableAttribute id="caption">Terms of Service</translatableAttribute>
<action on="Press">openTermsOfService();</action>
<action on="Press">openTerms("Service");</action>
</object>
<object type="button" size="20 200 100%-20 228" style="ModernButtonRed">
<translatableAttribute id="caption">Terms of Use</translatableAttribute>
<action on="Press">openTermsOfUse();</action>
<action on="Press">openTerms("Use");</action>
</object>
<object name="registerAgreeTermsLabel" type="text" size="20 240 100%-80 270" style="ModernLabelText">
<translatableAttribute id="caption">I have read and agree to the Terms of Service and Terms of Use:</translatableAttribute>
</object>
<object name="registerAgreeTerms" type="checkbox" size="100%-60 245 100%-20 270" style="ModernTickBox" enabled="false">
<action on="Tick"><![CDATA[this.enabled = g_TermsOfServiceRead && g_TermsOfUseRead;]]></action>
</object>
<object name="registerAgreeTerms" type="checkbox" size="100%-60 245 100%-20 270" style="ModernTickBox" enabled="false"/>
</object>
<object name="feedback" type="text" size="50 100%-110 100%-50 100%-50" style="ModernLabelText" textcolor="red"/>
<object name="cancel" type="button" size="18 100%-45 50%-5 100%-17" style="ModernButtonRed" hotkey="cancel">
<translatableAttribute id="caption">Cancel</translatableAttribute>
@@ -114,12 +102,7 @@
</object>
<object name="continue" hotkey="confirm" type="button" size="50%+5 100%-45 100%-18 100%-17" style="ModernButtonRed" enabled="false" hidden="true">
<translatableAttribute id="caption">Connect</translatableAttribute>
<action on="Press">
if (!Engine.GetGUIObjectByName("pageConnect").hidden)
lobbyStartConnect();
else if (!Engine.GetGUIObjectByName("pageRegister").hidden)
lobbyStartRegister();
</action>
<action on="Press">prelobbyConnect();</action>
</object>
</object>