Skip to content

Commit

Permalink
use opacity for next episode check and hide button before it reaches 0
Browse files Browse the repository at this point in the history
  • Loading branch information
cewert committed Oct 29, 2023
1 parent 21b3fce commit 2fbf968
Show file tree
Hide file tree
Showing 4 changed files with 54 additions and 25 deletions.
34 changes: 23 additions & 11 deletions components/JFVideo.brs
Original file line number Diff line number Diff line change
Expand Up @@ -90,10 +90,13 @@ end sub
'
' Runs Next Episode button animation and sets focus to button
sub showNextEpisodeButton()
if m.global.session.user.configuration.EnableNextEpisodeAutoPlay and not m.nextEpisodeButton.visible
if m.top.content.contenttype <> 4 then return ' only display when content is type "Episode"
if m.nextupbuttonseconds = 0 then return ' is the button disabled?

if m.nextEpisodeButton.opacity = 0 and m.global.session.user.configuration.EnableNextEpisodeAutoPlay
m.nextEpisodeButton.visible = true
m.showNextEpisodeButtonAnimation.control = "start"
m.nextEpisodeButton.setFocus(true)
m.nextEpisodeButton.visible = true
end if
end sub

Expand All @@ -117,13 +120,22 @@ end sub

' Checks if we need to display the Next Episode button
sub checkTimeToDisplayNextEpisode()
if m.top.content.contenttype <> 4 then return
if m.nextupbuttonseconds = 0 then return

if int(m.top.position) >= (m.top.duration - m.nextupbuttonseconds)
showNextEpisodeButton()
updateCount()
return
if m.top.content.contenttype <> 4 then return ' only display when content is type "Episode"
if m.nextupbuttonseconds = 0 then return ' is the button disabled?

if isValid(m.top.duration) and isValid(m.top.position)
nextEpisodeCountdown = Int(m.top.duration - m.top.position)

if nextEpisodeCountdown < 0 and m.nextEpisodeButton.opacity = 0.9
hideNextEpisodeButton()
return
else if nextEpisodeCountdown > 1 and int(m.top.position) >= (m.top.duration - m.nextupbuttonseconds - 1)
updateCount()
if m.nextEpisodeButton.opacity = 0
showNextEpisodeButton()
end if
return
end if
end if

if m.nextEpisodeButton.visible or m.nextEpisodeButton.hasFocus()
Expand Down Expand Up @@ -266,8 +278,8 @@ function onKeyEvent(key as string, press as boolean) as boolean
return true
else
'Hide Next Episode Button
if m.nextEpisodeButton.visible or m.nextEpisodeButton.hasFocus()
m.nextEpisodeButton.visible = false
if m.nextEpisodeButton.opacity > 0 or m.nextEpisodeButton.hasFocus()
m.nextEpisodeButton.opacity = 0
m.nextEpisodeButton.setFocus(false)
m.top.setFocus(true)
end if
Expand Down
2 changes: 1 addition & 1 deletion components/JFVideo.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
<Animation id="showNextEpisodeButton" duration="1.0" repeat="false" easeFunction="inQuad">
<FloatFieldInterpolator key="[0.0, 1.0]" keyValue="[0.0, .9]" fieldToInterp="nextEpisode.opacity" />
</Animation>
<Animation id="hideNextEpisodeButton" duration=".2" repeat="false" easeFunction="inQuad">
<Animation id="hideNextEpisodeButton" duration=".25" repeat="false" easeFunction="inQuad">
<FloatFieldInterpolator key="[0.0, 1.0]" keyValue="[.9, 0]" fieldToInterp="nextEpisode.opacity" />
</Animation>
</children>
Expand Down
41 changes: 29 additions & 12 deletions components/video/VideoPlayerView.brs
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ sub init()
m.nextEpisodeButton = m.top.findNode("nextEpisode")
m.nextEpisodeButton.text = tr("Next Episode")
m.nextEpisodeButton.setFocus(false)
m.nextupbuttonseconds = m.global.session.user.settings["playback.nextupbuttonseconds"].ToInt()

m.showNextEpisodeButtonAnimation = m.top.findNode("showNextEpisodeButton")
m.hideNextEpisodeButtonAnimation = m.top.findNode("hideNextEpisodeButton")
Expand Down Expand Up @@ -195,17 +196,24 @@ end sub
'
' Runs Next Episode button animation and sets focus to button
sub showNextEpisodeButton()
if m.global.session.user.configuration.EnableNextEpisodeAutoPlay and not m.nextEpisodeButton.visible
if m.top.content.contenttype <> 4 then return ' only display when content is type "Episode"
if m.nextupbuttonseconds = 0 then return ' is the button disabled?

if m.nextEpisodeButton.opacity = 0 and m.global.session.user.configuration.EnableNextEpisodeAutoPlay
m.nextEpisodeButton.visible = true
m.showNextEpisodeButtonAnimation.control = "start"
m.nextEpisodeButton.setFocus(true)
m.nextEpisodeButton.visible = true
end if
end sub

'
'Update count down text
sub updateCount()
m.nextEpisodeButton.text = tr("Next Episode") + " " + Int(m.top.duration - m.top.position).toStr()
nextEpisodeCountdown = Int(m.top.duration - m.top.position)
if nextEpisodeCountdown < 0
nextEpisodeCountdown = 0
end if
m.nextEpisodeButton.text = tr("Next Episode") + " " + nextEpisodeCountdown.toStr()
end sub

'
Expand All @@ -218,13 +226,22 @@ end sub

' Checks if we need to display the Next Episode button
sub checkTimeToDisplayNextEpisode()
' only display the Next Episode button when the content is type "Episode"
if m.top.content.contenttype <> 4 then return

if int(m.top.position) >= (m.top.duration - 30)
showNextEpisodeButton()
updateCount()
return
if m.top.content.contenttype <> 4 then return ' only display when content is type "Episode"
if m.nextupbuttonseconds = 0 then return ' is the button disabled?

if isValid(m.top.duration) and isValid(m.top.position)
nextEpisodeCountdown = Int(m.top.duration - m.top.position)

if nextEpisodeCountdown < 0 and m.nextEpisodeButton.opacity = 0.9
hideNextEpisodeButton()
return
else if nextEpisodeCountdown > 1 and int(m.top.position) >= (m.top.duration - m.nextupbuttonseconds - 1)
updateCount()
if m.nextEpisodeButton.opacity = 0
showNextEpisodeButton()
end if
return
end if
end if

if m.nextEpisodeButton.visible or m.nextEpisodeButton.hasFocus()
Expand Down Expand Up @@ -366,8 +383,8 @@ function onKeyEvent(key as string, press as boolean) as boolean
return true
else
'Hide Next Episode Button
if m.nextEpisodeButton.visible or m.nextEpisodeButton.hasFocus()
m.nextEpisodeButton.visible = false
if m.nextEpisodeButton.opacity > 0 or m.nextEpisodeButton.hasFocus()
m.nextEpisodeButton.opacity = 0
m.nextEpisodeButton.setFocus(false)
m.top.setFocus(true)
end if
Expand Down
2 changes: 1 addition & 1 deletion components/video/VideoPlayerView.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@
<Animation id="showNextEpisodeButton" duration="1.0" repeat="false" easeFunction="inQuad">
<FloatFieldInterpolator key="[0.0, 1.0]" keyValue="[0.0, .9]" fieldToInterp="nextEpisode.opacity" />
</Animation>
<Animation id="hideNextEpisodeButton" duration=".2" repeat="false" easeFunction="inQuad">
<Animation id="hideNextEpisodeButton" duration=".25" repeat="false" easeFunction="inQuad">
<FloatFieldInterpolator key="[0.0, 1.0]" keyValue="[.9, 0]" fieldToInterp="nextEpisode.opacity" />
</Animation>
</children>
Expand Down

0 comments on commit 2fbf968

Please sign in to comment.