Fix: After deleting a playlist the playlist-selector is out of sync (maybe a fix for #209)
This commit is contained in:
1 parent
7f10165cb5
commit
4f990e6306
3 files changed
+40
-19
No files matched your search
@@ -42,6 +42,11 @@ namespace Vocaluxe.Base
|
||||
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
|
||||
{
|
||||
get { return _Playlists.Count; }
|
||||
|
||||
@@ -372,9 +372,9 @@ namespace Vocaluxe.Screens
|
||||
else if (_Buttons[_ButtonOptionsOpenSelectedItem].Selected)
|
||||
_HandleSelectButton();
|
||||
else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selected)
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selection);
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].SelectedTag);
|
||||
else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selected)
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1);
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag);
|
||||
else if (_Buttons[_ButtonOptionsRandomMedley].Selected)
|
||||
_ToggleSongOptions(ESongOptionsView.Medley);
|
||||
else if (_Buttons[_ButtonOptionsStartMedley].Selected)
|
||||
@@ -533,12 +533,12 @@ namespace Vocaluxe.Screens
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideOptionsPlaylistOpen].IsValueSelected)
|
||||
{
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].Selection);
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistOpen].SelectedTag);
|
||||
return true;
|
||||
}
|
||||
else if (_SelectSlides[_SelectSlideOptionsPlaylistAdd].IsValueSelected)
|
||||
{
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1);
|
||||
_OpenPlaylist(_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag);
|
||||
return true;
|
||||
}
|
||||
else if (_Buttons[_ButtonOptionsRandomMedley].Selected)
|
||||
@@ -1279,16 +1279,16 @@ namespace Vocaluxe.Screens
|
||||
private void _UpdatePlaylistNames()
|
||||
{
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Clear();
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue("TR_SCREENSONG_NEWPLAYLIST");
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValues(CPlaylists.Names);
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue("TR_SCREENSONG_NEWPLAYLIST", tag: -1);
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValues(CPlaylists.Names, CPlaylists.Ids);
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistOpen].Clear();
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValues(CPlaylists.Names);
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValues(CPlaylists.Names, CPlaylists.Ids);
|
||||
}
|
||||
|
||||
private void _OpenAndAddPlaylistAction()
|
||||
{
|
||||
if (_Playlist.ActivePlaylistID != (_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) &&
|
||||
(_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) != -1)
|
||||
if (_Playlist.ActivePlaylistID != (_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) &&
|
||||
(_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) != -1)
|
||||
{
|
||||
//Open an existing playlist and add song
|
||||
//Check selected game-mode
|
||||
@@ -1301,9 +1301,9 @@ namespace Vocaluxe.Screens
|
||||
gm = EGameMode.TR_GAMEMODE_NORMAL;
|
||||
|
||||
//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
|
||||
CPlaylists.AddSong(_Playlist.ActivePlaylistID, CSongs.VisibleSongs[_SongMenu.GetPreviewSongNr()].ID, gm);
|
||||
@@ -1314,7 +1314,7 @@ namespace Vocaluxe.Screens
|
||||
_Playlist.ScrollToBottom();
|
||||
}
|
||||
}
|
||||
else if ((_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection - 1) == -1)
|
||||
else if ((_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag) == -1)
|
||||
{
|
||||
//Create a new playlist and add song
|
||||
//Check selected game-mode
|
||||
@@ -1336,8 +1336,8 @@ namespace Vocaluxe.Screens
|
||||
_OpenPlaylist(_Playlist.ActivePlaylistID);
|
||||
|
||||
//Add new playlist to select-slide
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID));
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID));
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID), _Playlist.ActivePlaylistID);
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistOpen].AddValue(CPlaylists.GetName(_Playlist.ActivePlaylistID), _Playlist.ActivePlaylistID);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -1359,7 +1359,7 @@ namespace Vocaluxe.Screens
|
||||
private void _SetSelectSlidePlaylistToCurrentPlaylist()
|
||||
{
|
||||
if (_Playlist.ActivePlaylistID > -1)
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection = _Playlist.ActivePlaylistID + 1;
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].SelectedTag = _Playlist.ActivePlaylistID;
|
||||
else
|
||||
_SelectSlides[_SelectSlideOptionsPlaylistAdd].Selection = 0;
|
||||
}
|
||||
|
||||
@@ -436,6 +436,22 @@ namespace VocaluxeLib.Menu
|
||||
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)
|
||||
{
|
||||
Debug.Assert(values.Length == textures.Length);
|
||||
@@ -566,10 +582,10 @@ namespace VocaluxeLib.Menu
|
||||
for (int i = 0; i < numvis; i++)
|
||||
{
|
||||
var el = new CElement
|
||||
{
|
||||
Text = new CText(0, 0, 0, _TextH, _MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, _TextColor, "T", _PartyModeID),
|
||||
Img = new CStatic(_PartyModeID)
|
||||
};
|
||||
{
|
||||
Text = new CText(0, 0, 0, _TextH, _MaxW, EAlignment.Center, _Theme.TextStyle, _Theme.TextFont, _TextColor, "T", _PartyModeID),
|
||||
Img = new CStatic(_PartyModeID)
|
||||
};
|
||||
_VisibleElements.Add(el);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user