diff --git a/Vocaluxe/Menu/SongMenu/CSongMenu.cs b/Vocaluxe/Menu/SongMenu/CSongMenu.cs index e6a2824e..7b22e96d 100644 --- a/Vocaluxe/Menu/SongMenu/CSongMenu.cs +++ b/Vocaluxe/Menu/SongMenu/CSongMenu.cs @@ -143,6 +143,16 @@ namespace Vocaluxe.Menu.SongMenu _SongMenu.SetSmallView(SmallView); } + public void ToggleVideoFull() + { + _SongMenu.ToggleVideoFull(); + } + + public bool IsVideoFull() + { + return _SongMenu.IsVideoFull(); + } + #endregion ISongMenu #region IMenuElement diff --git a/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs b/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs index c2fc76ee..4f1a9e13 100644 --- a/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs +++ b/Vocaluxe/Menu/SongMenu/CSongMenuFramework.cs @@ -484,6 +484,9 @@ namespace Vocaluxe.Menu.SongMenu _timer.Stop(); _timer.Reset(); _SelectedInternal = _SelectedPending; + + if (IsVideoFull()) + ToggleVideoFull(); } public virtual void HandleInput(ref KeyEvent KeyEvent) @@ -553,6 +556,17 @@ namespace Vocaluxe.Menu.SongMenu return false; } + public virtual void ToggleVideoFull() + { + if (!_Initialized) + return; + } + + public virtual bool IsVideoFull() + { + return false; + } + public virtual void UnloadTextures() { } diff --git a/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs b/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs index eda76a62..1c1393b8 100644 --- a/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs +++ b/Vocaluxe/Menu/SongMenu/CSongMenuTileBoard.cs @@ -41,6 +41,7 @@ namespace Vocaluxe.Menu.SongMenu private int _actualSelection = -1; private bool _SmallView = false; + private bool _VidFull = false; public override int GetActualSelection() { @@ -359,6 +360,10 @@ namespace Vocaluxe.Menu.SongMenu } else if (_PreviewSelected != -1 && MouseEvent.LB && CSongs.Category != -1) { + if (CHelper.IsInBounds(_VideoIcon.Rect, MouseEvent)) + { + ToggleVideoFull(); + } if (CHelper.IsInBounds(_CoverBig.Rect, MouseEvent) || CHelper.IsInBounds(_TextBG.Rect, MouseEvent)) { _Locked = _PreviewSelected; @@ -375,6 +380,10 @@ namespace Vocaluxe.Menu.SongMenu } } } + else if (MouseEvent.LB && CHelper.IsInBounds(_VideoIcon.Rect, MouseEvent)) + { + ToggleVideoFull(); + } if (MouseEvent.Wheel > 0) { @@ -472,14 +481,26 @@ namespace Vocaluxe.Menu.SongMenu if (_vidtex.index != -1 && _Video != -1) { - RectangleF bounds = new RectangleF(_CoverBig.Rect.X, _CoverBig.Rect.Y, _CoverBig.Rect.W, _CoverBig.Rect.H); - RectangleF rect = new RectangleF(0f, 0f, _vidtex.width, _vidtex.height); - CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop); + if (_VidFull) + { + RectangleF bounds = new RectangleF(0, 0, CSettings.iRenderW, CSettings.iRenderH); + RectangleF rect = new RectangleF(0f, 0f, _vidtex.width, _vidtex.height); + CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop); - CDraw.DrawTexture(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z), - _vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false); - CDraw.DrawTextureReflection(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z), - _vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), _CoverBig.ReflectionSpace, _CoverBig.ReflectionHeight); + CDraw.DrawTexture(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, CSettings.zNear), + _vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false); + } + else + { + RectangleF bounds = new RectangleF(_CoverBig.Rect.X, _CoverBig.Rect.Y, _CoverBig.Rect.W, _CoverBig.Rect.H); + RectangleF rect = new RectangleF(0f, 0f, _vidtex.width, _vidtex.height); + CHelper.SetRect(bounds, ref rect, rect.Width / rect.Height, EAspect.Crop); + + CDraw.DrawTexture(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z), + _vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), false); + CDraw.DrawTextureReflection(_vidtex, new SRectF(rect.X, rect.Y, rect.Width, rect.Height, _CoverBig.Rect.Z), + _vidtex.color, new SRectF(bounds.X, bounds.Y, bounds.Width, bounds.Height, 0f), _CoverBig.ReflectionSpace, _CoverBig.ReflectionHeight); + } } @@ -793,6 +814,16 @@ namespace Vocaluxe.Menu.SongMenu return _SmallView; } + public override void ToggleVideoFull() + { + _VidFull = !_VidFull; + } + + public override bool IsVideoFull() + { + return _VidFull; + } + public override void LoadTextures() { base.LoadTextures(); diff --git a/Vocaluxe/Menu/SongMenu/ISongMenu.cs b/Vocaluxe/Menu/SongMenu/ISongMenu.cs index dfca5dee..18251b88 100644 --- a/Vocaluxe/Menu/SongMenu/ISongMenu.cs +++ b/Vocaluxe/Menu/SongMenu/ISongMenu.cs @@ -33,6 +33,9 @@ namespace Vocaluxe.Menu.SongMenu bool IsVisible(); void SetVisible(bool Visible); + void ToggleVideoFull(); + bool IsVideoFull(); + bool IsSmallView(); void SetSmallView(bool SmallView); diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index a8dbc336..bc1184d0 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -141,7 +141,9 @@ namespace Vocaluxe.Screens switch (KeyEvent.Key) { case Keys.Escape: - if (CSongs.Category < 0 || CConfig.Tabs == EOffOn.TR_CONFIG_OFF) + if (SongMenus[htSongMenus(SongMenu)].IsVideoFull()) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); + else if (CSongs.Category < 0 || CConfig.Tabs == EOffOn.TR_CONFIG_OFF) CGraphics.FadeTo(EScreens.ScreenMain); break; @@ -149,7 +151,11 @@ namespace Vocaluxe.Screens if (CSongs.NumVisibleSongs > 0) { if (SongMenus[htSongMenus(SongMenu)].GetSelectedSong() != -1 && !_SongOptionsActive) + { ToggleSongOptions(ESongOptionsView.Song); + if (SongMenus[htSongMenus(SongMenu)].IsVideoFull()) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); + } } break; @@ -174,6 +180,8 @@ namespace Vocaluxe.Screens break; case Keys.Space: + if (SongMenus[htSongMenus(SongMenu)].IsVideoFull()) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); ToggleSongOptions(ESongOptionsView.General); break; @@ -187,6 +195,8 @@ namespace Vocaluxe.Screens else { _SearchActive = true; + if (SongMenus[htSongMenus(SongMenu)].IsVideoFull()) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); } break; @@ -215,6 +225,8 @@ namespace Vocaluxe.Screens else { _SearchActive = true; + if (SongMenus[htSongMenus(SongMenu)].IsVideoFull()) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); } } break; @@ -234,13 +246,16 @@ namespace Vocaluxe.Screens //TODO: Delete that! case Keys.S: if (CSongs.NumVisibleSongs > 0) + { StartMedleySong(SongMenus[htSongMenus(SongMenu)].GetSelectedSong()); + } break; + } } } - else + else if(!SongMenus[htSongMenus(SongMenu)].IsVideoFull()) { switch (KeyEvent.Key) { @@ -294,118 +309,134 @@ namespace Vocaluxe.Screens } } + if (KeyEvent.Key == Keys.V) + { + if (CSongs.Category != -1) + { + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); + } + } + return true; } public override bool HandleMouse(MouseEvent MouseEvent) { - base.HandleMouse(MouseEvent); - - if (Playlists[htPlaylists(Playlist)].Visible && Playlists[htPlaylists(Playlist)].IsMouseOver(MouseEvent)) + if (!SongMenus[htSongMenus(SongMenu)].IsVideoFull()) { - _PlaylistActive = true; - Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; - SongMenus[htSongMenus(SongMenu)].SetActive(!_PlaylistActive); - } - else if (CHelper.IsInBounds(SongMenus[htSongMenus(SongMenu)].Rect, MouseEvent.X, MouseEvent.Y)) - { - _PlaylistActive = false; - Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; - SongMenus[htSongMenus(SongMenu)].SetActive(!_PlaylistActive); - } + base.HandleMouse(MouseEvent); - if (Playlists[htPlaylists(Playlist)].Visible && Playlists[htPlaylists(Playlist)].HandleMouse(MouseEvent)) - return true; - - if (!_SongOptionsActive) - { - - if ((MouseEvent.RB) && (CSongs.Category < 0)) + if (Playlists[htPlaylists(Playlist)].Visible && Playlists[htPlaylists(Playlist)].IsMouseOver(MouseEvent)) { - CGraphics.FadeTo(EScreens.ScreenMain); + _PlaylistActive = true; + Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; + SongMenus[htSongMenus(SongMenu)].SetActive(!_PlaylistActive); + } + else if (CHelper.IsInBounds(SongMenus[htSongMenus(SongMenu)].Rect, MouseEvent.X, MouseEvent.Y)) + { + _PlaylistActive = false; + Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; + SongMenus[htSongMenus(SongMenu)].SetActive(!_PlaylistActive); } - else if (MouseEvent.RB && _SongOptionsActive) - ToggleSongOptions(ESongOptionsView.None); - if (MouseEvent.MB && CSongs.Category != -1) + if (Playlists[htPlaylists(Playlist)].Visible && Playlists[htPlaylists(Playlist)].HandleMouse(MouseEvent)) + return true; + + if (!_SongOptionsActive) { - Console.WriteLine("MB pressed"); - SongMenus[htSongMenus(SongMenu)].SetSelectedSong(CSongs.GetRandomSong()); - } - else if (MouseEvent.MB && CSongs.Category == -1) - { - Console.WriteLine("MB pressed"); - SongMenus[htSongMenus(SongMenu)].SetSelectedCategory(CSongs.GetRandomCategory()); + + if ((MouseEvent.RB) && (CSongs.Category < 0)) + { + CGraphics.FadeTo(EScreens.ScreenMain); + } + else if (MouseEvent.RB && _SongOptionsActive) + ToggleSongOptions(ESongOptionsView.None); + + if (MouseEvent.MB && CSongs.Category != -1) + { + Console.WriteLine("MB pressed"); + SongMenus[htSongMenus(SongMenu)].SetSelectedSong(CSongs.GetRandomSong()); + } + else if (MouseEvent.MB && CSongs.Category == -1) + { + Console.WriteLine("MB pressed"); + SongMenus[htSongMenus(SongMenu)].SetSelectedCategory(CSongs.GetRandomCategory()); + } + else + SongMenus[htSongMenus(SongMenu)].HandleMouse(ref MouseEvent); + + if (MouseEvent.LB && CSongs.NumVisibleSongs > 0 && SongMenus[htSongMenus(SongMenu)].GetActualSelection() != -1) + { + if (SongMenus[htSongMenus(SongMenu)].GetSelectedSong() != -1 && !_SongOptionsActive) + { + ToggleSongOptions(ESongOptionsView.Song); + } + } + else if (MouseEvent.LB && IsMouseOver(MouseEvent)) + { + if (Buttons[htButtons(ButtonOpenOptions)].Selected) + { + ToggleSongOptions(ESongOptionsView.General); + } + } } + else - SongMenus[htSongMenus(SongMenu)].HandleMouse(ref MouseEvent); - - if (MouseEvent.LB && CSongs.NumVisibleSongs > 0 && SongMenus[htSongMenus(SongMenu)].GetActualSelection() != -1) { - if (SongMenus[htSongMenus(SongMenu)].GetSelectedSong() != -1 && !_SongOptionsActive) + if (MouseEvent.LB && IsMouseOver(MouseEvent)) { - ToggleSongOptions(ESongOptionsView.Song); + if (Buttons[htButtons(ButtonOptionsClose)].Selected) + { + ToggleSongOptions(ESongOptionsView.None); + } + else if (Buttons[htButtons(ButtonOptionsSing)].Selected) + { + ToggleSongOptions(ESongOptionsView.None); + StartSong(SongMenus[htSongMenus(SongMenu)].GetSelectedSong()); + } + else if (Buttons[htButtons(ButtonOptionsPlaylist)].Selected) + { + OpenAndAddPlaylistAction(); + } + else if (Buttons[htButtons(ButtonOptionsRandom)].Selected) + { + if (CSongs.Category != -1) + { + SongMenus[htSongMenus(SongMenu)].SetSelectedSong(CSongs.GetRandomSong()); + } + } + else if (Buttons[htButtons(ButtonOptionsRandomCategory)].Selected) + { + if (CSongs.Category == -1) + { + SongMenus[htSongMenus(SongMenu)].SetSelectedCategory(CSongs.GetRandomCategory()); + } + } + else if (Buttons[htButtons(ButtonOptionsSingAll)].Selected) + { + ToggleSongOptions(ESongOptionsView.None); + StartRandomAllSongs(); + } + else if (Buttons[htButtons(ButtonOptionsSingAllVisible)].Selected) + { + ToggleSongOptions(ESongOptionsView.None); + StartRandomVisibleSongs(); + } + else if (Buttons[htButtons(ButtonOptionsOpenPlaylist)].Selected) + { + OpenPlaylistAction(); + } } - } - else if (MouseEvent.LB && IsMouseOver(MouseEvent)) - { - if (Buttons[htButtons(ButtonOpenOptions)].Selected) + if (MouseEvent.RB) { - ToggleSongOptions(ESongOptionsView.General); + ToggleSongOptions(ESongOptionsView.None); } } } - else { - if (MouseEvent.LB && IsMouseOver(MouseEvent)) - { - if (Buttons[htButtons(ButtonOptionsClose)].Selected) - { - ToggleSongOptions(ESongOptionsView.None); - } - else if (Buttons[htButtons(ButtonOptionsSing)].Selected) - { - ToggleSongOptions(ESongOptionsView.None); - StartSong(SongMenus[htSongMenus(SongMenu)].GetSelectedSong()); - } - else if (Buttons[htButtons(ButtonOptionsPlaylist)].Selected) - { - OpenAndAddPlaylistAction(); - } - else if (Buttons[htButtons(ButtonOptionsRandom)].Selected) - { - if (CSongs.Category != -1) - { - SongMenus[htSongMenus(SongMenu)].SetSelectedSong(CSongs.GetRandomSong()); - } - } - else if (Buttons[htButtons(ButtonOptionsRandomCategory)].Selected) - { - if (CSongs.Category == -1) - { - SongMenus[htSongMenus(SongMenu)].SetSelectedCategory(CSongs.GetRandomCategory()); - } - } - else if (Buttons[htButtons(ButtonOptionsSingAll)].Selected) - { - ToggleSongOptions(ESongOptionsView.None); - StartRandomAllSongs(); - } - else if (Buttons[htButtons(ButtonOptionsSingAllVisible)].Selected) - { - ToggleSongOptions(ESongOptionsView.None); - StartRandomVisibleSongs(); - } - else if (Buttons[htButtons(ButtonOptionsOpenPlaylist)].Selected) - { - OpenPlaylistAction(); - } - } - if (MouseEvent.RB) - { - ToggleSongOptions(ESongOptionsView.None); - } + if(MouseEvent.RB || MouseEvent.LB) + SongMenus[htSongMenus(SongMenu)].ToggleVideoFull(); } return true;