From 0b0f0caf546805f3f6f0bae32f9b864ab45fdb38 Mon Sep 17 00:00:00 2001 From: Alexander Eckart Date: Sun, 2 Dec 2012 14:20:09 +0100 Subject: [PATCH 1/2] fixed playlist keyboard handling --- Vocaluxe/Lib/Playlist/CPlaylistFile.cs | 6 +- Vocaluxe/Menu/CButton.cs | 14 +- Vocaluxe/Menu/CPlaylist.cs | 516 +++++++++++++------------ Vocaluxe/Menu/CText.cs | 30 +- Vocaluxe/Screens/CScreenSong.cs | 12 +- 5 files changed, 325 insertions(+), 253 deletions(-) diff --git a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs index 0bef3b65..79588ef1 100644 --- a/Vocaluxe/Lib/Playlist/CPlaylistFile.cs +++ b/Vocaluxe/Lib/Playlist/CPlaylistFile.cs @@ -234,7 +234,7 @@ namespace Vocaluxe.Lib.Playlist Songs.RemoveAt(SongNr); } - public void SongDown(int SongNr) + public void SongUp(int SongNr) { if (SongNr != 0) { @@ -242,9 +242,9 @@ namespace Vocaluxe.Lib.Playlist } } - public void SongUp(int SongNr) + public void SongDown(int SongNr) { - if (SongNr + 1 < Songs.Count) + if (SongNr < Songs.Count - 1) { Songs.Reverse(SongNr, 2); } diff --git a/Vocaluxe/Menu/CButton.cs b/Vocaluxe/Menu/CButton.cs index b25c6482..2e018ffa 100644 --- a/Vocaluxe/Menu/CButton.cs +++ b/Vocaluxe/Menu/CButton.cs @@ -42,8 +42,19 @@ namespace Vocaluxe.Menu public float SReflectionSpace; public float SReflectionHeight; - private bool _Selected; public bool Pressed; + + public bool EditMode + { + get { return Text.EditMode; } + set + { + Text.EditMode = value; + SText.EditMode = value; + } + } + + private bool _Selected; public bool Selected { get { return _Selected; } @@ -72,6 +83,7 @@ namespace Vocaluxe.Menu SText = new CText(); Selected = false; Visible = true; + EditMode = false; Reflection = false; ReflectionSpace = 0f; diff --git a/Vocaluxe/Menu/CPlaylist.cs b/Vocaluxe/Menu/CPlaylist.cs index 96d90907..0e926d45 100644 --- a/Vocaluxe/Menu/CPlaylist.cs +++ b/Vocaluxe/Menu/CPlaylist.cs @@ -96,7 +96,6 @@ namespace Vocaluxe.Menu if (CurrentPlaylistElement == -1 && _Selected && PlaylistElementContents.Count > 0) { CurrentPlaylistElement = 0; - ActiveHover = CurrentPlaylistElement; } } } @@ -104,7 +103,6 @@ namespace Vocaluxe.Menu public EEditMode _EditMode; public int ActivePlaylistID = -1; public int Offset = 0; - public int ActiveHover = -1; public int CurrentPlaylistElement = -1; public CPlaylist() @@ -203,6 +201,7 @@ namespace Vocaluxe.Menu if (_ThemeLoaded) { _Theme.Name = ElementName; + //Check for highest x/y-coords CompleteRect = Rect; //ButtonPlaylistClose @@ -345,7 +344,7 @@ namespace Vocaluxe.Menu for (int i = 0; i < PlaylistElements.Count; i++ ) { - if (i == ActiveHover && _Selected) + if (i == CurrentPlaylistElement && _Selected) { PlaylistElements[i].Background.Texture = CTheme.GetSkinTexture(_Theme.STextureBackgroundName); PlaylistElements[i].Background.Color = BackgroundSColor; @@ -390,17 +389,6 @@ namespace Vocaluxe.Menu { if (Selected) { - int PrevPlaylistElement = CurrentPlaylistElement; - int CurrPlaylistElement = -1; - //_Interactions.HandleInput(KeyEvent); - - for (int i = 0; i < PlaylistElements.Count; i++) - { - //Hover for playlist-element - if (PlaylistElementContents.Count - 1 >= i && PlaylistElements[i].SelectSlide.Selected) - CurrPlaylistElement = i; - } - //Active EditMode ignores other input! if (_EditMode == EEditMode.PlaylistName) { @@ -413,252 +401,294 @@ namespace Vocaluxe.Menu CPlaylists.Playlists[ActivePlaylistID].PlaylistName = _Theme.ButtonPlaylistName.Text.Text; CPlaylists.Playlists[ActivePlaylistID].SavePlaylist(); _EditMode = EEditMode.None; + _Theme.ButtonPlaylistName.EditMode = false; } else if (KeyEvent.Key == Keys.Escape) { _Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName; _EditMode = EEditMode.None; + _Theme.ButtonPlaylistName.EditMode = false; } else if (KeyEvent.Key == Keys.Back || KeyEvent.Key == Keys.Delete) { if (_Theme.ButtonPlaylistName.Text.Text.Length > 0) _Theme.ButtonPlaylistName.Text.Text = _Theme.ButtonPlaylistName.Text.Text.Remove(_Theme.ButtonPlaylistName.Text.Text.Length - 1); } - } else { - switch (KeyEvent.Key) + if (CurrentPlaylistElement == -1 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT) //no song is selected { - case Keys.Up: - if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) - { - _Interactions.HandleInput(KeyEvent); - SetSelectionToLastEntry(); - return true; - } - else if (CurrentPlaylistElement == 0 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT) - { - CurrentPlaylistElement = -1; - ActiveHover = CurrentPlaylistElement; - _Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide); - _Interactions.HandleInput(KeyEvent); + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); - int selection = GetSelectedSelectionNr(); - if (selection != -1 && PlaylistElementContents.Count > selection) + if (CurrentPlaylistElement != -1) + return true; + } + else if (CurrentPlaylistElement != -1) //a song is selected + { + int ScrollLimit = PlaylistElements.Count / 2; + + //special actions if a song is selected + switch (KeyEvent.Key) + { + case Keys.Up: + if (KeyEvent.ModSHIFT) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; + _Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide); + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); } - return true; - } - else if (CurrentPlaylistElement - 1 > 0) - { - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - _Interactions.HandleInput(KeyEvent); - - int selection = GetSelectedSelectionNr(); - - if (selection != -1 && PlaylistElementContents.Count > selection) + else if (CurrentPlaylistElement > ScrollLimit || PlaylistElementContents.Count == 0) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); } - return true; - } - else if (CurrentPlaylistElement - 1 == 0) - { - if (Offset > 0) + else if (CurrentPlaylistElement <= ScrollLimit) { - Offset--; - Update(); + if (Offset > 0) + { + Offset--; + Update(); + } + else + { + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } } + break; - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - _Interactions.HandleInput(KeyEvent); - - int selection = GetSelectedSelectionNr(); - if (selection != -1 && PlaylistElementContents.Count > selection) + case Keys.Down: + if (KeyEvent.ModSHIFT) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; + for (int i = PlaylistElements.Count - 1; i >= 0; i--) + { + if (PlaylistElements[i].SelectSlide.Visible) + { + _Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide); + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } + } } - - return true; - } - return false; - - case Keys.Down: - if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) - { - _Interactions.HandleInput(KeyEvent); - SetSelectionToFirstEntry(); - return true; - } - else if (CurrentPlaylistElement == PlaylistElements.Count - 1 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT) - { - CurrentPlaylistElement = -1; - ActiveHover = CurrentPlaylistElement; - - int sel = PlaylistElementContents.Count - 1; - if (sel > PlaylistElements.Count - 1) - sel = PlaylistElements.Count - 1; - - _Interactions.SetInteractionToSelectSlide(PlaylistElements[sel].SelectSlide); - _Interactions.HandleInput(KeyEvent); - - int selection = GetSelectedSelectionNr(); - if (selection != -1 && PlaylistElementContents.Count > selection) + else if (CurrentPlaylistElement >= ScrollLimit) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; + if (Offset < PlaylistElementContents.Count - PlaylistElements.Count) + { + Offset++; + Update(); + } + else + { + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } } - return true; - } - else if (CurrentPlaylistElement + 1 < PlaylistElements.Count - 1) - { - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - _Interactions.HandleInput(KeyEvent); - - int selection = GetSelectedSelectionNr(); - - if (selection != -1 && PlaylistElementContents.Count > selection) + else if (CurrentPlaylistElement < ScrollLimit) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; - } - return true; - } - else if (CurrentPlaylistElement + 1 >= PlaylistElements.Count - 1 && CurrentPlaylistElement + Offset + 1 < PlaylistElementContents.Count) - { - if (PlaylistElementContents[CurrentPlaylistElement + Offset + 1].SongID != -1) - { - Offset++; - Update(); + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); } + break; - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - _Interactions.HandleInput(KeyEvent); - - int selection = GetSelectedSelectionNr(); - if (selection != -1 && PlaylistElementContents.Count > selection) - { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; - } - - return true; - } - return false; - - case Keys.Delete: - if (CurrentPlaylistElement != -1) - { + case Keys.Delete: CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[CurrentPlaylistElement].Content); UpdatePlaylist(); + + if (Offset > 0) + Offset--; + + Update(); + + if (PlaylistElementContents.Count - 1 < CurrentPlaylistElement) + { + CurrentPlaylistElement = PlaylistElementContents.Count - 1; + } + if (CurrentPlaylistElement != -1) _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - return true; - } - return false; + break; + case Keys.Back: + ClosePlaylist(); //really? or better global? + break; + + case Keys.Enter: + StartPlaylistSongs(); + break; + + case Keys.Add: //move the selected song up + if (PlaylistElementContents.Count > 1 && (CurrentPlaylistElement > 0 || Offset > 0)) + { + CPlaylists.Playlists[ActivePlaylistID].SongUp(CurrentPlaylistElement + Offset); + UpdatePlaylist(); + + KeyEvent key = new KeyEvent(); + key.Key = Keys.Up; + + if (CurrentPlaylistElement > ScrollLimit) + { + _Interactions.HandleInput(key); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } + else if (CurrentPlaylistElement <= ScrollLimit) + { + if (Offset > 0) + { + Offset--; + Update(); + } + else + { + _Interactions.HandleInput(key); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } + } + } + break; + + case Keys.Subtract: //move the selected song down + if (PlaylistElementContents.Count > 1 && CurrentPlaylistElement + Offset < PlaylistElementContents.Count - 1) + { + CPlaylists.Playlists[ActivePlaylistID].SongDown(CurrentPlaylistElement + Offset); + UpdatePlaylist(); + + KeyEvent key = new KeyEvent(); + key.Key = Keys.Down; + + if (CurrentPlaylistElement >= ScrollLimit) + { + if (Offset < PlaylistElementContents.Count - PlaylistElements.Count) + { + Offset++; + Update(); + } + else + { + _Interactions.HandleInput(key); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } + } + else if (CurrentPlaylistElement < ScrollLimit) + { + _Interactions.HandleInput(key); + CurrentPlaylistElement = GetSelectedSelectionNr(); + } + } + break; + + case Keys.PageUp: //scroll up + if (PlaylistElementContents.Count > 0) + { + Offset -= PlaylistElements.Count; + + if (Offset < 0) + Offset = 0; + + Update(); + CurrentPlaylistElement = 0; + } + break; + + case Keys.PageDown: //scroll down + if (PlaylistElementContents.Count > 0) + { + Offset += PlaylistElements.Count; + + if (Offset > PlaylistElementContents.Count - PlaylistElements.Count) + Offset = PlaylistElementContents.Count - PlaylistElements.Count; + + if (Offset < 0) + Offset = 0; + + Update(); + + for (int i = PlaylistElements.Count - 1; i >= 0; i--) + { + if (PlaylistElements[i].SelectSlide.Visible) + { + CurrentPlaylistElement = i; + break; + } + } + } + break; + + case Keys.Left: + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); + + if (CurrentPlaylistElement != -1) + { + CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection]; + UpdatePlaylist(); + } + break; + + case Keys.Right: + _Interactions.HandleInput(KeyEvent); + CurrentPlaylistElement = GetSelectedSelectionNr(); + + if (CurrentPlaylistElement != -1) + { + CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection]; + UpdatePlaylist(); + } + break; + } + return true; + } + + //default actions + switch (KeyEvent.Key) + { case Keys.Back: - ClosePlaylist(); + if (_Theme.ButtonPlaylistName.Selected) + { + _EditMode = EEditMode.PlaylistName; + _Theme.ButtonPlaylistName.EditMode = true; + } + else + ClosePlaylist(); break; case Keys.Enter: - if (KeyEvent.ModSHIFT) + if (_Theme.ButtonPlaylistClose.Selected) + { + ClosePlaylist(); + } + else if (_Theme.ButtonPlaylistSing.Selected) + { StartPlaylistSongs(); - else + } + else if (_Theme.ButtonPlaylistSave.Selected) { - if (_Theme.ButtonPlaylistClose.Selected) + CPlaylists.SavePlaylist(ActivePlaylistID); + } + else if (_Theme.ButtonPlaylistDelete.Selected) + { + CPlaylists.DeletePlaylist(ActivePlaylistID); + ClosePlaylist(); + } + else if (_Theme.ButtonPlaylistName.Selected) + { + if (_EditMode != EEditMode.PlaylistName) { - ClosePlaylist(); + _EditMode = EEditMode.PlaylistName; + _Theme.ButtonPlaylistName.EditMode = true; } - else if (_Theme.ButtonPlaylistSing.Selected) + else { - StartPlaylistSongs(); - } - else if (_Theme.ButtonPlaylistSave.Selected) - { - CPlaylists.SavePlaylist(ActivePlaylistID); - } - else if (_Theme.ButtonPlaylistDelete.Selected) - { - CPlaylists.DeletePlaylist(ActivePlaylistID); - ClosePlaylist(); - } - else if (_Theme.ButtonPlaylistName.Selected) - { - if (_EditMode != EEditMode.PlaylistName) - _EditMode = EEditMode.PlaylistName; - else - _EditMode = EEditMode.None; + _EditMode = EEditMode.None; + _Theme.ButtonPlaylistName.EditMode = false; } } break; - - case Keys.PageUp: - if (CurrentPlaylistElement != -1) - { - CPlaylists.Playlists[ActivePlaylistID].SongDown(CurrentPlaylistElement + Offset); - if (CurrentPlaylistElement - 1 > -1) - { - CurrentPlaylistElement--; - ActiveHover = CurrentPlaylistElement; - } - else if (Offset > 0) - { - Offset--; - } - UpdatePlaylist(); - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - return true; - } - break; - - case Keys.PageDown: - if (CurrentPlaylistElement != -1) - { - CPlaylists.Playlists[ActivePlaylistID].SongUp(CurrentPlaylistElement + Offset); - if (CurrentPlaylistElement + 1 < PlaylistElements.Count) - { - CurrentPlaylistElement++; - ActiveHover = CurrentPlaylistElement; - } - else if (Offset + CurrentPlaylistElement < PlaylistElementContents.Count) - { - Offset++; - } - UpdatePlaylist(); - _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); - return true; - } - break; - - case Keys.Left: - _Interactions.HandleInput(KeyEvent); - if (CurrentPlaylistElement != -1) - { - CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection]; - UpdatePlaylist(); - return true; - } - return false; - - case Keys.Right: - _Interactions.HandleInput(KeyEvent); - if (CurrentPlaylistElement != -1) - { - CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection]; - UpdatePlaylist(); - return true; - } - return false; } } } - return false; + return true; } private void SetSelectionToLastEntry() @@ -666,21 +696,21 @@ namespace Vocaluxe.Menu if (PlaylistElementContents.Count == 0) return; - int selection = GetSelectedSelectionNr(); - if (selection == -1) - return; - int off = PlaylistElementContents.Count - PlaylistElements.Count; if (off >= 0) - { Offset = off; - Update(); - } + else + Offset = 0; - if (PlaylistElementContents.Count > selection) + Update(); + + for (int i = PlaylistElements.Count - 1; i >= 0; i--) { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; + if (PlaylistElements[i].SelectSlide.Visible) + { + CurrentPlaylistElement = i; + return; + } } } @@ -689,18 +719,10 @@ namespace Vocaluxe.Menu if (PlaylistElementContents.Count == 0) return; - int selection = GetSelectedSelectionNr(); - if (selection == -1) - return; - Offset = 0; Update(); - if (PlaylistElementContents.Count > selection) - { - CurrentPlaylistElement = selection; - ActiveHover = CurrentPlaylistElement; - } + CurrentPlaylistElement = 0; } private int GetSelectedSelectionNr() @@ -713,6 +735,20 @@ namespace Vocaluxe.Menu return -1; } + public void ScrollToBottom() + { + if (PlaylistElementContents.Count == 0) + return; + + int off = PlaylistElementContents.Count - PlaylistElements.Count; + if (off >= 0) + Offset = off; + else + Offset = 0; + + Update(); + } + public bool HandleMouse(MouseEvent MouseEvent) { _Interactions.HandleMouse(MouseEvent); @@ -742,6 +778,7 @@ namespace Vocaluxe.Menu Update(); return true; } + return true; } //LB actions if (MouseEvent.LB) @@ -775,6 +812,7 @@ namespace Vocaluxe.Menu else if (_Theme.ButtonPlaylistName.Selected) { _EditMode = EEditMode.PlaylistName; + _Theme.ButtonPlaylistName.EditMode = true; return true; } } @@ -786,8 +824,8 @@ namespace Vocaluxe.Menu if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent)) { hover_set = true; - ActiveHover = i; CurrentPlaylistElement = i; + _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide); } //Delete Entry with RB @@ -800,14 +838,12 @@ namespace Vocaluxe.Menu } if(!hover_set) { - ActiveHover = -1; CurrentPlaylistElement = -1; } break; case EEditMode.PlaylistName: _Interactions.SetInteractionToButton(_Theme.ButtonPlaylistName); - ActiveHover = -1; CurrentPlaylistElement = -1; if (MouseEvent.LB) { @@ -825,6 +861,7 @@ namespace Vocaluxe.Menu { _Theme.ButtonPlaylistName.Text.Text = CPlaylists.Playlists[ActivePlaylistID].PlaylistName; _EditMode = EEditMode.None; + _Theme.ButtonPlaylistName.EditMode = false; return true; } } @@ -917,12 +954,8 @@ namespace Vocaluxe.Menu pec.Mode = CPlaylists.Playlists[ActivePlaylistID].Songs[i].GameMode; PlaylistElementContents.Add(pec); } + Update(); - if (PlaylistElementContents.Count - 1 < ActiveHover || PlaylistElementContents.Count - 1 < CurrentPlaylistElement) - { - ActiveHover = PlaylistElementContents.Count - 1; - CurrentPlaylistElement = PlaylistElementContents.Count - 1; - } } private void StartPlaylistSongs() @@ -952,21 +985,20 @@ namespace Vocaluxe.Menu { if (ActivePlaylistID > -1 && ActivePlaylistID < CPlaylists.NumPlaylists) { - int e = 0 + Offset; for (int i = 0; i < PlaylistElements.Count; i++ ) { - if (e + i < PlaylistElementContents.Count) + if (Offset + i < PlaylistElementContents.Count) { - PlaylistElements[i].Content = e+i; + PlaylistElements[i].Content = Offset + i; PlaylistElements[i].Background.Visible = true; PlaylistElements[i].Cover.Visible = true; PlaylistElements[i].SelectSlide.Visible = true; PlaylistElements[i].Text1.Visible = true; - PlaylistElementContent pec = PlaylistElementContents[e + i]; + PlaylistElementContent pec = PlaylistElementContents[Offset + i]; CSong song = CSongs.GetSong(pec.SongID); PlaylistElements[i].Cover.Texture = song.CoverTextureSmall; string t1 = _Theme.Text1.Text.Replace("%a", song.Artist).Replace("%t", song.Title); - PlaylistElements[i].Text1.Text = song.Artist + " - " + song.Title; + PlaylistElements[i].Text1.Text = /*(Offset + i + 1).ToString() + ") " + */song.Artist + " - " + song.Title; //TODO: Add text field for the number PlaylistElements[i].SelectSlide.Clear(); for (int g = 0; g < pec.Modes.Length; g++) { diff --git a/Vocaluxe/Menu/CText.cs b/Vocaluxe/Menu/CText.cs index 4482308f..c1ccb39a 100644 --- a/Vocaluxe/Menu/CText.cs +++ b/Vocaluxe/Menu/CText.cs @@ -217,6 +217,7 @@ namespace Vocaluxe.Menu public bool Selected; public bool Visible = true; + public bool EditMode = false; public float Alpha = 1f; @@ -602,8 +603,10 @@ namespace Vocaluxe.Menu SColorF color = new SColorF(CurrentColor.R, CurrentColor.G, CurrentColor.B, CurrentColor.A * Alpha); - - CFonts.DrawText(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color); + if (!EditMode) + CFonts.DrawText(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color); + else + CFonts.DrawText(_Text + "|", _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color); if (Reflection) { @@ -622,7 +625,10 @@ namespace Vocaluxe.Menu default: break; } - CFonts.DrawTextReflection(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight); + if (!EditMode) + CFonts.DrawTextReflection(_Text, _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight); + else + CFonts.DrawTextReflection(_Text + "|", _DrawPosition.tH, _DrawPosition.X, _DrawPosition.Y, Z, color, ReflectionSpace + sFactor, ReflectionHeight); } if (Selected && (CSettings.GameState == EGameState.EditTheme)) @@ -659,7 +665,11 @@ namespace Vocaluxe.Menu CFonts.SetFont(Fon); CFonts.Style = Style; - CFonts.DrawText(Text, Height, x, Y, Z, color, begin, end); + + if (!EditMode) + CFonts.DrawText(Text, Height, x, Y, Z, color, begin, end); + else + CFonts.DrawText(Text + "|", Height, x, Y, Z, color, begin, end); if (Reflection) { @@ -738,13 +748,21 @@ namespace Vocaluxe.Menu CFonts.SetFont(Fon); CFonts.Style = Style; - CFonts.DrawText(_Text, h, x, y, Z, color); + + if (!EditMode) + CFonts.DrawText(_Text, h, x, y, Z, color); + else + CFonts.DrawText(_Text + "|", h, x, y, Z, color); if (reflection) { float space = (rectHeight - Y - bounds.Height) * 2f + reflectionSpace; float height = reflectionHeight - (rectHeight - Y) + bounds.Height; - CFonts.DrawTextReflection(_Text, h, x, y, Z, color, space, height); + + if (!EditMode) + CFonts.DrawTextReflection(_Text, h, x, y, Z, color, space, height); + else + CFonts.DrawTextReflection(_Text + "|", h, x, y, Z, color, space, height); } if (Selected && (CSettings.GameState == EGameState.EditTheme)) diff --git a/Vocaluxe/Screens/CScreenSong.cs b/Vocaluxe/Screens/CScreenSong.cs index f5809c12..37f110f6 100644 --- a/Vocaluxe/Screens/CScreenSong.cs +++ b/Vocaluxe/Screens/CScreenSong.cs @@ -316,7 +316,6 @@ namespace Vocaluxe.Screens if (MouseEvent.MB && CSongs.Category != -1) { - Console.WriteLine("MB pressed"); SongMenus[htSongMenus(SongMenu)].SetSelectedSong(CSongs.GetRandomSong()); } else @@ -713,8 +712,11 @@ namespace Vocaluxe.Screens if (Playlists[htPlaylists(Playlist)].ActivePlaylistID != (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistOpen)].Selection)) { Playlists[htPlaylists(Playlist)].ActivePlaylistID = SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistOpen)].Selection; + SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection = SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistOpen)].Selection + 1; + //Open playlist OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID); + Playlists[htPlaylists(Playlist)].ScrollToBottom(); } ToggleSongOptions(ESongOptionsView.None); } @@ -733,13 +735,16 @@ namespace Vocaluxe.Screens gm = GameModes.EGameMode.TR_GAMEMODE_DUET; else gm = GameModes.EGameMode.TR_GAMEMODE_NORMAL; + //Check if Playlist really exists if (SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1 < 0) Playlists[htPlaylists(Playlist)].ActivePlaylistID = CPlaylists.NewPlaylist(); else Playlists[htPlaylists(Playlist)].ActivePlaylistID = SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].Selection - 1; + //Add song to playlist CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].AddSong(CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].ID, gm); + //Open playlist OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID); } @@ -755,12 +760,16 @@ namespace Vocaluxe.Screens gm = GameModes.EGameMode.TR_GAMEMODE_DUET; else gm = GameModes.EGameMode.TR_GAMEMODE_NORMAL; + //Create new playlist Playlists[htPlaylists(Playlist)].ActivePlaylistID = CPlaylists.NewPlaylist(); + //Add song to playlist CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].AddSong(CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].ID, gm); + //Open playlist OpenPlaylist(Playlists[htPlaylists(Playlist)].ActivePlaylistID); + //Add new playlist to select-slide SelectSlides[htSelectSlides(SelectSlideOptionsPlaylistAdd)].AddValue(CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].PlaylistName); @@ -779,6 +788,7 @@ namespace Vocaluxe.Screens gm = GameModes.EGameMode.TR_GAMEMODE_NORMAL; CPlaylists.Playlists[Playlists[htPlaylists(Playlist)].ActivePlaylistID].AddSong(CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].ID, gm); Playlists[htPlaylists(Playlist)].UpdatePlaylist(); + Playlists[htPlaylists(Playlist)].ScrollToBottom(); } ToggleSongOptions(ESongOptionsView.Song); } From 0c1a60196861bec6d21fde2e1f12cc0559507b88 Mon Sep 17 00:00:00 2001 From: Alexander Eckart Date: Sun, 2 Dec 2012 14:32:19 +0100 Subject: [PATCH 2/2] small adjustment in screen song theme for better keyboard navigation in playlist --- Output/Themes/Ambient/Screens/ScreenSong.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Output/Themes/Ambient/Screens/ScreenSong.xml b/Output/Themes/Ambient/Screens/ScreenSong.xml index 3d744951..dfe2d5a7 100644 --- a/Output/Themes/Ambient/Screens/ScreenSong.xml +++ b/Output/Themes/Ambient/Screens/ScreenSong.xml @@ -1162,10 +1162,10 @@ SelectSlide - 54 + 0 28 -1,01 - 235 + 343 24 54