Forum Discussion

xoceunder's avatar
xoceunder
Roku Guru
9 years ago

error functions in SceneGraph components?

I have a problem executing a dialog

HomeScene.brs
'********** Copyright 2016 Roku Corp.  All Rights Reserved. **********
'inits grid screen
'creates all children
'sets all observers
Function Init()
Print "[HomeScene] Init"

'GridScreen node with RowList
m.GridScreen=m.top.findNode("GridScreen")
m.GridScreen.Visible=FALSE

'SeriesScreen node with RowList
m.SeriesGridScreen=m.top.findNode("GridScreen")
m.SeriesGridScreen.Visible=FALSE

'GridScreen node with RowList
m.epgGrid=m.top.findNode("epgGrid")
m.epgGrid.Visible=FALSE

'DetailsScreen Node with description, Video Player
m.detailsScreen=m.top.findNode("DetailsScreen")

'Observer to handle Item selection on RowList inside GridScreen (alias="GridScreen.rowItemSelected")
m.top.observeField("rowItemSelected", "OnRowItemSelected")
m.top.ObserveField("isSubdialog", "On_msgDialog_error")

'loading indicator starts at initializatio of channel
m.loadingIndicator=m.top.findNode("loadingIndicator")
m.loadingIndicator.opacity=0


m.ParseGrid=m.top.findnode("ParseGrid")

'Create main labellist menu
m.MainMenu=m.top.findNode("MainMenuBackground")
m.MainMenu.Visible=TRUE
m.MainMenu.getChild(1).SetFocus(TRUE) 'Set focus to the list options
'm.MainMenu.show = true

End Function



Function MainMenuSelectionMade() 'interface for the main menu screen
Print m.MainMenu.getChild(1).itemselected.toStr()

'second option is Adults
If m.MainMenu.getChild(1).itemSelected=4
showPinAdults()
End If

End Function

'Row item selected handler interface for the grid content
Function OnRowItemSelected()
'On select any item on home scene, show Details node and hide Grid
print "OnRowItemSelected =>> ";m.gridScreen.focusedContent.contenttype
ID=m.gridScreen.focusedContent.id
contentID=m.gridScreen.focusedContent.contenttype
End Function

'Main Remote keypress event loop
Function OnKeyEvent(key, press) As Boolean
Print ">>> HomeScene >> OnkeyEvent"
result=FALSE
If press
If key="ok"
Print"OK Pressed"
'Print m.top.content.TITLE
'Print m.itemfocused
If m.top.dialog<>invalid m.top.dialog=invalid
result=TRUE
Else If key="options"
result=TRUE
Else If key="back"
'exit channel if we're on the top selection screen and the user pressed back
If m.MainMenu.Visible=TRUE
   print "Exit Channel"
                showExitConfirmationDialog()
result=TRUE

'if Details opened
Else If m.epgGrid.Visible=FALSE And m.GridScreen.visible=FALSE AND m.SeriesGridScreen.visible=FALSE And m.detailsScreen.videoPlayerVisible=FALSE

   print "Exiting from Details opened"
m.GridScreen.visible=TRUE
m.detailsScreen.visible=FALSE
m.GridScreen.setFocus(TRUE)
result=TRUE

'if video player opened
Else If m.epgGrid.Visible=FALSE And m.GridScreen.visible=FALSE And m.detailsScreen.videoPlayerVisible=TRUE

   print "video player opened"
m.detailsScreen.videoPlayerVisible=FALSE
result=TRUE

'Exiting from epgGrid to get back to the main selection menu
Else If m.epgGrid.Visible=TRUE And m.GridScreen.Visible=FALSE And m.MainMenu.Visible=FALSE

   print "Exiting from epgGrid"
m.epgGrid.Visible=FALSE
m.MainMenu.Visible=TRUE
m.MainMenu.getChild(1).SetFocus(TRUE)
result=TRUE

'Exiting from Gridscreens to get back to the main selection menu
Else If m.epgGrid.Visible=FALSE And m.GridScreen.Visible=TRUE And m.MainMenu.Visible=FALSE

   print "Exiting from Gridscreens"
m.GridScreen.Visible=FALSE
m.MainMenu.Visible=TRUE
m.MainMenu.getChild(1).SetFocus(TRUE)
result=TRUE

End If
End If
End If
Return result
End Function

Function DismissDialog()
m.top.dialog=invalid
End Function

Function setUnFocusCall()
    'print "setUnlinkFocusCallback =>> " m.top.LinkingURL
End Function

sub showExitConfirmationDialog()
    dialog = createObject("roSGNode", "Dialog")
    dialog.message = "Are you sure you want to exit?"
    dialog.buttons = ["Cancel", "Exit"]
    dialog.observeField("buttonSelected", "onDialogButtonSelected")
    m.top.dialog = dialog
end sub

sub onDialogButtonSelected()
    if m.top.dialog.buttonSelected = 1
        m.top.close = true
    else
        m.top.dialog.close = true
    end if
end sub

sub showPinAdults()
    pinDialog = createObject("roSGNode", "PinDialog")
    pinDialog.title = "Enter the Pin"
pindialog.backgroundUri = "pkg:/images/rsgde_dlg_bg_hd.9.png"
    pinDialog.buttons = ["Ok","Cancel"]
pindialog.pinPad.pinLength = 4
    pindialog.observeField("buttonSelected","onVerifyPin")
    m.top.dialog = pinDialog
End sub

sub onVerifyPin()
Print ">>> HomeScene >> VerifyPin"

print "Pin User =>>";m.top.PinUser " Pin Selected =>>";m.top.dialog.pin

    if m.top.dialog.buttonSelected = 0
       print "ok button pressed"
  if m.top.PinUser = m.top.dialog.pin then
  
    print "Pin Correct"
 
    m.top.dialog.close = true
    m.top.isAuthorized = true
 
       else
  
     print "Pin Incorrect"
 
 m.top.dialog.close = true
 m.top.isAuthorized = false
 m.top.isSubdialog = true
 
       end if
  
    else

       print "cancel button pressed"
  m.top.dialog.close = true
  m.top.isAuthorized = false
  
    end if

end sub

' onChange handler for "show" field
sub On_show_isAuthorized()
    print "On_show_isAuthorized"
print "Autorizacion ";m.top.isAuthorized

end sub

sub On_msgDialog_error()

    msgDialog = CreateObject("roSGNode", "BackDialog")
    msgDialog.buttons = ["Retry"]
    'msgDialog.buttonGroup.focusBitmapUri = "pkg:/images/button_on.9.png"
    msgDialog.ObserveField("buttonSelected", "On_msgDialog_buttonSelected")
    msgDialog.title = "Pin Incorecto"
    m.top.dialog = msgDialog

end sub

sub On_msgDialog_buttonSelected()
    if m.top.dialog <> invalid then m.top.dialog.close = true

end sub

The problem is here
sub On_msgDialog_error()

    msgDialog = CreateObject("roSGNode", "BackDialog")
    msgDialog.buttons = ["Retry"]
    'msgDialog.buttonGroup.focusBitmapUri = "pkg:/images/button_on.9.png"
    msgDialog.ObserveField("buttonSelected", "On_msgDialog_buttonSelected")
    msgDialog.title = "Pin Incorecto"
    m.top.dialog = msgDialog

end sub