xoceunder
5 years agoRoku Guru
help with problem not writing data
I am trying to make a login work but it does not write me the password
RegScreen.brs
sub init()
m.buttons = m.top.findNode("Buttons")
m.code = m.top.findNode("Code")
m.codeTimer = m.top.findNode("codeTimer")
m.expireTimer = m.top.findNode("expireTimer")
m.dialog = m.top.findNode("expireDialog")
m.codeBox = m.top.findNode("codeBox")
m.login = m.top.findNode("loginBox")
m.keyboard = m.top.findNode("KeyboardText")
m.label = m.top.findNode("enter")
m.top.success = false
' create buttons
result = []
for each button in ["Get new code","Log in with username and password"]
result.push({title : button})
end for
m.buttons.content = ContentList2SimpleNode(result)
m.buttons.setFocus(true)
m.code.font.size = m.code.font.size+5
m.code.text = "Retrieving..."
m.getCode = createObject("roSGNode", "GetCode")
m.validateCode = createObject("roSGNode", "ValidateCode")
m.validateLogin = createObject("roSGNode", "LoginTask")
m.getCode.observeField("state", "showCode")
m.validateCode.observeField("validated", "validateSuccess")
m.validateLogin.observeField("state", "validateLoginDone")
m.codeTimer.observeField("fire", "validateCode")
m.codeTimer.control = "start"
m.expireTimer.observeField("fire", "expired")
m.dialog.observeField("buttonSelected", "closeDialog")
getNewCode()
end sub
sub getNewCode()
m.expireTimer.control = "stop"
m.getCode.control = "RUN"
end sub
sub expired()
'print "Code expired"
m.dialog.visible = true
m.dialog.setFocus(true)
m.codeTimer.control = "stop"
m.expireTimer.control = "stop"
end sub
sub closeDialog()
'print "Closing dialog"
m.dialog.visible = false
m.buttons.setFocus(true)
if m.login.visible = false
getNewCode()
m.codeTimer.control = "start"
m.expireTimer.control = "start"
end if
end sub
sub showCode()
if m.getCode.state = "stop" then
if m.getCode.result then
m.code.text = m.getCode.code
m.expireTimer.duration = m.getCode.expires
'uncomment to add expiration to the activation code
'm.expireTimer.control = "start"
else
m.code.text = "Failed to get code..."
end if
end if
end sub
sub validateCode()
'print "in ValidateCode"
if m.getCode.code <> "" then
'print "Code: "; m.getCode.code
m.validateCode.validate = m.getCode.code
m.validateCode.control = "RUN"
end if
end sub
sub validateSuccess()
'print "in validateSuccess"
m.expireTimer.control = "stop"
m.codeTimer.control = "stop"
if m.validateCode.validated or m.validateLogin.validated then m.top.success = true
end sub
sub validateLoginDone()
'print "in validateLoginDone"
if m.validateLogin.state = "stop" then
if m.validateLogin.validated then
m.busyDialog.close = true
validateSuccess()
else
dialog = createObject("roSGNode", "Dialog")
dialog.title = "Login"
dialog.buttons = ["Ok"]
dialog.optionsDialog = true
dialog.message = "Incorrect username or password"
m.top.getScene().dialog = dialog
end if
end if
end sub
' on Button press handler
Sub onItemSelected()
'print "RegScreen.brs - [onItemSelected]"
if m.codeBox.visible then
if m.top.itemSelected = 0 'Get new code
m.getCode.control = "RUN"
else ' Login
m.codeBox.visible = false
m.label.text = "Enter username:"
m.login.visible = true
m.keyboard.setFocus(true)
m.buttons.jumpToItem = 0
m.buttons.content.getChild(0).title = "Next"
m.buttons.content.getChild(1).title = "Back"
m.codeTimer.control = "stop"
end if
else
if m.top.itemSelected = 0
if m.keyboard.text = "" then
dialog = createObject("roSGNode", "Dialog")
dialog.title = "Cannot leave field empty"
dialog.optionsDialog = true
dialog.buttons = ["Ok"]
message = "Please enter a username"
if m.keyboard.textEditBox.secureMode then message = "Please enter a password"
dialog.message = message
m.top.getScene().dialog = dialog
else if not m.keyboard.textEditBox.secureMode
m.keyboard.textEditBox.secureMode = true
m.label.text = "Enter password:"
m.top.user = m.keyboard.text
m.keyboard.text = ""
else
m.top.validate = true
m.keyboard.textEditBox.secureMode = false
m.label.text = "Enter username:"
m.top.pass = m.keyboard.text
m.keyboard.text = ""
end if
else ' Go back
m.keyboard.text = ""
m.keyboard.textEditBox.secureMode = false
m.label.text = "Enter username:"
m.buttons.content.getChild(0).title = "Get new code"
m.buttons.content.getChild(1).title = "Log in with username and password"
m.codeTimer.control = "start"
m.login.visible = false
m.codeBox.visible = true
end if
end if
End Sub
sub validateLogin()
'print "In ValidateLogin()"
if m.top.validate then
m.top.validate = false
'print m.top.user
'print m.top.pass
m.validateLogin.user = m.top.user
m.validateLogin.pass = m.top.pass
m.validateLogin.control = "RUN"
m.busyDialog = createObject("roSGNode", "ProgressDialog")
m.top.getScene().dialog = m.busyDialog
end if
end sub
function onKeyEvent(key as String, press as Boolean) as Boolean
result = false
'print "In RegScreen.brs onKeyEvent. Key pressed: ";key;" - Press: "; press
if press then
if key = "up"
if m.login.visible = true and m.buttons.hasFocus() then
m.keyboard.setFocus(true)
result = true
end if
else if key = "down"
if m.login.visible = true and not m.buttons.hasFocus() then
m.buttons.setFocus(true)
result = true
end if
end if
end if
'print "Handled event: "; result
return result
end function
'///////////////////////////////////////////'
' Helper function convert AA to Node
Function ContentList2SimpleNode(contentList as Object, nodeType = "ContentNode" as String) as Object
''print "RegScreen.brs - [ContentList2SimpleNode]"
result = createObject("roSGNode", nodeType)
if result <> invalid
for each itemAA in contentList
item = createObject("roSGNode", nodeType)
item.setFields(itemAA)
result.appendChild(item)
end for
end if
return result
End FunctionRegScreen.xml
<?xml version="1.0" encoding="UTF-8"?>
<component name="RegScreen" extends="Group" initialFocus="Buttons" >
<script type="text/brightscript" uri="pkg:/components/RegScreen/RegScreen.brs"/>
<children>
<!-- Control buttons (Button List) -->
<LabelList
id="Buttons"
translation="[1040,900]"
color="0xFFFFFFFF"
focusedColor="0x333333FF"
numRows="7"
vertFocusAnimationStyle="floatingFocus"
itemSpacing="[0,20]"
itemSize="[700, 35]"
textHorizAlign="right" />
<Rectangle
id="codeBox"
width="1300"
height="400"
color="0x101010C0"
translation="[315,350]">
<Label
id="Header"
text="Activation Code"
font="font:LargeBoldSystemFont"
translation="[450,50]"
horizAlign="center"
width="400" />
<Label
id="Code"
font="font:LargeBoldSystemFont"
translation="[450,150]"
horizAlign="center"
width="400" />
<Label
id="explanation"
text="Before using this channel, the channel must activate your account. Remain on this screen while logging in with this activation code."
font="font:MediumBoldSystemFont"
translation="[36,250]"
numLines="3"
wrap="true"
width="1200" />
</Rectangle>
<Rectangle
id="loginBox"
width="1410"
height="500"
color="0x101010C0"
translation="[255,300]"
visible="false">
<Label
id="enter"
translation="[30,10]"/>
<Keyboard
id="KeyboardText"
translation="[0,60]"/>
</Rectangle>
<Timer
id = "codeTimer"
repeat = "true"
duration = "5" />
<Timer
id="expireTimer"
repeat="true"
duration = "900"/>
<Dialog
id="expireDialog"
title="Code Expired"
message="This code has expired. Press OK to get a new one"
visible="false"/>
</children>
<interface>
<!-- Button press handler -->
<field id="itemSelected" type="integer" alwaysnotify="true" alias="Buttons.itemSelected" onChange="onItemSelected" />
<field id="user" type="string"/>
<field id="pass" type="string"/>
<field id="validate" type="boolean" alwaysNotify="true" onChange="validateLogin"/>
<field id="success" type="boolean"/>
</interface>
</component>helps to be able to solve that you do not get what you type in keyboard