implement FileSystemEditor checking valid filenames with invalid filenames and characters settings

This commit is contained in:
Michael Becker 2021-05-26 15:00:41 -04:00
parent 7b1fc44390
commit c644bb21af
No known key found for this signature in database
GPG Key ID: 98C333A81F18C22C
3 changed files with 45 additions and 0 deletions

View File

@ -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<string>(FileSystemEditorSettingsGuids.InvalidPathChars);
return invalidPathChars;
}
private string GetInvalidFileNamesStr(FileSystemObjectModel fsom)
{
string invalidFileNamesStr = ((UIApplication)Application.Instance).GetSetting<string>(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)
{

View File

@ -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}");
}
}

View File

@ -47,6 +47,17 @@
<Part>Search and Preview</Part>
</Path>
</SettingsGroup>
<SettingsGroup ID="{e8c41127-956e-49a4-a409-deb62590d4be}">
<Path>
<Part>Editors</Part>
<Part>File System</Part>
<Part>Compatibility</Part>
</Path>
<Settings>
<TextSetting ID="{2fd5348a-2a74-4cdf-9f07-43011b109bde}" Name="InvalidPathChars" Title="Invalid filename characters" Value="/&lt;&gt;:&quot;\\|?*" />
<TextSetting ID="{bfc2323b-a628-419c-827b-fed169ce176e}" Name="InvalidFileNames" Title="Invalid filenames" Value="CON,PRN,AUX,NUL,COM1,COM2,COM3,COM4,COM5,COM6,COM7,COM8,COM9,LPT1,LPT2,LPT3,LPT4,LPT5,LPT6,LPT7,LPT8,LPT9" />
</Settings>
</SettingsGroup>
</SettingsProvider>
</SettingsProviders>
</ApplicationFramework>