• 1
  • 14
  • 15
  • 16(current)
  • 17
  • 18
  • 35
[New Feature] Movie version
Did a quick test -

Image
Manage mode

Image
Play mode

DialogVideoVersion.xml if anyone wants to try it out -

xml:
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">50</defaultcontrol>
<onload condition="!String.IsEmpty(Container(50).ListItem.Art(poster))">SetProperty(poster,$ESCINFO[Container(50).ListItem.Art(poster)],home)</onload>
<onload condition="String.IsEmpty(Container(50).ListItem.Art(poster))">SetProperty(thumb,$ESCINFO[Container(50).ListItem.Art(thumb)],home)</onload>
<onunload>ClearProperty(poster,home)</onunload>
<onunload>ClearProperty(thumb,home)</onunload>
<include>Animation_DialogPopupOpenClose</include>
<controls>
<control type="label" id="1">
<include>HiddenObject</include>
</control>
<control type="label" id="2">
<include>HiddenObject</include>
</control>
<control type="group">
<top>105</top>
<left>200</left>
<centerleft>50%</centerleft>
<visible>true</visible>
<include>Animation_DialogPopupVisible</include>
<animation effect="slide" start="150" end="150" time="0" condition="String.IsEqual(Control.GetLabel(1),play)">Conditional</animation>
<control type="group">
<visible>String.IsEqual(Control.GetLabel(1),manage)</visible>
<include content="DialogBackgroundCommons">
<param name="width" value="1520"/>
<param name="height" value="870"/>
<param name="header_label" value="$INFO[Control.GetLabel(2)]"/>
</include>
</control>
<control type="group">
<visible>String.IsEqual(Control.GetLabel(1),play)</visible>
<include content="DialogBackgroundCommons">
<param name="width" value="1220"/>
<param name="height" value="870"/>
<param name="header_label" value="$INFO[Control.GetLabel(2)]"/>
</include>
</control>
<control type="image">
<top>150</top>
<left>60</left>
<width>400</width>
<height>600</height>
<align>center</align>
<aspectratio>scale</aspectratio>
<texture fallback="DefaultVideo.png" background="true">$VAR[VideoVersionPosterVar]</texture>
<visible>[Control.HasFocus(50) + !String.IsEmpty(Container(50).ListItem.Art(poster))] | [Control.HasFocus(51) + !String.IsEmpty(Container(51).ListItem.Art(poster))] | [!Control.HasFocus(50) + !Control.HasFocus(51) +!String.IsEmpty(Window(home).Property(poster))]</visible>
</control>
<control type="image">
<top>340</top>
<left>60</left>
<width>400</width>
<height>225</height>
<align>center</align>
<aspectratio>scale</aspectratio>
<texture fallback="DefaultVideo.png" background="true">$VAR[VideoVersionThumbVar]</texture>
<visible>[Control.HasFocus(50) + String.IsEmpty(Container(50).ListItem.Art(poster))] | [Control.HasFocus(51) + String.IsEmpty(Container(51).ListItem.Art(poster))] | [!Control.HasFocus(50) + !Control.HasFocus(51) + String.IsEmpty(Window(home).Property(poster))]</visible>
</control>
<control type="group" id="100">
<top>90</top>
<left>540</left>
<width>680</width>
<height>720</height>
<control type="group">
<height>300</height>
<control type="image">
<left>-40</left>
<width>680</width>
<height>90</height>
<texture border="21">dialogs/dialog-bg.png</texture>
</control>
<control type="label">
<width>600</width>
<height>40</height>
<top>24</top>
<align>center</align>
<aligny>center</aligny>
<font>font25_title</font>
<label>$LOCALIZE[40000]</label>
</control>
<control type="image">
<top>70</top>
<left>-40</left>
<width>680</width>
<height>300</height>
<texture border="21">dialogs/dialog-bg.png</texture>
</control>
<control type="list" id="50">
<description>version list</description>
<top>100</top>
<height>240</height>
<onleft>51</onleft>
<ondown>51</ondown>
<onright>101</onright>
<scrolltime>200</scrolltime>
<onclick condition="!String.IsEmpty(Container(50).ListItem.Art(poster))">SetProperty(poster,$ESCINFO[Container(50).ListItem.Art(poster)],home)</onclick>
<onclick condition="String.IsEmpty(Container(50).ListItem.Art(poster))">SetProperty(thumb,$ESCINFO[Container(50).ListItem.Art(thumb)],home)</onclick>
<include content="DefaultSimpleListLayout">
<param name="width" value="600"/>
<param name="height" value="80"/>
<param name="list_id" value="50"/>
<param name="align" value="left"/>
</include>
</control>
</control>
<control type="group">
<top>310</top>
<height>300</height>
<control type="image">
<top>40</top>
<left>-40</left>
<width>680</width>
<height>90</height>
<texture border="21">dialogs/dialog-bg.png</texture>
</control>
<control type="label">
<width>600</width>
<height>40</height>
<top>66</top>
<align>center</align>
<aligny>center</aligny>
<font>font25_title</font>
<label>$LOCALIZE[31615]</label>
</control>
<control type="image">
<top>110</top>
<left>-40</left>
<width>680</width>
<height>300</height>
<texture border="21">dialogs/dialog-bg.png</texture>
</control>
<control type="list" id="51">
<description>extras list</description>
<top>140</top>
<height>240</height>
<onleft>50</onleft>
<onup>50</onup>
<onright>101</onright>
<scrolltime>200</scrolltime>
<onclick condition="!String.IsEmpty(Container(51).ListItem.Art(poster))">SetProperty(poster,$ESCINFO[Container(51).ListItem.Art(poster)],home)</onclick>
<onclick condition="String.IsEmpty(Container(51).ListItem.Art(poster))">SetProperty(thumb,$ESCINFO[Container(51).ListItem.Art(thumb)],home)</onclick>
<include content="DefaultSimpleListLayout">
<param name="width" value="600"/>
<param name="height" value="80"/>
<param name="list_id" value="51"/>
<param name="align" value="left"/>
</include>
</control>
</control>
</control>
<control type="grouplist" id="101">
<left>1200</left>
<top>50</top>
<width>300</width>
<height>800</height>
<onleft>100</onleft>
<onright>100</onright>
<itemgap>-20</itemgap>
<align>center</align>
<visible>String.IsEqual(Control.GetLabel(1),manage)</visible>
<scrolltime tween="quadratic">200</scrolltime>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="21"/>
<param name="label" value="$LOCALIZE[208]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="22"/>
<param name="label" value="$LOCALIZE[31612]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="23"/>
<param name="label" value="$LOCALIZE[31613]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="24"/>
<param name="label" value="$LOCALIZE[118]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="25"/>
<param name="label" value="$LOCALIZE[31614]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="26"/>
<param name="label" value="$LOCALIZE[15015]"/>
</include>
<include content="VideoVersionDialogButton">
<param name="width" value="280"/>
<param name="height" value="120"/>
<param name="id" value="27"/>
<param name="label" value="$LOCALIZE[13511]"/>
</include>
</control>
<control type="label">
<align>center</align>
<top>810</top>
<left>24</left>
<right>24</right>
<height>44</height>
<width>1172</width>
<scroll>true</scroll>
<font>font25_title</font>
<haspath>false</haspath>
<label>$VAR[VideoVersionFileVar]</label>
<visible>Control.HasFocus(50) | Control.HasFocus(51)</visible>
<animation effect="fade" start="0" end="100" time="300" delay="300">WindowOpen</animation>
<animation effect="fade" start="100" end="0" time="200">WindowClose</animation>
<animation effect="fade" start="0" end="100" time="300">Visible</animation>
<animation effect="fade" start="100" end="0" time="200">Hidden</animation>
<animation effect="slide" start="150" end="150" time="0" condition="String.IsEqual(Control.GetLabel(1),manage)">Conditional</animation>
</control>
</control>
</controls>
</window>
Reply
(2023-11-19, 04:25)XODIDOX Wrote: @ashlar, the artwork handling has been implemented. Now the scrapper information (remote arts) info will be used in each video versions.

Hi! Some steps ahead but I am seeing inconsistencies. I can select posters but I cannot select fanart or banners, as far as I can tell. Tried with two movies with two versions each, for both the behavior was the same: posters were selectable from scraped list, fanart was not (only local art available as an option).

This accessing the version itself, from within the folder containing the two versions. If I try to access the management window from the Info window of the movie (Versions item), no art appeared in the list, not even for posters. Going back within the folder, selecting Manage... and then Choose art had again the posters list available but no fanart or anything else.

Edit: forgot to mention... thank you!!!
For troubleshooting and bug reporting please make sure you read this first (usually it's enough to follow instructions in the second post).
Reply
Thanks @ashlar for reporting the fanart issue. It has been fixed in latest update.
Reply
(2023-11-19, 04:25)XODIDOX Wrote: the id 1 in the video version dialog is the working mode, the value is "manage" or "play" accordingly.
I'm not sure this is the best method for identifying which version of the dialog is loaded now as it seems the label gets filled after the includes are loaded. Which meant I couldn't use conditional includes to load different layouts. Maybe it would have been better to have them named differently internally like DialogSelect.xml.

xml:
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">3</defaultcontrol>
<include>Animation_DialogPopupOpenClose</include>
<depth>DepthOSD</depth>
<controls>
<include condition="![Window.IsActive(gamesaves) | Window.IsActive(gamestretchmode) | Window.IsActive(gamevideofilter) | Window.IsActive(gamevideorotation) | Window.IsActive(ingamesaves)]">DefaultDialogSelectLayout</include>
<include condition="Window.IsActive(gamesaves)">GameDialogSelectSaveLayout</include>
<include condition="Window.IsActive(gamevideofilter)">GameDialogSelectFilterLayout</include>
<include condition="Window.IsActive(gamestretchmode)">GameDialogSelectViewLayout</include>
<include condition="Window.IsActive(gamevideorotation)">GameDialogSelectViewLayout</include>
<include condition="Window.IsActive(ingamesaves)">GameDialogSelectSaveInGameLayout</include>
</controls>
</window>

https://github.com/xbmc/xbmc/blob/master...Select.xml

Something like this -

xml:
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">3</defaultcontrol>
<include>Animation_DialogPopupOpenClose</include>
<depth>DepthOSD</depth>
<controls>
<include condition="Window.IsActive(videoversion)">VideoVersion</include>
<include condition="Window.IsActive(videoversionplay)">VideoVersionPlay</include>
</controls>
</window>

Thanks.
Reply
(2023-11-20, 11:14)Hitcher Wrote:
(2023-11-19, 04:25)XODIDOX Wrote: the id 1 in the video version dialog is the working mode, the value is "manage" or "play" accordingly.
I'm not sure this is the best method for identifying which version of the dialog is loaded now as it seems the label gets filled after the includes are loaded.
Hi Hitcher, could you explain to dumb old me what is it you are discussing here? I guess it has to do with skinning but I'd like to understand (maybe I can help testing, I don't know).
Thanks!
For troubleshooting and bug reporting please make sure you read this first (usually it's enough to follow instructions in the second post).
Reply
(2023-11-20, 11:14)Hitcher Wrote:
(2023-11-19, 04:25)XODIDOX Wrote: the id 1 in the video version dialog is the working mode, the value is "manage" or "play" accordingly.
I'm not sure this is the best method for identifying which version of the dialog is loaded now as it seems the label gets filled after the includes are loaded. Which meant I couldn't use conditional includes to load different layouts. Maybe it would have been better to have them named differently internally like DialogSelect.xml.

Something like this -

xml:
<?xml version="1.0" encoding="UTF-8"?>
<window>
<defaultcontrol always="true">3</defaultcontrol>
<include>Animation_DialogPopupOpenClose</include>
<depth>DepthOSD</depth>
<controls>
<include condition="Window.IsActive(videoversion)">VideoVersion</include>
<include condition="Window.IsActive(videoversionplay)">VideoVersionPlay</include>
</controls>
</window>

Thanks.

I'd agreed, they should ideally have seperate Window ID's for maximum flexibility, like you suggest something like:

videoversionmanage
videoversionplay

You can see here that different Windows can share the same dialog

https://kodi.wiki/view/Window_IDs
Reply
Agree that having the single window 12004 / videoversion can make skinning DialogVideoVersion.xml a chore.  If there is enough commonality to retain a single xml file (I think that is also policy to reduce file count?) then defining 2 windows / window IDs allows use of conditional includes within the single xml file to handle each case.  The downside is in readability of the skin, as the include tends to have the actual implementation while the main xml file is just a wrapper.

scott s.
.
Reply
No reason any includes could not be in the the main xml if the only purpose is to prevent code duplication, and they aren't used in any other xml.
Reply
Hi all, as the PR is quite large, and there are too many iterations of the changes (though it's expected for me), the review process is long enough, both reviewers and I are exhausted. Thus, currently the PR is only making fixes requested from reviewers and waiting for merge. All new features/issues will be addressed in following PRs.
Reply
(2023-11-21, 00:50)XODIDOX Wrote: Hi all, as the PR is quite large, and there are too many iterations of the changes (though it's expected for me), the review process is long enough, both reviewers and I are exhausted. Thus, currently the PR is only making fixes requested from reviewers and waiting for merge. All new features/issues will be addressed in following PRs.
Well, if this gets merged, I think it's champagne time, XODIDOX. Thanks a lot for all the work. There will be time for new features, I'm sure.
For troubleshooting and bug reporting please make sure you read this first (usually it's enough to follow instructions in the second post).
Reply
Hi @Karellen , is it feasible to create a dedicated section in forum for video versions support after this feature is in beta 2? There are some feature requests (version auto detection, for example) that I wan to get more inputs, don’t want to mix separate topics in one thread. And also with more peoples are using this feature, we may get more questions, it’s better to put them in a dedicated sub forum.
Reply
(2023-11-22, 00:31)ashlar Wrote:
(2023-11-21, 00:50)XODIDOX Wrote: Hi all, as the PR is quite large, and there are too many iterations of the changes (though it's expected for me), the review process is long enough, both reviewers and I are exhausted. Thus, currently the PR is only making fixes requested from reviewers and waiting for merge. All new features/issues will be addressed in following PRs.
Well, if this gets merged, I think it's champagne time, XODIDOX. Thanks a lot for all the work. There will be time for new features, I'm sure.

Crack open the champagne, it's in 🍾🍾🍾

Thanks for your patience and efforts on this @XODIDOX
Reply
Cheers! 🥂
Reply
(2023-11-22, 16:31)jjd-uk Wrote: Crack open the champagne, it's in 🍾🍾🍾

Thanks for your patience and efforts on this @XODIDOX

Great! And yes, @XODIDOX you're a real star.
For troubleshooting and bug reporting please make sure you read this first (usually it's enough to follow instructions in the second post).
Reply
(2023-11-22, 16:25)XODIDOX Wrote: Hi @Karellen , is it feasible to create a dedicated section in forum for video versions support after this feature is in beta 2? There are some feature requests (version auto detection, for example) that I wan to get more inputs, don’t want to mix separate topics in one thread. And also with more peoples are using this feature, we may get more questions, it’s better to put them in a dedicated sub forum.
Hi @XODIDOX
Congratulation on the PR merge Smile Fantastic job!!

We don't use sub-forums per feature here. Currently, you are in the Development forum and it is not a very busy forum, so your posts have been remaining at, or near, the top of the listing. But we can pin your thread to the top of the forum under "Important Threads" if you prefer.
Also, you can continue to stay in the Development forum or move to Video forum or anywhere else you believe is more relevant.
jjd-uk suggests creating additional threads - 1. general discussion, 2. bug discussion, & 3. feature requests, but that is up to you.
My Signature
Links to : Official:Forum rules (wiki) | Official:Forum rules/Banned add-ons (wiki) | Debug Log (wiki)
Links to : HOW-TO:Create Music Library (wiki) | HOW-TO:Create_Video_Library (wiki)  ||  Artwork (wiki) | Basic controls (wiki) | Import-export library (wiki) | Movie sets (wiki) | Movie universe (wiki) | NFO files (wiki) | Quick start guide (wiki)
Reply
  • 1
  • 14
  • 15
  • 16(current)
  • 17
  • 18
  • 35

Logout Mark Read Team Forum Stats Members Help
[New Feature] Movie version1