getmusicbee.com

Support => Developers' Area => TheaterMode => Topic started by: Bee-liever on October 03, 2021, 05:51:22 AM

Title: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 03, 2021, 05:51:22 AM
Was updating Mod'ernaire to take advantage of some of the newer fields and found a few problems.
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 03, 2021, 05:53:25 AM
I will look at this but it might be a couple of weeks or so before i do
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 03, 2021, 06:03:03 AM
No worries.
I know you said you are busy and couldn't look at TheaterMode for a while.
Just posting them as I find them so there is a record of the issues.  ;)
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 11, 2021, 09:23:57 AM
would it be possible to send me the skin with these problems as that will make the task easier for me
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 12, 2021, 06:31:03 AM
PM sent
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 12, 2021, 11:28:31 AM
align="" formatting is ignored both in main panel declaration and child elements
i checked a few fields and they seemed correct - which specific man panel element and child elements were you having problems with?
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 12, 2021, 11:45:17 AM
It's the <!--Track List Panel--> section.
If you check "#PlayingNow_a", "#PlayingNow_b" and "#PlayingNow_c" they all have different formatting but when displayed, they all display the same thing.

(http://i.imgur.com/7dVizy0.jpg) (https://imgur.com/7dVizy0)

and when I change to <!--#Album Tracks Panel--> it uses the metadata from "#PlayingNow_a"
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 12, 2021, 01:41:28 PM
I got the nowplayinglist to work properly with this:
Code
<element type="NowPlayingList" name="#PlayingNow" xAnchor="#TrackListPanel.Left" x="5" yAnchor="#TrackListPanel.Top" y="30" widthDock="X:#TrackListPanel.Right" width="-5" heightDock="Y:#TrackListPanel.Bottom" height="-100" rowPadding="11" font="Segoe UI" style="Regular" size="10" fg="240,240,240" fg2="0,250,250" mouseOverFg="255,0,255" >
      <child id="artist" width="290" align="right"/>
      <child width="2" />
      <child id="Duration" width="48" align="center" />
      <child id="Speaker" width="23" align="center" />
      <child id="#" width="35" format="#\." align="center" />
      <child width="2" />
      <child id="title" />
    </element>
but the problem of it still overriding metadata and formatting in name="#AlbumTracksPanel" still exists.
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 13, 2021, 09:43:03 AM
I was able to to adjust for scaling by changing to this:
Code
<element type="Line" name="#LHoffset" xAnchor="#TrackListPanel.40" x="0" yAnchor="#TrackListPanel.Top" y="50" width="2" heightDock="Y:#TrackListPanel.Bottom" height="0" bg="40,87,167,240"></element>
    <element type="Line" name="#RHoffset" xAnchor="#TrackListPanel.50" x="0" yAnchor="#TrackListPanel.Top" y="50" width="2" heightDock="Y:#TrackListPanel.Bottom" height="0" bg="40,87,167,240"></element>

    <element type="NowPlayingList" name="#PlayingNow" xAnchor="#TrackListPanel.Left" x="5" yAnchor="#TrackListPanel.Top" y="30" widthDock="X:#TrackListPanel.Right" width="-5" heightDock="Y:#TrackListPanel.Bottom" height="0" rowPadding="11" font="Segoe UI" style="Regular" size="10" minSize="7" fg="240,240,240" fg2="0,250,250" mouseOverFg="255,0,255" >
      <child align="right" id="artist" widthDock="X:#LHoffset.Left" width="-2" />
      <child widthDock="X:#TrackListPanel.01" width="0" />
      <child align="center" id="Duration" widthDock="X:#TrackListPanel.07" width="0" />
      <child align="center" id="Speaker" widthDock="X:#TrackListPanel.03" width="0" />
      <child align="right" id="#" widthDock="X:#TrackListPanel.06" width="0" format="#\:" />
      <child align="left" id="title" widthDock="X:#TrackListPanel.Right" width="-10" />
    </element>
I didn't even know the variable elements could be used in child elements until this actually worked!  :)

But if I make this one tiny change:
Code
<child align="center" id="Speaker" widthDock="X:#RHoffset.Left" width="0" />
it throws the panel way off.
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 17, 2021, 05:42:19 AM
align="" formatting is ignored both in main panel declaration and child elements
For the parent element, when you use align="xxx" it is used as the default text alignment for the child elements, and when you use align="xxx.yyy" (eg. align="Bottom.Right") then it aligns the element itself
There is a bug where the align="xxx" for child elements wont always override the default from the parent element which is fixed for the next plugin update
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 17, 2021, 06:04:03 AM
]if both type="NowPlayingList" and type="AlbumTracks" are used in the xml (in different autoHide panels of course) formatting and info for "AlbumTracks" is overridden by type="NowPlayingList"
This is not dependant on position in xml
as currently implemented, only one panel showing a list of tracks is supported. Its non-trivial to fully disconnect them. Let me know if its important to what you want to achieve
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 17, 2021, 06:09:39 AM
id="TrackArtistAndTitle" doesn't show TrackArtist unless it contains one of the recognised artist joiners from the multiple artist splitter panel (feat., with, and, etc)
that field is used everywhere within MB, so i am surprised there would be any issue. It just combines the display artist with the track title with a bit of logic around when either component field is blank.
Can you give a specific example?

edit:
this has the fix for the child element alignment overrides
https://www.mediafire.com/file/7ftgbdjrwgs93z8/mb_TheaterModePlugin.zip/file
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 17, 2021, 11:27:44 AM
id="TrackArtistAndTitle" doesn't show TrackArtist unless it contains one of the recognised artist joiners from the multiple artist splitter panel (feat., with, and, etc)
that field is used everywhere within MB, so i am surprised there would be any issue. It just combines the display artist with the track title with a bit of logic around when either component field is blank.
Can you give a specific example?
This is Redwing's XBOX Music Style using id="TrackArtistAndTitle".  Only the first track shows an Artist, and that's one that has been split with multiple artist splitter.
(http://i.imgur.com/LZ3saIT.jpg) (https://imgur.com/LZ3saIT)
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 17, 2021, 11:45:30 AM
]if both type="NowPlayingList" and type="AlbumTracks" are used in the xml (in different autoHide panels of course) formatting and info for "AlbumTracks" is overridden by type="NowPlayingList"
This is not dependant on position in xml
as currently implemented, only one panel showing a list of tracks is supported. Its non-trivial to fully disconnect them. Let me know if its important to what you want to achieve
OK. That's probably why Redwing did the original HomeAlone (that Mod'ernaire is based on) track listing how he did it.
If disconnecting the panels is in the too-hard basket, don't worry about doing it.  I continue to use the older way that was originally used.
Code
<!-- Track List Panel -->
<autoHide name="#TrackListPanel" xAnchor="Panel.Left" x="110" yAnchor="Panel.Top" y="70" width="455" height="550"  bg="80,30,30,30" fg="200,200,200" fg2="200,200,200" allowPinning="true" resizePictures="false" >

<element name="#PlayingNow" type="Field" xAnchor="Panel.Left" x="150" yAnchor="Panel.Top" y="110" width="300" font="Segoe UI" style="Regular" size="10" fg="0,250,250" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[1]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="30" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[2]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="60" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[3]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="90" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[4]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="120" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[5]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="150" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[6]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="180" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[7]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="210" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[8]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="240" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[9]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="270" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[10]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="300" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[11]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="330" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[12]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="360" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[13]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="390" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[14]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="420" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>
<element type="Field" id="Tracks[15]" xAnchor="#PlayingNow.Left" x="0" yAnchor="#PlayingNow.Top" y="450" width="300" font="Segoe UI" style="Regular" size="10" fg="240,240,240" onClick="PlayNow">  <child id="Title"> </child><child>  (</child><child id="Artist"> </child><child>)  </child></element>

<element type="Line" xAnchor="#TrackListPanel.Right" x="-60" yAnchor="#PlayingNow.Top" y="265" width="2" height="190" bg="170,170,170"></element>
<element name="#PlayPrevious" type="Text" xAnchor="#TrackListPanel.Right" x="-40" yAnchor="#PlayingNow.Top" y="320" width="30" font="Wingdings 3" style="Regular" size="10" fg="250,250,250" mouseOverFg="0,0,255" onClick="PlayPrevious">p</element>
<element name="#OpenNowPlayingAssistant" type="Text" xAnchor="#TrackListPanel.Right" x="-40" yAnchor="#PlayingNow.Top" y="355" width="30" font="Wingdings" style="Bold" size="10" fg="0,255,255" onClick="OpenNowPlayingAssistant">R</element>
<element name="#PlayNext" type="Text" xAnchor="#TrackListPanel.Right" x="-40" yAnchor="#PlayingNow.Top" y="390" width="30" font="Wingdings 3" style="Regular" size="10" fg="250,250,250" mouseOverFg="0,0,255" onClick="PlayNext">q</element>

</autoHide>

On the other hand, if it can be done it's so much better to be able scroll back & forward through the entire playlist you have queued up and to be able to jump to an album panel and see other tracks from the album that the current playing track is from to see if there is anything else on said album you'd also like to here.
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Steven on October 17, 2021, 11:54:55 AM
I realise now the "TrackArtistAndTitle" is using an implementation specific to the plugins, where the display artist only shows if it differs from the album artist ie. when display artist = album artist then only show the title
I guess the name is not really appropriate.
I dont want to change the existing field because i think it was intentionally done for some other theatermode skins.
Perhaps you can simulate it yourself just using <Artist> - <Ttitle>, otherwise i can add a new field but it would only work on new mb versions
Title: Re: Multiple bugs in type="NowPlayingList" implementation
Post by: Bee-liever on October 17, 2021, 12:01:03 PM
I usually use <Artist> - <Ttitle> myself, but I noticed it wasn't working as the name suggested so I posted it as a bug.
If it's working as intended then we can just forget this one.