From: Md. Shahrukh Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics Date: Fri, 27 Sep 2024 09:51:50 +0000 (+0600) Subject: Fixed Same track added multiple times in a playlist X-Git-Tag: accepted/tizen/unified/20241006.053314~3 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=202f6ac73a4d1369706cf7fbc0cffbb0c3177a37;p=profile%2Fiot%2Fapps%2Fdotnet%2Fmusic-player.git Fixed Same track added multiple times in a playlist [Problem] [TNINE-4666] Same track added multiple times in a playlist [Cause & Measure] Cause : Track was not checked if existed or not in playlist. Measure : Before adding track is not checked if it is existing in that playlist or not. Change-Id: Ib123371df2e377220bb236f1bffd34c9d8b221f6 Signed-off-by: Md. Shahrukh Islam/NC eXperience Group /SRBD/Engineer/Samsung Electronics --- diff --git a/music-player/ViewModels/PlaylistSelectorViewModel.cs b/music-player/ViewModels/PlaylistSelectorViewModel.cs index d88c878..41063f1 100755 --- a/music-player/ViewModels/PlaylistSelectorViewModel.cs +++ b/music-player/ViewModels/PlaylistSelectorViewModel.cs @@ -85,7 +85,8 @@ namespace MusicPlayer.ViewModels public PlaylistMemberAddStatus AddTracksToPlaylist(object selectedItemData) { PlaylistModel playlistModel = (PlaylistModel)selectedItemData; - if(addingTrackList == null || addingTrackList.Count <= 0) + + if (addingTrackList == null || addingTrackList.Count <= 0) { return PlaylistMemberAddStatus.PlaylistCreationFailed; } @@ -104,10 +105,38 @@ namespace MusicPlayer.ViewModels } } - bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, addingTrackList); + // Same track should not be allowed to be added multiple times in a playlist + List updatedTrackList = TrackExistInPlaylist(addingTrackList, playlistModel); + + bool result = PlaylistManager.Instance.AddTracks(playlistModel.PlaylistId, updatedTrackList); return result ? PlaylistMemberAddStatus.Added : PlaylistMemberAddStatus.Failed; } + private List TrackExistInPlaylist(List addingTrackList, PlaylistModel playlistModel) + { + PlaylistDetailViewModel playlistDetailViewModel = new PlaylistDetailViewModel(playlistModel.PlaylistId); + + List updatedTrackList = new List(); + foreach (string id in addingTrackList) + { + bool flag = true; + + foreach (Track existingTrack in playlistDetailViewModel.ListViewModel) + { + if (id == existingTrack.Id) + { + flag = false; + break; + } + } + if (flag) + { + updatedTrackList.Add(id); + } + } + return updatedTrackList; + } + public bool IsPlaylistExists(string playlistName) { Playlist playlist = PlaylistManager.Instance.GetPlaylist(playlistName);