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 void RemoveEpisode(int animeEpisodeID) { if (string.IsNullOrEmpty(PlaylistItems)) { return; } string[] items = PlaylistItems.Split('|'); PlaylistItems = ""; // create a new list without the moved item 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)PlaylistItemType.Episode && objID == animeEpisodeID) { // remove this old item } else { if (PlaylistItems.Length > 0) { PlaylistItems += "|"; } PlaylistItems += $"{objType};{objID}"; } } }
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 void PopulatePlaylistObjects() { PlaylistObjects.Clear(); if (string.IsNullOrEmpty(PlaylistItems)) { return; } 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 ((PlaylistItemType)objType == PlaylistItemType.AnimeSeries) { VM_AnimeSeries_User ser; if (VM_MainListHelper.Instance.AllSeriesDictionary.TryGetValue(objID, out ser) == false) { // get the series ser = (VM_AnimeSeries_User)VM_ShokoServer.Instance.ShokoServices.GetSeries(objID, VM_ShokoServer.Instance.CurrentUser.JMMUserID); if (ser != null) { VM_MainListHelper.Instance.AllSeriesDictionary[objID] = ser; } } if (ser != null) { PlaylistObjects.Add(new VM_PlaylistItem(PlaylistID, PlaylistItemType.AnimeSeries, ser)); } } else { // get the episode VM_AnimeEpisode_User ep = (VM_AnimeEpisode_User)VM_ShokoServer.Instance.ShokoServices.GetEpisode(objID, VM_ShokoServer.Instance.CurrentUser.JMMUserID); if (ep != null) { //ep.SetTvDBInfo(); PlaylistObjects.Add(new VM_PlaylistItem(PlaylistID, PlaylistItemType.Episode, ep)); } } } SetDependendProperties(); }