Author Topic: Multiple bugs in type="NowPlayingList" implementation  (Read 3772 times)

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
Was updating Mod'ernaire to take advantage of some of the newer fields and found a few problems.
  • align="" formatting is ignored both in main panel declaration and child elements

  • 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

  • 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)
MusicBee and my library - Making bee-utiful music together

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
I will look at this but it might be a couple of weeks or so before i do

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
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.  ;)
MusicBee and my library - Making bee-utiful music together

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
would it be possible to send me the skin with these problems as that will make the task easier for me

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
PM sent
MusicBee and my library - Making bee-utiful music together

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
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?

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
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.



and when I change to <!--#Album Tracks Panel--> it uses the metadata from "#PlayingNow_a"
MusicBee and my library - Making bee-utiful music together

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
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.
Last Edit: October 12, 2021, 01:53:49 PM by Bee-liever
MusicBee and my library - Making bee-utiful music together

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
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.
MusicBee and my library - Making bee-utiful music together

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
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

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
]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

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
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
Last Edit: October 17, 2021, 08:54:29 AM by Steven

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
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.
MusicBee and my library - Making bee-utiful music together

Bee-liever

  • Member
  • Hero Member
  • *****
  • Posts: 3717
  • MB Version: 3.4.8001 P
]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.
MusicBee and my library - Making bee-utiful music together

Steven

  • Administrator
  • Hero Member
  • *****
  • Posts: 32364
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