AcManager.Controls.UserPresetsControl.GroupPresets C# (CSharp) Method

GroupPresets() public static method

public static GroupPresets ( IEnumerable entries, string mainDirectory ) : IEnumerable
entries IEnumerable
mainDirectory string
return IEnumerable
        public static IEnumerable<object> GroupPresets(IEnumerable<ISavedPresetEntry> entries, string mainDirectory) {
            var list = entries.Select(x => new {
                Entry = x,
                Directory = GetHead(x.Filename, mainDirectory)
            }).ToList();

            foreach (var directory in list.Select(x => x.Directory).Where(x => x != mainDirectory).Distinct()) {
                var directoryValue = directory;
                var subList = list.Where(x => x.Directory == directoryValue).Select(x => x.Entry).ToList();
                if (subList.Count > 1){
                    yield return new HierarchicalGroup(Path.GetFileName(directory), GroupPresets(subList, directory));
                } else if (list.Any()) {
                    subList[0].SetParent(mainDirectory);
                    yield return subList[0];
                }
            }

            foreach (var entry in list.Where(x => x.Directory == mainDirectory)) {
                entry.Entry.SetParent(mainDirectory);
                yield return entry.Entry;
            }
        }

Same methods

UserPresetsControl::GroupPresets ( string presetableKey ) : IEnumerable