More fixes for playlist handling
This commit is contained in:
1 parent
aa77d2d95c
commit
9e4a14985e
2 files changed
+47
-38
No files matched your search
@@ -80,7 +80,6 @@ namespace Vocaluxe.Screens
|
||||
private readonly List<string> _ButtonsJoker = new List<string>();
|
||||
private readonly List<string> _TextsPlayer = new List<string>();
|
||||
private ESongOptionsView _CurSongOptionsView;
|
||||
private bool _PlaylistActive;
|
||||
private readonly List<EGameMode> _AvailableGameModes;
|
||||
private SScreenSongOptions _Sso;
|
||||
|
||||
@@ -163,16 +162,26 @@ namespace Vocaluxe.Screens
|
||||
|
||||
public override bool HandleInput(SKeyEvent keyEvent)
|
||||
{
|
||||
if (_Playlist.Visible)
|
||||
{
|
||||
keyEvent.Handled = _Playlist.HandleInput(keyEvent);
|
||||
if (keyEvent.Handled)
|
||||
return true;
|
||||
if (!keyEvent.KeyPressed && keyEvent.Key == Keys.Escape)
|
||||
{
|
||||
_ClosePlaylist();
|
||||
keyEvent.Handled = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Playlist selection is handled below not in base!
|
||||
_Playlist.Selectable = false;
|
||||
base.HandleInput(keyEvent);
|
||||
_Playlist.Selectable = true;
|
||||
if (keyEvent.Handled)
|
||||
return true;
|
||||
|
||||
if (_PlaylistActive)
|
||||
{
|
||||
_Playlist.HandleInput(keyEvent);
|
||||
return true;
|
||||
}
|
||||
|
||||
if (_CurSongOptionsView == ESongOptionsView.None)
|
||||
{
|
||||
if (keyEvent.KeyPressed && !Char.IsControl(keyEvent.Unicode) && keyEvent.Mod != EModifier.Ctrl)
|
||||
@@ -233,9 +242,8 @@ namespace Vocaluxe.Screens
|
||||
case Keys.Tab:
|
||||
if (_Playlist.Visible)
|
||||
{
|
||||
_PlaylistActive = !_PlaylistActive;
|
||||
_Playlist.Selected = _PlaylistActive;
|
||||
_SongMenu.Selected = !_PlaylistActive;
|
||||
_Playlist.Selected = !_Playlist.Selected;
|
||||
_SongMenu.Selected = !_Playlist.Selected;
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -392,27 +400,18 @@ namespace Vocaluxe.Screens
|
||||
_OldMousePosX = mouseEvent.X;
|
||||
_OldMousePosY = mouseEvent.Y;
|
||||
|
||||
if (_Playlist.Visible && _Playlist.IsMouseOver(mouseEvent))
|
||||
if (_Playlist.Visible && _Playlist.Selected)
|
||||
{
|
||||
_PlaylistActive = true;
|
||||
_Playlist.Selected = _PlaylistActive;
|
||||
_SongMenu.Selected = !_PlaylistActive;
|
||||
_SongMenu.Selected = false;
|
||||
_ToggleSongOptions(ESongOptionsView.None);
|
||||
}
|
||||
else if (CHelper.IsInBounds(_SongMenu.Rect, mouseEvent))
|
||||
{
|
||||
_PlaylistActive = false;
|
||||
_Playlist.Selected = _PlaylistActive;
|
||||
_SongMenu.Selected = !_PlaylistActive;
|
||||
}
|
||||
|
||||
|
||||
if (_Playlist.Visible && _PlaylistActive)
|
||||
{
|
||||
if (_Playlist.HandleMouse(mouseEvent))
|
||||
return true;
|
||||
}
|
||||
|
||||
else if (CHelper.IsInBounds(_SongMenu.Rect, mouseEvent))
|
||||
{
|
||||
_Playlist.Selected = false;
|
||||
_SongMenu.Selected = true;
|
||||
}
|
||||
|
||||
if (mouseEvent.RB)
|
||||
{
|
||||
@@ -630,12 +629,12 @@ namespace Vocaluxe.Screens
|
||||
|
||||
if (_Sso.Selection.PartyMode)
|
||||
{
|
||||
_PlaylistActive = false;
|
||||
_ClosePlaylist();
|
||||
_ToggleSongOptions(ESongOptionsView.None);
|
||||
_SelectElement(_Buttons[_ButtonStart]);
|
||||
}
|
||||
|
||||
_SongMenu.Selected = !_PlaylistActive;
|
||||
_SongMenu.Selected = !_Playlist.Visible;
|
||||
_SongMenu.SmallView = _Playlist.Visible;
|
||||
|
||||
if (_Playlist.ActivePlaylistID != -1)
|
||||
@@ -660,7 +659,7 @@ namespace Vocaluxe.Screens
|
||||
|
||||
public override bool UpdateGame()
|
||||
{
|
||||
if (_PlaylistActive)
|
||||
if (_Playlist.Visible)
|
||||
{
|
||||
if (_Playlist.ActivePlaylistID == -1)
|
||||
_ClosePlaylist();
|
||||
@@ -1257,12 +1256,12 @@ namespace Vocaluxe.Screens
|
||||
|
||||
private void _ClosePlaylist()
|
||||
{
|
||||
if (_Playlist.Visible || _PlaylistActive)
|
||||
if (_Playlist.Visible)
|
||||
{
|
||||
_SongMenu.SmallView = false;
|
||||
_PlaylistActive = false;
|
||||
_Playlist.Selected = _PlaylistActive;
|
||||
_SongMenu.Selected = !_PlaylistActive;
|
||||
_Playlist.Visible = false;
|
||||
_Playlist.Selected = false;
|
||||
_SongMenu.Selected = false;
|
||||
_Playlist.ClosePlaylist();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -169,15 +169,16 @@ namespace VocaluxeLib.Menu
|
||||
private readonly CStatic _StaticPlaylistHeader;
|
||||
private readonly CStatic _StaticPlaylistFooter;
|
||||
|
||||
private bool _Selected;
|
||||
public SRectF Rect
|
||||
{
|
||||
get { return MaxRect; }
|
||||
}
|
||||
public SRectF MaxRect { get; set; }
|
||||
private bool _Selectable = true;
|
||||
public bool Selectable
|
||||
{
|
||||
get { return Visible; }
|
||||
get { return Visible && _Selectable; }
|
||||
set { _Selectable = value; }
|
||||
}
|
||||
public bool Visible
|
||||
{
|
||||
@@ -185,6 +186,7 @@ namespace VocaluxeLib.Menu
|
||||
set { _Active = value; }
|
||||
}
|
||||
public bool Highlighted { get; set; }
|
||||
private bool _Selected;
|
||||
public bool Selected
|
||||
{
|
||||
get { return _Selected; }
|
||||
@@ -204,6 +206,8 @@ namespace VocaluxeLib.Menu
|
||||
_ChangeOrderElement = null;
|
||||
_EditMode = EEditMode.None;
|
||||
}
|
||||
else if (_CurrentPlaylistElement == -1 && _PlaylistElements.Count > 0)
|
||||
_SelectElement(_PlaylistElements[0].SelectSlide);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -420,7 +424,7 @@ namespace VocaluxeLib.Menu
|
||||
public override bool HandleInput(SKeyEvent keyEvent)
|
||||
{
|
||||
if (!Selected)
|
||||
return true;
|
||||
return false;
|
||||
//Active EditMode ignores other input!
|
||||
if (_EditMode == EEditMode.PlaylistName)
|
||||
{
|
||||
@@ -446,6 +450,8 @@ namespace VocaluxeLib.Menu
|
||||
if (!String.IsNullOrEmpty(_ButtonPlaylistName.Text.Text))
|
||||
_ButtonPlaylistName.Text.Text = _ButtonPlaylistName.Text.Text.Remove(_ButtonPlaylistName.Text.Text.Length - 1);
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
@@ -453,10 +459,10 @@ namespace VocaluxeLib.Menu
|
||||
if (_CurrentPlaylistElement == -1 || _PlaylistElementContents.Count == 0)
|
||||
{
|
||||
//no song is selected
|
||||
base.HandleInput(keyEvent);
|
||||
bool handled = base.HandleInput(keyEvent);
|
||||
_CurrentPlaylistElement = _GetSelectedElementNr();
|
||||
|
||||
if (_CurrentPlaylistElement != -1)
|
||||
if (_CurrentPlaylistElement != -1 || handled)
|
||||
return true;
|
||||
}
|
||||
else if (_CurrentPlaylistElement != -1)
|
||||
@@ -669,6 +675,8 @@ namespace VocaluxeLib.Menu
|
||||
UpdatePlaylist();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -720,6 +728,8 @@ namespace VocaluxeLib.Menu
|
||||
case Keys.PageUp:
|
||||
_SetSelectionToFirstEntry();
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user