public bool IsAlreadyInPlaylist(PlaylistItemType pType, int id) { string[] items = PlaylistItems.Split('|'); foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) { continue; } int objType; int objID; if (!int.TryParse(parms[0], out objType)) { continue; } if (!int.TryParse(parms[1], out objID)) { continue; } if (objType == (int)pType && objID == id) { return(true); } } return(false); }
public PlaylistItemVM(int playlistID, PlaylistItemType itemType, object playlistItem) { PlaylistID = playlistID; ItemType = itemType; PlaylistItem = playlistItem; if (ItemType == PlaylistItemType.AnimeSeries) Series = PlaylistItem as AnimeSeriesVM; if (ItemType == PlaylistItemType.Episode) { Episode = PlaylistItem as AnimeEpisodeVM; if (MainListHelperVM.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID)) Series = MainListHelperVM.Instance.AllSeriesDictionary[Episode.AnimeSeriesID]; } }
//public static void Delete(this MusicDb musicDb, MusicFile mf) //{ // musicDb.RemovePlaylistItems(mf); // var tags = mf.IdTags.ToArray(); // musicDb.IdTags.RemoveRange(tags); // musicDb.MusicFiles.Remove(mf); //} public static void RemovePlaylistItems <T>(this MusicDb musicDb, T entity) { PlaylistItemType itemType = PlaylistItemType.MusicFile; long itemId = 0; switch (entity) { case Performance p: itemType = PlaylistItemType.Performance; itemId = p.Id; break; case Work w: itemType = PlaylistItemType.Work; itemId = w.Id; break; case Track t: itemType = PlaylistItemType.Track; itemId = t.Id; break; case MusicFile mf: itemType = PlaylistItemType.MusicFile; itemId = mf.Id; break; } var items = musicDb.PlaylistItems.Where(x => x.Type == itemType && x.ItemId == itemId).ToArray(); foreach (var item in items) { var playlist = item.Playlist; item.Playlist = null; playlist.Items.Remove(item); musicDb.PlaylistItems.Remove(item); //log.Information($"playlist item {item.Title} removed from {playlist.Name}"); if (playlist.Items.Count() == 0) { musicDb.Playlists.Remove(playlist); //log.Information($"playlist {playlist.Name} removed"); } } }
public PlaylistItemVM(int playlistID, PlaylistItemType itemType, object playlistItem) { PlaylistID = playlistID; ItemType = itemType; PlaylistItem = playlistItem; if (ItemType == PlaylistItemType.AnimeSeries) { Series = PlaylistItem as AnimeSeriesVM; } if (ItemType == PlaylistItemType.Episode) { Episode = PlaylistItem as AnimeEpisodeVM; if (MainListHelperVM.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID)) { Series = MainListHelperVM.Instance.AllSeriesDictionary[Episode.AnimeSeriesID]; } } }
public VM_PlaylistItem(int playlistID, PlaylistItemType itemType, object playlistItem) { PlaylistID = playlistID; ItemType = itemType; PlaylistItem = playlistItem; if (ItemType == PlaylistItemType.AnimeSeries) { Series = PlaylistItem as VM_AnimeSeries_User; } if (ItemType == PlaylistItemType.Episode) { Episode = (VM_AnimeEpisode_User)PlaylistItem; if (VM_MainListHelper.Instance.AllSeriesDictionary.ContainsKey(Episode.AnimeSeriesID)) { Series = VM_MainListHelper.Instance.AllSeriesDictionary[Episode.AnimeSeriesID]; } } }
public void Drop(IDropInfo dropInfo) { PlaylistItemType itemType = PlaylistItemType.AnimeSeries; int objIDOld = -1; VM_PlaylistItem pli = dropInfo.Data as VM_PlaylistItem; if (pli == null) { return; } if (pli.ItemType == PlaylistItemType.Episode) { VM_AnimeEpisode_User ep = (VM_AnimeEpisode_User)pli.PlaylistItem; itemType = PlaylistItemType.Episode; objIDOld = ep.AnimeEpisodeID; } if (pli.ItemType == PlaylistItemType.AnimeSeries) { VM_AnimeSeries_User ep = (VM_AnimeSeries_User)pli.PlaylistItem; itemType = PlaylistItemType.AnimeSeries; objIDOld = ep.AnimeSeriesID; } int iType = (int)itemType; // find where this item was previously if (string.IsNullOrEmpty(PlaylistItems)) { return; } string[] items = PlaylistItems.Split('|'); // create a new list without the moved item string newItemList = ""; foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) { continue; } int objType; int objID; if (!int.TryParse(parms[0], out objType)) { continue; } if (!int.TryParse(parms[1], out objID)) { continue; } if (objType == iType && objID == objIDOld) { // skip the old item } else { if (newItemList.Length > 0) { newItemList += "|"; } newItemList += $"{objType};{objID}"; } } // insert the moved item into it's new position items = newItemList.Split('|'); PlaylistItems = ""; int curPos = 0; if (string.IsNullOrEmpty(newItemList)) { // means there was only one item in list to begin with PlaylistItems += $"{iType};{objIDOld}"; } else { foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) { continue; } int objType; int objID; int.TryParse(parms[0], out objType); int.TryParse(parms[1], out objID); if (curPos == dropInfo.InsertIndex) { // insert moved item if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += $"{iType};{objIDOld}"; } if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += $"{objType};{objID}"; curPos++; } } // moved to the end of the list if (dropInfo.InsertIndex > items.Length) { if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += $"{iType};{objIDOld}"; } Save(); PopulatePlaylistObjects(); VM_PlaylistHelper.Instance.OnPlaylistModified(new PlaylistModifiedEventArgs(PlaylistID)); }
public PlaylistMenuCommand(PlaylistItemType addType, int playlistID) { AddType = addType; PlaylistID = playlistID; }
public bool IsAlreadyInPlaylist(PlaylistItemType pType, int id) { string[] items = this.PlaylistItems.Split('|'); foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) continue; int objType = -1; int objID = -1; if (!int.TryParse(parms[0], out objType)) continue; if (!int.TryParse(parms[1], out objID)) continue; if (objType == (int)pType && objID == id) return true; } return false; }
void GongSolutions.Wpf.DragDrop.IDropTarget.Drop(DropInfo dropInfo) { PlaylistItemType itemType = PlaylistItemType.AnimeSeries; int objIDOld = -1; PlaylistItemVM pli = dropInfo.Data as PlaylistItemVM; if (pli == null) { return; } if (pli.ItemType == PlaylistItemType.Episode) { AnimeEpisodeVM ep = (AnimeEpisodeVM)pli.PlaylistItem; itemType = PlaylistItemType.Episode; objIDOld = ep.AnimeEpisodeID; } if (pli.ItemType == PlaylistItemType.AnimeSeries) { AnimeSeriesVM ep = (AnimeSeriesVM)pli.PlaylistItem; itemType = PlaylistItemType.AnimeSeries; objIDOld = ep.AnimeSeriesID.Value; } int iType = (int)itemType; // find where this item was previously if (string.IsNullOrEmpty(this.PlaylistItems)) { return; } string[] items = this.PlaylistItems.Split('|'); // create a new list without the moved item string newItemList = ""; foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) { continue; } int objType = -1; int objID = -1; if (!int.TryParse(parms[0], out objType)) { continue; } if (!int.TryParse(parms[1], out objID)) { continue; } if (objType == iType && objID == objIDOld) { // skip the old item } else { if (newItemList.Length > 0) { newItemList += "|"; } newItemList += string.Format("{0};{1}", objType, objID); } } // insert the moved item into it's new position items = newItemList.Split('|'); this.PlaylistItems = ""; int curPos = 0; if (string.IsNullOrEmpty(newItemList)) { // means there was only one item in list to begin with PlaylistItems += string.Format("{0};{1}", iType, objIDOld); } else { foreach (string pitem in items) { string[] parms = pitem.Split(';'); if (parms.Length != 2) { continue; } int objType = -1; int objID = -1; int.TryParse(parms[0], out objType); int.TryParse(parms[1], out objID); if (curPos == dropInfo.InsertIndex) { // insert moved item if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += string.Format("{0};{1}", iType, objIDOld); } if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += string.Format("{0};{1}", objType, objID); curPos++; } } // moved to the end of the list if (dropInfo.InsertIndex > items.Length) { if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += string.Format("{0};{1}", iType, objIDOld); } Save(); PopulatePlaylistObjects(); PlaylistHelperVM.Instance.OnPlaylistModified(new PlaylistModifiedEventArgs(PlaylistID)); }