Fix: After deleting a playlist the playlist-selector is out of sync (maybe a fix for #209)

This commit is contained in:
lukeIam committed 2016-11-21 20:10:16 +01:00
1 parent 7f10165cb5
commit 4f990e6306
3 files changed
+40 -19

No files matched your search

+5
View File
@@ -42,6 +42,11 @@ namespace Vocaluxe.Base
get { return _Playlists.Select(t => t.Name).ToList(); } get { return _Playlists.Select(t => t.Name).ToList(); }
} }
public static List<int> Ids
{
get { return _Playlists.Select(t => t.Id).ToList(); }
}
public static int NumPlaylists public static int NumPlaylists
{ {
get { return _Playlists.Count; } get { return _Playlists.Count; }
+15 -15
View File
@@ -372,9 +372,9 @@ namespace Vocaluxe.Screens
else if (_Buttons[_ButtonOptionsOpenSelectedItem].Selected) else if (_Buttons[_ButtonOptionsOpenSelectedItem].Selected)
_HandleSelectButton(); _HandleSelectButton();
else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selected) else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selected)
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selection); _OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].SelectedTag);
else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selected) else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selected)
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1); _OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag);
else if (_Buttons[_ButtonOptionsRandomMedley].Selected) else if (_Buttons[_ButtonOptionsRandomMedley].Selected)
_ToggleSongOptions(ESongOptionsView.Medley); _ToggleSongOptions(ESongOptionsView.Medley);
else if (_Buttons[_ButtonOptionsStartMedley].Selected) else if (_Buttons[_ButtonOptionsStartMedley].Selected)
@@ -533,12 +533,12 @@ namespace Vocaluxe.Screens
} }
else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].IsValueSelected) else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].IsValueSelected)
{ {
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selection); _OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].SelectedTag);
return true; return true;
} }
else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].IsValueSelected) else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].IsValueSelected)
{ {
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1); _OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag);
return true; return true;
} }
else if (_Buttons[_ButtonOptionsRandomMedley].Selected) else if (_Buttons[_ButtonOptionsRandomMedley].Selected)
@@ -1279,16 +1279,16 @@ namespace Vocaluxe.Screens
private void _UpdatePlaylistNames() private void _UpdatePlaylistNames()
{ {
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Clear(); _SelectSlides[_SelectSlideOptionsPlaylistAdd].Clear();
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue("TR_SCREENSONG_NEWPLAYLIST"); _SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue("TR_SCREENSONG_NEWPLAYLIST", tag: -1);
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValues(CPlaylists.Names); _SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValues(CPlaylists.Names, CPlaylists.Ids);
_SelectSlides[_SelectSlideOptionsPlaylistOpen].Clear(); _SelectSlides[_SelectSlideOptionsPlaylistOpen].Clear();
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValues(CPlaylists.Names); _SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValues(CPlaylists.Names, CPlaylists.Ids);
} }
private void _OpenAndAddPlaylistAction() private void _OpenAndAddPlaylistAction()
{ {
if (_Playlist.ActivePlaylistID != (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) && if (_Playlist.ActivePlaylistID != (_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) &&
(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) != -1) (_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) != -1)
{ {
//Open an existing playlist and add song //Open an existing playlist and add song
//Check selected game-mode //Check selected game-mode
@@ -1301,9 +1301,9 @@ namespace Vocaluxe.Screens
gm = EGameMode.TR_GAMEMODE_NORMAL; gm = EGameMode.TR_GAMEMODE_NORMAL;
//Check if Playlist really exists //Check if Playlist really exists
if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1 >= 0) if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag >= 0)
{ {
_Playlist.ActivePlaylistID = _SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1; _Playlist.ActivePlaylistID = _SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag;
//Add song to playlist //Add song to playlist
CPlaylists.AddSong(_Playlist.ActivePlaylistID, CSongs.VisibleSongs[_SongMenu.GetPreviewSongNr()].ID, gm); CPlaylists.AddSong(_Playlist.ActivePlaylistID, CSongs.VisibleSongs[_SongMenu.GetPreviewSongNr()].ID, gm);
@@ -1314,7 +1314,7 @@ namespace Vocaluxe.Screens
_Playlist.ScrollToBottom(); _Playlist.ScrollToBottom();
} }
} }
else if ((_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) == -1) else if ((_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) == -1)
{ {
//Create a new playlist and add song //Create a new playlist and add song
//Check selected game-mode //Check selected game-mode
@@ -1336,8 +1336,8 @@ namespace Vocaluxe.Screens
_OpenPlaylist(_Playlist.ActivePlaylistID); _OpenPlaylist(_Playlist.ActivePlaylistID);
//Add new playlist to select-slide //Add new playlist to select-slide
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID)); _SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID), _Playlist.ActivePlaylistID);
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID)); _SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID), _Playlist.ActivePlaylistID);
} }
else else
{ {
@@ -1359,7 +1359,7 @@ namespace Vocaluxe.Screens
private void _SetSelectSlidePlaylistToCurrentPlaylist() private void _SetSelectSlidePlaylistToCurrentPlaylist()
{ {
if (_Playlist.ActivePlaylistID > -1) if (_Playlist.ActivePlaylistID > -1)
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection = _Playlist.ActivePlaylistID + 1; _SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag = _Playlist.ActivePlaylistID;
else else
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection = 0; _SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection = 0;
} }
+20 -4
View File
@@ -436,6 +436,22 @@ namespace VocaluxeLib.Menu
AddValue(value); AddValue(value);
} }
public void AddValues(IEnumerable<string> values, IEnumerable<int> tags)
{
using (var e1 = values.GetEnumerator())
using (var e2 = tags.GetEnumerator())
{
while (e1.MoveNext() && e2.MoveNext())
{
AddValue(e1.Current, tag: e2.Current);
}
if (e1.MoveNext() || e2.MoveNext())
{
throw new ArgumentException("the lists must have the same length");
}
}
}
public void AddValues(string[] values, CTextureRef[] textures) public void AddValues(string[] values, CTextureRef[] textures)
{ {
Debug.Assert(values.Length == textures.Length); Debug.Assert(values.Length == textures.Length);
@@ -566,10 +582,10 @@ namespace VocaluxeLib.Menu
for (int i = 0; i < numvis; i++) for (int i = 0; i < numvis; i++)
{ {
var el = new CElement var el = new CElement
{ {
Text = new CText(0, 0, 0, _TextH, _MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, _TextColor, "T", _PartyModeID), Text = new CText(0, 0, 0, _TextH, _MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, _TextColor, "T", _PartyModeID),
Img = new CStatic(_PartyModeID) Img = new CStatic(_PartyModeID)
}; };
_VisibleElements.Add(el); _VisibleElements.Add(el);
} }
} }