diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml
index fc3e511a..dbfcc8c4 100644
--- a/Output/Themes/Ambient/Screens/ScreenSong.xml
+++ b/Output/Themes/Ambient/Screens/ScreenSong.xml
@@ -47,7 +47,7 @@
1
1
1
- 0.3
+ 1
@@ -455,6 +455,10 @@
6
4
+
+ 4
+
+ 4
10,00
@@ -465,6 +469,12 @@
-1,00
830
550
+
+ 410
+ 40
+ -1,00
+ 550
+ 550
222
diff --git a/Vocaluxe/Menu/SongMenu/CSongMenu.cs b/Vocaluxe/Menu/SongMenu/CSongMenu.cs
index b37e1e04..57ef11b6 100644
--- a/Vocaluxe/Menu/SongMenu/CSongMenu.cs
+++ b/Vocaluxe/Menu/SongMenu/CSongMenu.cs
@@ -118,6 +118,16 @@ namespace Vocaluxe.Menu.SongMenu
return _SongMenu.GetRect();
}
+ public bool IsSmallView()
+ {
+ return _SongMenu.IsSmallView();
+ }
+
+ public void SetSmallView(bool SmallView)
+ {
+ _SongMenu.SetSmallView(SmallView);
+ }
+
#endregion ISongMenu
#region IMenuElement
diff --git a/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs b/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs
index 3be1a0f1..e4730e8e 100644
--- a/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs
+++ b/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs
@@ -55,6 +55,16 @@ namespace Vocaluxe.Menu.SongMenu
///
public int numH;
+ ///
+ /// Number of tiles horizontal in small-modus
+ ///
+ public int numWsmall;
+
+ ///
+ /// Number of tiles vertical in small-modus
+ ///
+ public int numHsmall;
+
///
/// Space between tiles horizontal
///
@@ -66,6 +76,7 @@ namespace Vocaluxe.Menu.SongMenu
public float spaceH;
public SRectF TileRect;
+ public SRectF TileRectSmall;
public CText TextArtist;
public CText TextTitle;
@@ -272,6 +283,9 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceW", navigator, ref _Theme.songMenuTileBoard.spaceW);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/SpaceH", navigator, ref _Theme.songMenuTileBoard.spaceH);
+ _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumWsmall", navigator, ref _Theme.songMenuTileBoard.numWsmall);
+ _ThemeLoaded &= CHelper.TryGetIntValueFromXML(item + "/SongMenuTileBoard/NumHsmall", navigator, ref _Theme.songMenuTileBoard.numHsmall);
+
_ThemeLoaded &= _Theme.songMenuTileBoard.TextArtist.LoadTheme(item + "/SongMenuTileBoard", "TextArtist", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.TextTitle.LoadTheme(item + "/SongMenuTileBoard", "TextTitle", navigator, SkinIndex);
_ThemeLoaded &= _Theme.songMenuTileBoard.TextSongLength.LoadTheme(item + "/SongMenuTileBoard", "TextSongLength", navigator, SkinIndex);
@@ -289,6 +303,12 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectW", navigator, ref _Theme.songMenuTileBoard.TileRect.W);
_ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectH", navigator, ref _Theme.songMenuTileBoard.TileRect.H);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallX", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.X);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallY", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Y);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallZ", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.Z);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallW", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.W);
+ _ThemeLoaded &= CHelper.TryGetFloatValueFromXML(item + "/SongMenuTileBoard/TileRectSmallH", navigator, ref _Theme.songMenuTileBoard.TileRectSmall.H);
+
#endregion SongMenuTileBoard
if (_ThemeLoaded)
@@ -362,6 +382,12 @@ namespace Vocaluxe.Menu.SongMenu
writer.WriteComment(": Space between tiles vertical");
writer.WriteElementString("SpaceH", _Theme.songMenuTileBoard.spaceH.ToString("#0.00"));
+ writer.WriteComment(": Number of tiles horizontal in small-mode");
+ writer.WriteElementString("NumW", _Theme.songMenuTileBoard.numW.ToString());
+
+ writer.WriteComment(": Number of tiles vertical in small-mode");
+ writer.WriteElementString("NumH", _Theme.songMenuTileBoard.numH.ToString());
+
writer.WriteComment(", , , , : SongMenu position, width and height");
writer.WriteElementString("TileRectX", _Theme.songMenuTileBoard.TileRect.X.ToString("#0"));
writer.WriteElementString("TileRectY", _Theme.songMenuTileBoard.TileRect.Y.ToString("#0"));
@@ -369,6 +395,13 @@ namespace Vocaluxe.Menu.SongMenu
writer.WriteElementString("TileRectW", _Theme.songMenuTileBoard.TileRect.W.ToString("#0"));
writer.WriteElementString("TileRectH", _Theme.songMenuTileBoard.TileRect.H.ToString("#0"));
+ writer.WriteComment(", , , , : SongMenu position, width and height in small-mode");
+ writer.WriteElementString("TileRectSmallX", _Theme.songMenuTileBoard.TileRectSmall.X.ToString("#0"));
+ writer.WriteElementString("TileRectSmallY", _Theme.songMenuTileBoard.TileRectSmall.Y.ToString("#0"));
+ writer.WriteElementString("TileRectSmallZ", _Theme.songMenuTileBoard.TileRectSmall.Z.ToString("#0.00"));
+ writer.WriteElementString("TileRectSmallW", _Theme.songMenuTileBoard.TileRectSmall.W.ToString("#0"));
+ writer.WriteElementString("TileRectSmallH", _Theme.songMenuTileBoard.TileRectSmall.H.ToString("#0"));
+
_Theme.songMenuTileBoard.TextArtist.SaveTheme(writer);
_Theme.songMenuTileBoard.TextTitle.SaveTheme(writer);
_Theme.songMenuTileBoard.TextSongLength.SaveTheme(writer);
@@ -499,6 +532,17 @@ namespace Vocaluxe.Menu.SongMenu
return;
}
+ public virtual void SetSmallView(bool SmallView)
+ {
+ if (!_Initialized)
+ return;
+ }
+
+ public virtual bool IsSmallView()
+ {
+ return false;
+ }
+
public virtual void UnloadTextures()
{
}
diff --git a/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs b/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs
index 6e20dc51..71ccf54b 100644
--- a/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs
+++ b/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs
@@ -40,6 +40,8 @@ namespace Vocaluxe.Menu.SongMenu
private int _Offset = 0;
private int _actualSelection = -1;
+ private bool _SmallView = false;
+
public override int GetActualSelection()
{
return _actualSelection;
@@ -650,6 +652,72 @@ namespace Vocaluxe.Menu.SongMenu
_Offset = offset;
}
+ public override void SetSmallView(bool SmallView)
+ {
+ base.SetSmallView(SmallView);
+
+ _SmallView = SmallView;
+
+ if (_SmallView)
+ {
+ _NumH = _Theme.songMenuTileBoard.numHsmall;
+ _NumW = _Theme.songMenuTileBoard.numWsmall;
+
+ _TileW = (int)((_Theme.songMenuTileBoard.TileRectSmall.W - _SpaceW * (_NumW - 1)) / _NumW);
+ _TileH = (int)((_Theme.songMenuTileBoard.TileRectSmall.H - _SpaceH * (_NumH - 1)) / _NumH);
+
+ _CoverTexture = CTheme.GetSkinTexture(_Theme.CoverBackgroundName);
+ _CoverBigTexture = CTheme.GetSkinTexture(_Theme.CoverBigBackgroundName);
+
+ _Tiles = new List();
+ for (int i = 0; i < _NumH; i++)
+ {
+ for (int j = 0; j < _NumW; j++)
+ {
+ SRectF rect = new SRectF(_Theme.songMenuTileBoard.TileRectSmall.X + j * (_TileW + _SpaceW),
+ _Theme.songMenuTileBoard.TileRectSmall.Y + i * (_TileH + _SpaceH), _TileW, _TileH, _Rect.Z);
+ CStatic tile = new CStatic(_CoverTexture, Color, rect);
+ _Tiles.Add(tile);
+ }
+ }
+
+ _ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRectSmall.Z);
+ }
+ else
+ {
+ _NumH = _Theme.songMenuTileBoard.numH;
+ _NumW = _Theme.songMenuTileBoard.numW;
+
+ _TileW = (int)((_Theme.songMenuTileBoard.TileRect.W - _SpaceW * (_NumW - 1)) / _NumW);
+ _TileH = (int)((_Theme.songMenuTileBoard.TileRect.H - _SpaceH * (_NumH - 1)) / _NumH);
+
+ _CoverTexture = CTheme.GetSkinTexture(_Theme.CoverBackgroundName);
+ _CoverBigTexture = CTheme.GetSkinTexture(_Theme.CoverBigBackgroundName);
+
+ _Tiles = new List();
+ for (int i = 0; i < _NumH; i++)
+ {
+ for (int j = 0; j < _NumW; j++)
+ {
+ SRectF rect = new SRectF(_Theme.songMenuTileBoard.TileRect.X + j * (_TileW + _SpaceW),
+ _Theme.songMenuTileBoard.TileRect.Y + i * (_TileH + _SpaceH), _TileW, _TileH, _Rect.Z);
+ CStatic tile = new CStatic(_CoverTexture, Color, rect);
+ _Tiles.Add(tile);
+ }
+ }
+
+ _ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRect.Z);
+ }
+
+ UpdateList(_Offset);
+
+ }
+
+ public override bool IsSmallView()
+ {
+ return _SmallView;
+ }
+
public override void LoadTextures()
{
base.LoadTextures();
diff --git a/Vocaluxe/Menu/SongMenu/ISongMenu.cs b/Vocaluxe/Menu/SongMenu/ISongMenu.cs
index 7118f8ca..a7e20542 100644
--- a/Vocaluxe/Menu/SongMenu/ISongMenu.cs
+++ b/Vocaluxe/Menu/SongMenu/ISongMenu.cs
@@ -29,6 +29,9 @@ namespace Vocaluxe.Menu.SongMenu
bool IsVisible();
void SetVisible(bool Visible);
+ bool IsSmallView();
+ void SetSmallView(bool SmallView);
+
SRectF GetRect();
}
}
diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs
index 9982eb70..a3edd9c9 100644
--- a/Vocaluxe/Screens/CScreenSong.cs
+++ b/Vocaluxe/Screens/CScreenSong.cs
@@ -250,7 +250,7 @@ namespace Vocaluxe.Screens
}
else if (Buttons[htButtons(ButtonOptionsPlaylist)].Selected)
{
- ToggleSongOptions();
+ SongMenus[htSongMenus(SongMenu)].SetSmallView(true);
}
}
if (MouseEvent.RB)
@@ -313,18 +313,6 @@ namespace Vocaluxe.Screens
public override bool Draw()
{
base.Draw();
-
- if (_SongOptionsActive)
- {
- Statics[htStatics(StaticOptionsBG)].Draw();
- Texts[htTexts(TextOptionsTitle)].Draw();
- SelectSlides[htSelectSlides(SelectSlideOptionsMode)].Draw();
- Buttons[htButtons(ButtonOptionsClose)].Draw();
- Buttons[htButtons(ButtonOptionsSing)].Draw();
- Buttons[htButtons(ButtonOptionsPlaylist)].Draw();
-
- }
-
return true;
}