Add custom subs to new video player
This commit is contained in:
parent
14f5b9f2b6
commit
34770a5ee0
|
@ -23,6 +23,21 @@ sub init()
|
|||
m.top.observeField("content", "onContentChange")
|
||||
m.top.observeField("selectedSubtitle", "onSubtitleChange")
|
||||
|
||||
' Custom Caption Function
|
||||
m.captionGroup = m.top.findNode("captionGroup")
|
||||
m.captionGroup.createchildren(9, "LayoutGroup")
|
||||
m.captionTask = createObject("roSGNode", "captionTask")
|
||||
m.captionTask.observeField("currentCaption", "updateCaption")
|
||||
m.captionTask.observeField("useThis", "checkCaptionMode")
|
||||
m.top.observeField("subtitleTrack", "loadCaption")
|
||||
m.top.observeField("globalCaptionMode", "toggleCaption")
|
||||
if get_user_setting("playback.subs.custom") = "false"
|
||||
m.top.suppressCaptions = false
|
||||
else
|
||||
m.top.suppressCaptions = true
|
||||
toggleCaption()
|
||||
end if
|
||||
|
||||
m.playbackTimer.observeField("fire", "ReportPlayback")
|
||||
m.bufferPercentage = 0 ' Track whether content is being loaded
|
||||
m.playReported = false
|
||||
|
@ -51,6 +66,27 @@ sub init()
|
|||
m.top.trickPlayBar.filledBarBlendColor = m.global.constants.colors.blue
|
||||
end sub
|
||||
|
||||
sub loadCaption()
|
||||
if m.top.suppressCaptions
|
||||
m.captionTask.url = m.top.subtitleTrack
|
||||
end if
|
||||
end sub
|
||||
|
||||
sub toggleCaption()
|
||||
m.captionTask.playerState = m.top.state + m.top.globalCaptionMode
|
||||
if LCase(m.top.globalCaptionMode) = "on"
|
||||
m.captionTask.playerState = m.top.state + m.top.globalCaptionMode + "w"
|
||||
m.captionGroup.visible = true
|
||||
else
|
||||
m.captionGroup.visible = false
|
||||
end if
|
||||
end sub
|
||||
|
||||
sub updateCaption()
|
||||
m.captionGroup.removeChildrenIndex(m.captionGroup.getChildCount(), 0)
|
||||
m.captionGroup.appendChildren(m.captionTask.currentCaption)
|
||||
end sub
|
||||
|
||||
sub onSubtitleChange()
|
||||
' Save the current video position
|
||||
m.global.queueManager.callFunc("setTopStartingPoint", int(m.top.position) * 10000000&)
|
||||
|
@ -132,21 +168,12 @@ sub onContentChange()
|
|||
if not isValid(m.top.content) then return
|
||||
|
||||
m.top.observeField("position", "onPositionChanged")
|
||||
|
||||
' If video content type is not episode, remove position observer
|
||||
if m.top.content.contenttype <> 4
|
||||
m.top.unobserveField("position")
|
||||
end if
|
||||
end sub
|
||||
|
||||
sub onNextEpisodeDataLoaded()
|
||||
m.checkedForNextEpisode = true
|
||||
|
||||
m.top.observeField("position", "onPositionChanged")
|
||||
|
||||
if m.getNextEpisodeTask.nextEpisodeData.Items.count() <> 2
|
||||
m.top.unobserveField("position")
|
||||
end if
|
||||
end sub
|
||||
|
||||
'
|
||||
|
@ -189,6 +216,8 @@ end sub
|
|||
|
||||
' When Video Player state changes
|
||||
sub onPositionChanged()
|
||||
m.captionTask.currentPos = Int(m.top.position * 1000)
|
||||
|
||||
' Check if dialog is open
|
||||
m.dialog = m.top.getScene().findNode("dialogBackground")
|
||||
if not isValid(m.dialog)
|
||||
|
@ -199,6 +228,8 @@ end sub
|
|||
'
|
||||
' When Video Player state changes
|
||||
sub onState(msg)
|
||||
m.captionTask.playerState = m.top.state + m.top.globalCaptionMode
|
||||
|
||||
' When buffering, start timer to monitor buffering process
|
||||
if m.top.state = "buffering" and m.bufferCheckTimer <> invalid
|
||||
|
||||
|
|
|
@ -7,7 +7,6 @@
|
|||
<field id="PlaySessionId" type="string" />
|
||||
<field id="Subtitles" type="array" />
|
||||
<field id="SelectedSubtitle" type="integer" value="-1" alwaysNotify="true" />
|
||||
<field id="captionMode" type="string" />
|
||||
<field id="container" type="string" />
|
||||
<field id="directPlaySupported" type="boolean" />
|
||||
<field id="systemOverlay" type="boolean" value="false" />
|
||||
|
@ -27,6 +26,7 @@
|
|||
</interface>
|
||||
|
||||
<children>
|
||||
<Group id="captionGroup" translation="[960,1020]" />
|
||||
<timer id="playbackTimer" repeat="true" duration="30" />
|
||||
<timer id="bufferCheckTimer" repeat="true" />
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user