diff --git a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs index e9aa7fed..5ed1f434 100644 --- a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs +++ b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditor.cs @@ -51,6 +51,38 @@ namespace UniversalEditor.Editors.FileSystem private const int DELIVERED_COLUMNS_COUNT = 5; + private string GetInvalidFileNameChars(FileSystemObjectModel fsom) + { + string invalidPathChars = ((UIApplication)Application.Instance).GetSetting(FileSystemEditorSettingsGuids.InvalidPathChars); + return invalidPathChars; + } + private string GetInvalidFileNamesStr(FileSystemObjectModel fsom) + { + string invalidFileNamesStr = ((UIApplication)Application.Instance).GetSetting(FileSystemEditorSettingsGuids.InvalidFileNames); + return invalidFileNamesStr; + } + private string[] GetInvalidFileNames(FileSystemObjectModel fsom) + { + string invalidFileNamesStr = GetInvalidFileNamesStr(fsom); + if (String.IsNullOrEmpty(invalidFileNamesStr)) + return new string[0]; + + string[] invalidFileNames = invalidFileNamesStr.Split(new char[] { ',' }); + return invalidFileNames; + } + private bool CheckValidFileName(FileSystemObjectModel fsom, string filename) + { + string invalidPathChars = GetInvalidFileNameChars(fsom); + string[] invalidFileNames = GetInvalidFileNames(fsom); + + // string[] filePath = filename.Split(fsom.PathSeparators); + string fileTitle = filename; // filePath[filePath.Length - 1]; + + bool containsInvalidFileNames = invalidFileNames.Length > 0 && fileTitle.EqualsAny(invalidFileNames); + bool containsInvalidChars = String.IsNullOrEmpty(invalidPathChars) || fileTitle.ContainsAny(invalidPathChars.ToCharArray()); + return !(containsInvalidFileNames || containsInvalidChars); + } + [EventHandler(nameof(txtPath), "KeyDown")] private void txtPath_KeyDown(object sender, KeyEventArgs e) { diff --git a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsGuids.cs b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsGuids.cs index 43080018..8b0bb46d 100644 --- a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsGuids.cs +++ b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsGuids.cs @@ -24,5 +24,7 @@ namespace UniversalEditor.Editors.FileSystem public class FileSystemEditorSettingsGuids { public static Guid SingleClickToOpenItems { get; } = new Guid("{409C4308-BA99-489F-BD33-4122E430709D}"); + public static Guid InvalidPathChars { get; } = new Guid("{2fd5348a-2a74-4cdf-9f07-43011b109bde}"); + public static Guid InvalidFileNames { get; } = new Guid("{bfc2323b-a628-419c-827b-fed169ce176e}"); } } diff --git a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsProvider.xml b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsProvider.xml index 70a97fc9..262c9743 100644 --- a/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsProvider.xml +++ b/Libraries/UniversalEditor.UserInterface/Editors/FileSystem/FileSystemEditorSettingsProvider.xml @@ -47,6 +47,17 @@ Search and Preview + + + Editors + File System + Compatibility + + + + + +