public static AcceptedFilesResults DetermineAcceptedFiles(string[] files, BitVector32 miscFlags) { var results = new AcceptedFilesResults(); if (files == null || files.Length == 0) { return(results); } results.FilesCount = files.Length; foreach (string path in files) { if (System.IO.Directory.Exists(path)) { results.AcceptedFileTypes.Set(AcceptedFileType.Directory); continue; } string ext = System.IO.Path.GetExtension(path); if (string.IsNullOrEmpty(ext)) // extension-less file { results.AcceptedFileTypes.Set(AcceptedFileType.Unaccepted); continue; } // #HACK ECFs // Needs to come before all other file extension checks as it is a forced override if (miscFlags.Test(MiscFlags.AssumeDragAndDropFilesAreEcf)) { results.AcceptedFileTypes.Set(AcceptedFileType.Ecf); continue; } switch (ext) { case KSoft.Phoenix.Resource.EraFileUtil.kExtensionEncrypted: results.AcceptedFileTypes.Set(AcceptedFileType.Era); break; case KSoft.Phoenix.Resource.EraFileBuilder.kNameExtension: results.AcceptedFileTypes.Set(AcceptedFileType.EraDef); break; case KSoft.Phoenix.Resource.ECF.EcfFileDefinition.kFileExtension: results.AcceptedFileTypes.Set(AcceptedFileType.EcfDef); break; case KSoft.Phoenix.Resource.PKG.CaPackageFile.kFileExtension: results.AcceptedFileTypes.Set(AcceptedFileType.Pkg); break; case KSoft.Phoenix.Resource.PKG.CaPackageFileDefinition.kFileExtension: results.AcceptedFileTypes.Set(AcceptedFileType.PkgDef); break; case ".exe": results.AcceptedFileTypes.Set(AcceptedFileType.Exe); break; case ".xex": results.AcceptedFileTypes.Set(AcceptedFileType.Exe); break; case ".xmb": results.AcceptedFileTypes.Set(AcceptedFileType.Xmb); break; case KSoft.Phoenix.Xmb.BinaryDataTree.kBinaryFileExtension: results.AcceptedFileTypes.Set(AcceptedFileType.BinaryDataTree); break; case KSoft.Phoenix.Xmb.BinaryDataTree.kTextFileExtension: results.AcceptedFileTypes.Set(AcceptedFileType.BinaryDataTreeXml); break; default: if (KSoft.Phoenix.Resource.ResourceUtils.IsXmlBasedFile(path)) { results.AcceptedFileTypes.Set(AcceptedFileType.Xml); } break; } } return(results); }