Пример #1
0
        /// <summary>
        /// Function to retrieve the sprite file entries from the file system.
        /// </summary>
        /// <param name="searchEntries">The flattened list of entries used for searching.</param>
        /// <param name="fileSystemEntries">The file system entry hierarchy.</param>
        private (List <IContentFileExplorerSearchEntry> searchEntries, List <ContentFileExplorerDirectoryEntry> fileSystemEntries) GetFileEntries()
        {
            var searchEntries     = new List <IContentFileExplorerSearchEntry>();
            var fileSystemEntries = new List <ContentFileExplorerDirectoryEntry>();
            ContentFileExplorerDirectoryEntry dirEntry = null;
            var fileEntries = new List <ContentFileExplorerFileEntry>();
            IEnumerable <string>       dirs        = _fileManager.EnumerateDirectories("/", "*", true);
            IEnumerable <IContentFile> spriteFiles = _fileManager.EnumerateContentFiles("/", "*")
                                                     .Where(item => (item.Metadata.Attributes.TryGetValue(CommonEditorConstants.ContentTypeAttr, out string fileType)) &&
                                                            (string.Equals(fileType, CommonEditorContentTypes.SpriteType, StringComparison.OrdinalIgnoreCase)));

            if (spriteFiles.Any())
            {
                dirEntry = new ContentFileExplorerDirectoryEntry("/", fileEntries);
                fileSystemEntries.Add(dirEntry);
                searchEntries.Add(dirEntry);

                foreach (IContentFile file in spriteFiles)
                {
                    var fileEntry = new ContentFileExplorerFileEntry(file, dirEntry);
                    fileEntries.Add(fileEntry);
                    searchEntries.Add(fileEntry);
                }
            }

            foreach (string subDir in dirs)
            {
                spriteFiles = _fileManager.EnumerateContentFiles(subDir, "*")
                              .Where(item => (item.Metadata.Attributes.TryGetValue(CommonEditorConstants.ContentTypeAttr, out string fileType)) &&
                                     (string.Equals(fileType, CommonEditorContentTypes.SpriteType, StringComparison.OrdinalIgnoreCase)));
                if (!spriteFiles.Any())
                {
                    continue;
                }

                fileEntries = new List <ContentFileExplorerFileEntry>();
                dirEntry    = new ContentFileExplorerDirectoryEntry(subDir, fileEntries);

                fileSystemEntries.Add(dirEntry);
                searchEntries.Add(dirEntry);

                foreach (IContentFile file in spriteFiles)
                {
                    var fileEntry = new ContentFileExplorerFileEntry(file, dirEntry);
                    fileEntries.Add(fileEntry);
                    searchEntries.Add(fileEntry);
                }
            }

            return(searchEntries, fileSystemEntries);
        }