Roku Developer Program

Join our online forum to talk to Roku developers and fellow channel creators. Ask questions, share tips with the community, and find helpful resources.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
xoceunder
Roku Guru

help with problem not writing data

Jump to solution

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 Function

RegScreen.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>
0 Kudos
1 Solution

Accepted Solutions
xoceunder
Roku Guru

Re: help with problem not writing data

Jump to solution

helps to be able to solve that you do not get what you type in keyboard 

View solution in original post

0 Kudos
1 REPLY 1
xoceunder
Roku Guru

Re: help with problem not writing data

Jump to solution

helps to be able to solve that you do not get what you type in keyboard 

0 Kudos
Need Assistance?
Welcome to the Roku Community! Feel free to search our Community for answers or post your question to get help.

Become a Roku Streaming Expert!

Share your expertise, help fellow streamers, and unlock exclusive rewards as part of the Roku Community. Learn more.