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;