From d3cb14d51ae097510d321cbf86aa381bdc006962 Mon Sep 17 00:00:00 2001 From: Florian Kuepper Date: Sun, 17 Jun 2012 16:34:30 +0200 Subject: [PATCH] Added switch to small view (not ready yet) --- Output/Themes/Ambient/Screens/ScreenSong.xml | 12 +++- Vocaluxe/Menu/SongMenu/CSongMenu.cs | 10 +++ Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs | 44 +++++++++++++ Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs | 68 ++++++++++++++++++++ Vocaluxe/Menu/SongMenu/ISongMenu.cs | 3 + Vocaluxe/Screens/CScreenSong.cs | 14 +--- 6 files changed, 137 insertions(+), 14 deletions(-) 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; }