diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml index d9f45cd2..47cdc20d 100644 --- a/Output/Themes/Ambient/Screens/ScreenSong.xml +++ b/Output/Themes/Ambient/Screens/ScreenSong.xml @@ -810,7 +810,7 @@ 40 40 - 360 + 3600 550 -1 @@ -860,6 +860,128 @@ + + + 20 + 10 + 10 + + 410 + 40 + 830 + 550 + -1 + + + 222 + 416 + -1.01 + 39 + 340 + + + Center + Top + + Outline + + + + 222 + 456 + -1.01 + 32 + 340 + + + Center + Top + + Outline + + + + 222 + 490 + -1.01 + 28 + 340 + + + Center + Top + + Outline + + + + CoverBackground + + + 40 + 40 + 360 + 360 + -1 + + + + CoverBackground + + + 40 + 40 + 3600 + 550 + -1 + + + + DuetIcon + + + 200 + 530 + 40 + 40 + -1 + + + + VideoIcon + + + 120 + 530 + 40 + 40 + -1 + + + + MedleyCalcIcon + + + 280 + 530 + 40 + 40 + -1 + + + + MedleyTagIcon + + + 280 + 530 + 40 + 40 + -1 + + + + diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs index d3668346..ec8d59cb 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuFramework.cs @@ -39,9 +39,40 @@ namespace VocaluxeLib.Menu.SongMenu //public SThemeSongMenuBook songMenuBook; //public SThemeSongMenuDreidel songMenuDreidel; - //public SThemeSongMenuList songMenuList; + public SThemeSongMenuList SongMenuList; public SThemeSongMenuTileBoard SongMenuTileBoard; } + public struct SThemeSongMenuList + { + /// + /// Number of visible songs in list + /// + public int ListLength; + + /// + /// Space between tiles horizontal + /// + public float SpaceW; + + /// + /// Space between tiles vertical + /// + public float SpaceH; + + public SRectF TileRect; + + public SThemeText TextArtist; + public SThemeText TextTitle; + public SThemeText TextSongLength; + + public SThemeStatic StaticCoverBig; + public SThemeStatic StaticTextBG; + public SThemeStatic StaticDuetIcon; + public SThemeStatic StaticVideoIcon; + public SThemeStatic StaticMedleyCalcIcon; + public SThemeStatic StaticMedleyTagIcon; + } + public struct SThemeSongMenuTileBoard { @@ -215,6 +246,18 @@ namespace VocaluxeLib.Menu.SongMenu ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuTileBoard/TileRectSmallH", ref _Theme.SongMenuTileBoard.TileRectSmall.H); #endregion SongMenuTileBoard + #region SongMenuList + ThemeLoaded &= xmlReader.TryGetIntValue(item + "/SongMenuList/ListLength", ref _Theme.SongMenuList.ListLength); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/SpaceW", ref _Theme.SongMenuList.SpaceW); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/SpaceH", ref _Theme.SongMenuList.SpaceH); + + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectX", ref _Theme.SongMenuList.TileRect.X); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectY", ref _Theme.SongMenuList.TileRect.Y); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectZ", ref _Theme.SongMenuList.TileRect.Z); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectW", ref _Theme.SongMenuList.TileRect.W); + ThemeLoaded &= xmlReader.TryGetFloatValue(item + "/SongMenuList/TileRectH", ref _Theme.SongMenuList.TileRect.H); + #endregion SongMenuList + if (ThemeLoaded) { _Theme.Name = elementName; diff --git a/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs b/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs index eb4151e2..c88f2d25 100644 --- a/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs +++ b/VocaluxeLib/Menu/SongMenu/CSongMenuList.cs @@ -50,8 +50,7 @@ namespace VocaluxeLib.Menu.SongMenu private int _TileW; private int _TileH; - //TODO: make variable list length - private int _ListLength = 15; + private int _ListLength; private float _CoverTileWidth; private float _ListTextWidth; @@ -114,31 +113,32 @@ namespace VocaluxeLib.Menu.SongMenu public CSongMenuList(SThemeSongMenu theme, int partyModeID) : base(theme, partyModeID) { - _SpaceW = _Theme.SongMenuTileBoard.SpaceW; - _SpaceH = _Theme.SongMenuTileBoard.SpaceH; - _Artist = new CText(_Theme.SongMenuTileBoard.TextArtist, _PartyModeID); - _Title = new CText(_Theme.SongMenuTileBoard.TextTitle, _PartyModeID); - _SongLength = new CText(_Theme.SongMenuTileBoard.TextSongLength, _PartyModeID); - _CoverBig = new CStatic(_Theme.SongMenuTileBoard.StaticCoverBig, _PartyModeID); - _TextBG = new CStatic(_Theme.SongMenuTileBoard.StaticTextBG, _PartyModeID); - _DuetIcon = new CStatic(_Theme.SongMenuTileBoard.StaticDuetIcon, _PartyModeID); - _VideoIcon = new CStatic(_Theme.SongMenuTileBoard.StaticVideoIcon, _PartyModeID); - _MedleyCalcIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyCalcIcon, _PartyModeID); - _MedleyTagIcon = new CStatic(_Theme.SongMenuTileBoard.StaticMedleyTagIcon, _PartyModeID); + _ListLength = _Theme.SongMenuList.ListLength; + _SpaceW = _Theme.SongMenuList.SpaceW; + _SpaceH = _Theme.SongMenuList.SpaceH; + _Artist = new CText(_Theme.SongMenuList.TextArtist, _PartyModeID); + _Title = new CText(_Theme.SongMenuList.TextTitle, _PartyModeID); + _SongLength = new CText(_Theme.SongMenuList.TextSongLength, _PartyModeID); + _CoverBig = new CStatic(_Theme.SongMenuList.StaticCoverBig, _PartyModeID); + _TextBG = new CStatic(_Theme.SongMenuList.StaticTextBG, _PartyModeID); + _DuetIcon = new CStatic(_Theme.SongMenuList.StaticDuetIcon, _PartyModeID); + _VideoIcon = new CStatic(_Theme.SongMenuList.StaticVideoIcon, _PartyModeID); + _MedleyCalcIcon = new CStatic(_Theme.SongMenuList.StaticMedleyCalcIcon, _PartyModeID); + _MedleyTagIcon = new CStatic(_Theme.SongMenuList.StaticMedleyTagIcon, _PartyModeID); _SubElements.AddRange(new IMenuElement[] {_Artist, _Title, _SongLength, _DuetIcon, _VideoIcon, _MedleyCalcIcon, _MedleyTagIcon}); } private void _ReadSubTheme() { - _Theme.SongMenuTileBoard.TextArtist = (SThemeText)_Artist.GetTheme(); - _Theme.SongMenuTileBoard.TextSongLength = (SThemeText)_SongLength.GetTheme(); - _Theme.SongMenuTileBoard.TextTitle = (SThemeText)_Title.GetTheme(); - _Theme.SongMenuTileBoard.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme(); - _Theme.SongMenuTileBoard.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticMedleyCalcIcon = (SThemeStatic)_MedleyCalcIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticMedleyTagIcon = (SThemeStatic)_MedleyTagIcon.GetTheme(); - _Theme.SongMenuTileBoard.StaticTextBG = (SThemeStatic)_TextBG.GetTheme(); - _Theme.SongMenuTileBoard.StaticVideoIcon = (SThemeStatic)_VideoIcon.GetTheme(); + _Theme.SongMenuList.TextArtist = (SThemeText)_Artist.GetTheme(); + _Theme.SongMenuList.TextSongLength = (SThemeText)_SongLength.GetTheme(); + _Theme.SongMenuList.TextTitle = (SThemeText)_Title.GetTheme(); + _Theme.SongMenuList.StaticCoverBig = (SThemeStatic)_CoverBig.GetTheme(); + _Theme.SongMenuList.StaticDuetIcon = (SThemeStatic)_DuetIcon.GetTheme(); + _Theme.SongMenuList.StaticMedleyCalcIcon = (SThemeStatic)_MedleyCalcIcon.GetTheme(); + _Theme.SongMenuList.StaticMedleyTagIcon = (SThemeStatic)_MedleyTagIcon.GetTheme(); + _Theme.SongMenuList.StaticTextBG = (SThemeStatic)_TextBG.GetTheme(); + _Theme.SongMenuList.StaticVideoIcon = (SThemeStatic)_VideoIcon.GetTheme(); } public override object GetTheme() @@ -157,7 +157,7 @@ namespace VocaluxeLib.Menu.SongMenu private void _InitTiles() { - MaxRect = _Theme.SongMenuTileBoard.TileRect; + MaxRect = _Theme.SongMenuList.TileRect; //keep tile ratio 3/2 so the covers still look nice. _CoverTileWidth = _ListLength * 3.0f / 2;