Example #1
0
        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);
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
 public bool TryGetUniqueItem(UniqueResource resource, out UniqueResourceInfo info)
 {
     lock (playlistCache) {
         return(playlistCache.UniqueResourcesDictionary.TryGetValue(resource, out info));
     }
 }
Example #5
0
        // 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);
        }
Example #6
0
 public void ReplaceResource(UniqueResourceInfo info, AudioResource resource)
 {
     uniqueSongs.Remove(info.Resource);
     info.Resource = resource;
     uniqueSongs.Add(resource, info);
 }
Example #7
0
 public bool TryGet(AudioResource resource, out UniqueResourceInfo info)
 {
     return(uniqueSongs.TryGetValue(resource, out info));
 }
Example #8
0
 public bool TryGetUniqueItem(UniqueResource resource, out UniqueResourceInfo info)
 {
     return(playlistPool.TryGetUniqueItem(resource, out info));
 }