Now that I have upgraded to Matrix, my code to have the seek bar show up for a certain amount of time when playback starts does not work completely. If you have the option to play the next video automatically, the seekbar does not show at all when the next video starts playing. In Leia, it seems that DisplayAfterSeek got activated, and the seekbar showed for the fixed amount of time (2.5 seconds).
I understand why my code would not work, since I am setting a window property when VideoFullScreen.xml is loaded, and resetting it after the configured amount of time, with AlarmClock. The issue is that when the next video starts playing, VideoFullScreen.xml is not unloaded and reloaded, so my window property is not set for the next video. My current code in the onload of video full screen is this:
xml:
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback)">SetProperty(ShowOSD,true,home)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEmpty(Skin.String(SeekBarInit))">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:02,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,two)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:02,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,three)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,four)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:04,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,five)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:05,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,six)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:06,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,seven)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:07,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,eight)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:08,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,ten)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:10,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,fifteen)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:15,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,twenty)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:20,silent)</onload>
And in DialogSeekBar.xml, I have the visibility condition like this:
xml:
<visible>[!Player.Paused + !String.IsEmpty(Window(home).Property(ShowOSD))] | [Player.Paused + Skin.HasSetting(Hide.SeekBarWhenPaused) + !System.IdleTime(5)] | [Player.Paused + !Skin.HasSetting(Hide.SeekBarWhenPaused)] | Player.Seeking | Player.DisplayAfterSeek | Player.Forwarding | Player.Rewinding | Player.ShowInfo | Player.ShowTime | Window.IsActive(videoosd) | Window.IsActive(musicosd) | Window.IsActive(playerprocessinfo) | Window.IsActive(dialogfullscreeninfo.xml) | !String.IsEmpty(Player.SeekNumeric) | !String.IsEmpty(PVR.ChannelNumberInput)</visible>
<visible>![Window.IsActive(sliderdialog) | Window.IsActive(pvrosdchannels) | Window.IsActive(pvrguideinfo)]</visible>
<visible>Window.IsActive(fullscreenvideo) | Window.IsActive(visualisation)</visible>
So it works well for the first video only. How can I show the seekbar again when the next video starts playing automatically? I don't know how to figure out from the skin side that the media being played has changed. Any help will be greatly appreciated.
Regards,
Bart
EDIT: Never mind, I went the rout that @
mardukL suggested with a custom dialog to set my window property again when there is one second remaining on the video. In case it helps any body, this is the code I used for the custom dialog:
xml:
<window type="dialog" id="1195">
<visible>Player.HasMedia + Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEqual(Player.TimeRemaining(mms),00:01)</visible>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback)">SetProperty(ShowOSD,true,home)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEmpty(Skin.String(SeekBarInit))">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,two)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,three)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:04,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,four)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:05,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,five)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:06,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,six)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:07,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,seven)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:08,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,eight)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:09,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,ten)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:11,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,fifteen)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:16,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,twenty)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:21,silent)</onload>
<controls />
</window>
Thank you again, @
mardukL !