import "pkg:/source/utils/misc.bs" sub init() m.buttons = m.top.findNode("buttons") m.buttons.buttons = [tr("Video"), tr("Audio")] m.buttons.selectedIndex = 0 m.buttons.setFocus(true) m.selectedItem = 0 m.selectedAudioIndex = 0 m.selectedVideoIndex = 0 m.menus = [m.top.findNode("videoMenu"), m.top.findNode("audioMenu")] m.videoNames = [] m.audioNames = [] ' Set button colors to global m.top.findNode("videoMenu").focusBitmapBlendColor = m.global.constants.colors.button m.top.findNode("audioMenu").focusBitmapBlendColor = m.global.constants.colors.button ' Animation m.fadeAnim = m.top.findNode("fadeAnim") m.fadeOutAnimOpacity = m.top.findNode("outOpacity") m.fadeInAnimOpacity = m.top.findNode("inOpacity") m.buttons.observeField("focusedIndex", "buttonFocusChanged") m.buttons.focusedIndex = m.selectedItem end sub sub optionsSet() ' Videos Tab if isValid(m.top.options.videos) viewContent = CreateObject("roSGNode", "ContentNode") index = 0 selectedViewIndex = 0 for each view in m.top.options.videos entry = viewContent.CreateChild("VideoTrackListData") entry.title = view.Title entry.description = view.Description entry.streamId = view.streamId entry.video_codec = view.video_codec m.videoNames.push(view.Name) if isValid(view.Selected) and view.Selected selectedViewIndex = index entry.selected = true m.top.videoStreamId = view.streamId end if index = index + 1 end for m.menus[0].content = viewContent m.menus[0].jumpToItem = selectedViewIndex m.menus[0].checkedItem = selectedViewIndex m.selectedVideoIndex = selectedViewIndex end if ' audio Tab if isValid(m.top.options.audios) audioContent = CreateObject("roSGNode", "ContentNode") index = 0 selectedAudioIndex = 0 for each audio in m.top.options.audios entry = audioContent.CreateChild("AudioTrackListData") entry.title = audio.Title entry.description = audio.Description entry.streamIndex = audio.StreamIndex m.audioNames.push(audio.Name) if isValid(audio.Selected) and audio.Selected selectedAudioIndex = index entry.selected = true m.top.audioStreamIndex = audio.streamIndex end if index = index + 1 end for m.menus[1].content = audioContent m.menus[1].jumpToItem = selectedAudioIndex m.menus[1].checkedItem = selectedAudioIndex m.selectedAudioIndex = selectedAudioIndex end if end sub ' Switch menu shown when button focus changes sub buttonFocusChanged() if m.buttons.focusedIndex = m.selectedItem then return m.fadeOutAnimOpacity.fieldToInterp = m.menus[m.selectedItem].id + ".opacity" m.fadeInAnimOpacity.fieldToInterp = m.menus[m.buttons.focusedIndex].id + ".opacity" m.fadeAnim.control = "start" m.selectedItem = m.buttons.focusedIndex end sub function onKeyEvent(key as string, press as boolean) as boolean if key = "down" or (key = "OK" and m.top.findNode("buttons").hasFocus()) m.top.findNode("buttons").setFocus(false) m.menus[m.selectedItem].setFocus(true) m.menus[m.selectedItem].drawFocusFeedback = true 'If user presses down from button menu, focus first item. If OK, focus checked item if key = "down" m.menus[m.selectedItem].jumpToItem = 0 else m.menus[m.selectedItem].jumpToItem = m.menus[m.selectedItem].itemSelected end if return true else if key = "OK" if m.menus[m.selectedItem].isInFocusChain() selMenu = m.menus[m.selectedItem] selIndex = selMenu.itemSelected 'Handle Videos menu if m.selectedItem = 0 if m.selectedVideoIndex <> selIndex selMenu.content.GetChild(m.selectedVideoIndex).selected = false newSelection = selMenu.content.GetChild(selIndex) newSelection.selected = true m.selectedVideoIndex = selIndex m.top.videoStreamId = newSelection.streamId end if ' Then it is Audio options else if m.selectedItem = 1 if m.selectedAudioIndex <> selIndex selMenu.content.GetChild(m.selectedAudioIndex).selected = false newSelection = selMenu.content.GetChild(selIndex) newSelection.selected = true m.selectedAudioIndex = selIndex m.top.audioStreamIndex = newSelection.streamIndex end if end if end if return true else if key = "back" or key = "up" if m.menus[m.selectedItem].isInFocusChain() m.buttons.setFocus(true) m.menus[m.selectedItem].drawFocusFeedback = false return true end if else if key = "options" m.menus[m.selectedItem].drawFocusFeedback = false return false end if return false end function