public void RemoveListFromItem(DatabasePlaylist list, UniqueResourceInfo info) { if (!info.RemoveList(list)) { Log.Warn("Failed to remove song from database"); } if (!info.IsContainedInAList) { uniqueSongs.Remove(info.Resource); } }
public bool GetOrCreateForListItem(AudioResource resource, DatabasePlaylist list, int index, out UniqueResourceInfo info) { if (uniqueSongs.TryGetValue(resource, out info)) { return(info.TryAdd(list, index)); } info = new UniqueResourceInfo(resource); info.TryAdd(list, index); uniqueSongs.Add(resource, info); return(true); }
private List <UniqueResourceInfo> CreateSongsInfo(string id, Playlist list) { List <UniqueResourceInfo> res = new List <UniqueResourceInfo>(); for (var i = 0; i < list.Items.Count; i++) { var item = list.Items[i]; var unique = (UniqueResource)item.AudioResource; if (uniqueSongs.TryGetValue(unique, out var info)) { info.AddInstance(id, i); } else { info = new UniqueResourceInfo(unique); info.Add(id, i); uniqueSongs.Add(unique, info); } res.Add(info); } return(res); }
public bool TryGetUniqueItem(UniqueResource resource, out UniqueResourceInfo info) { lock (playlistCache) { return(playlistCache.UniqueResourcesDictionary.TryGetValue(resource, out info)); } }
// Partitions ContainingListInstances into contained and not contained public (List <KeyValuePair <DatabasePlaylist, int> > contained, List <KeyValuePair <DatabasePlaylist, int> > notContained) PartitionContainingLists(UniqueResourceInfo o) { var contained = new List <KeyValuePair <DatabasePlaylist, int> >(); var notContained = new List <KeyValuePair <DatabasePlaylist, int> >(); foreach (var containingListInstance in ContainingListInstances) { (o.IsContainedIn(containingListInstance.Key) ? contained : notContained).Add(containingListInstance); } return(contained, notContained); }
public void ReplaceResource(UniqueResourceInfo info, AudioResource resource) { uniqueSongs.Remove(info.Resource); info.Resource = resource; uniqueSongs.Add(resource, info); }
public bool TryGet(AudioResource resource, out UniqueResourceInfo info) { return(uniqueSongs.TryGetValue(resource, out info)); }
public bool TryGetUniqueItem(UniqueResource resource, out UniqueResourceInfo info) { return(playlistPool.TryGetUniqueItem(resource, out info)); }