diff --git a/src/Beutl.Engine/Media/Decoding/IDecoderInfo.cs b/src/Beutl.Engine/Media/Decoding/IDecoderInfo.cs index ce7dd64d4..5dccb849b 100644 --- a/src/Beutl.Engine/Media/Decoding/IDecoderInfo.cs +++ b/src/Beutl.Engine/Media/Decoding/IDecoderInfo.cs @@ -8,7 +8,7 @@ public interface IDecoderInfo bool IsSupported(string file) { - return VideoExtensions().Concat(AudioExtensions()).Contains(Path.GetExtension(file)); + return VideoExtensions().Concat(AudioExtensions()).Contains(Path.GetExtension(file), StringComparer.OrdinalIgnoreCase); } IEnumerable VideoExtensions(); diff --git a/src/Beutl.Engine/Media/Encoding/IEncoderInfo.cs b/src/Beutl.Engine/Media/Encoding/IEncoderInfo.cs index f3ccb5002..5a957ed34 100644 --- a/src/Beutl.Engine/Media/Encoding/IEncoderInfo.cs +++ b/src/Beutl.Engine/Media/Encoding/IEncoderInfo.cs @@ -9,7 +9,7 @@ public interface IEncoderInfo bool IsSupported(string file) { - return SupportExtensions().Contains(Path.GetExtension(file)); + return SupportExtensions().Contains(Path.GetExtension(file), StringComparer.OrdinalIgnoreCase); } IEnumerable SupportExtensions(); diff --git a/src/Beutl/Services/PrimitiveImpls/SceneEditorExtension.cs b/src/Beutl/Services/PrimitiveImpls/SceneEditorExtension.cs index 6e1befd7b..1f1fba224 100644 --- a/src/Beutl/Services/PrimitiveImpls/SceneEditorExtension.cs +++ b/src/Beutl/Services/PrimitiveImpls/SceneEditorExtension.cs @@ -49,7 +49,7 @@ public sealed class SceneEditorExtension : EditorExtension public override bool TryCreateEditor(string file, [NotNullWhen(true)] out Control? editor) { - if (file.EndsWith($".{Constants.SceneFileExtension}")) + if (file.EndsWith($".{Constants.SceneFileExtension}", StringComparison.OrdinalIgnoreCase)) { editor = new EditView(); return true; @@ -63,7 +63,7 @@ public override bool TryCreateEditor(string file, [NotNullWhen(true)] out Contro public override bool TryCreateContext(string file, [NotNullWhen(true)] out IEditorContext? context) { - if (file.EndsWith($".{Constants.SceneFileExtension}") + if (file.EndsWith($".{Constants.SceneFileExtension}", StringComparison.OrdinalIgnoreCase) && ProjectItemContainer.Current.TryGetOrCreateItem(file, out Scene? model)) { context = new EditViewModel(model); @@ -88,6 +88,6 @@ public override FilePickerFileType GetFilePickerFileType() public override bool MatchFileExtension(string ext) { - return ext is ".scene"; + return ext.Equals(".scene", StringComparison.OrdinalIgnoreCase); } } diff --git a/src/Beutl/Services/PrimitiveImpls/SceneOutputExtension.cs b/src/Beutl/Services/PrimitiveImpls/SceneOutputExtension.cs index 85fb001fd..0a091f98e 100644 --- a/src/Beutl/Services/PrimitiveImpls/SceneOutputExtension.cs +++ b/src/Beutl/Services/PrimitiveImpls/SceneOutputExtension.cs @@ -41,7 +41,7 @@ public override FilePickerFileType GetFilePickerFileType() public override bool MatchFileExtension(string ext) { - return ext is ".scene"; + return string.Equals(ext, ".scene", StringComparison.OrdinalIgnoreCase); } public override bool TryCreateContext(IEditorContext editorContext, [NotNullWhen(true)] out IOutputContext? context) diff --git a/src/Beutl/Services/PrimitiveImpls/SceneWorkspaceItemExtension.cs b/src/Beutl/Services/PrimitiveImpls/SceneWorkspaceItemExtension.cs index c602745da..9e387016c 100644 --- a/src/Beutl/Services/PrimitiveImpls/SceneWorkspaceItemExtension.cs +++ b/src/Beutl/Services/PrimitiveImpls/SceneWorkspaceItemExtension.cs @@ -46,13 +46,13 @@ public override FilePickerFileType GetFilePickerFileType() public override bool IsSupported(string file) { - return file.EndsWith($".{Constants.SceneFileExtension}"); + return file.EndsWith($".{Constants.SceneFileExtension}", StringComparison.OrdinalIgnoreCase); } public override bool TryCreateItem(string file, [NotNullWhen(true)] out ProjectItem? result) { result = null; - if (file.EndsWith($".{Constants.SceneFileExtension}")) + if (file.EndsWith($".{Constants.SceneFileExtension}", StringComparison.OrdinalIgnoreCase)) { Scene? scene; try diff --git a/src/Beutl/ViewModels/EditViewModel.cs b/src/Beutl/ViewModels/EditViewModel.cs index 55e7a2c0e..5429fab53 100644 --- a/src/Beutl/ViewModels/EditViewModel.cs +++ b/src/Beutl/ViewModels/EditViewModel.cs @@ -553,6 +553,7 @@ Element CreateElementFor(out T t) private static bool MatchFileExtensions(string filePath, IEnumerable extensions) { + string ext = Path.GetExtension(filePath); return extensions .Select(x => { @@ -562,7 +563,7 @@ private static bool MatchFileExtensions(string filePath, IEnumerable ext else return x; }) - .Any(filePath.EndsWith); + .Contains(ext, StringComparer.OrdinalIgnoreCase); } private static bool MatchFileAudioOnly(string filePath) diff --git a/src/Beutl/Views/EditorHostFallback.axaml.cs b/src/Beutl/Views/EditorHostFallback.axaml.cs index f83673ca4..1b8535cd7 100644 --- a/src/Beutl/Views/EditorHostFallback.axaml.cs +++ b/src/Beutl/Views/EditorHostFallback.axaml.cs @@ -163,7 +163,7 @@ private void OpenRecentFile(string fileName) try { - if (fileName.EndsWith($".{Constants.ProjectFileExtension}")) + if (fileName.EndsWith($".{Constants.ProjectFileExtension}", StringComparison.OrdinalIgnoreCase)) { viewModel.MenuBar.OpenRecentProject.Execute(fileName); } @@ -220,8 +220,8 @@ private void InitRecentItems() viewConfig.RecentFiles.ToObservableChangeSet, string>() .Filter(filter.Select>( f => (x) => f == 0 - || (f == 1 && x.EndsWith($".{Constants.ProjectFileExtension}")) - || (f == 2 && !x.EndsWith($".{Constants.ProjectFileExtension}")))) + || (f == 1 && x.EndsWith($".{Constants.ProjectFileExtension}", StringComparison.OrdinalIgnoreCase)) + || (f == 2 && !x.EndsWith($".{Constants.ProjectFileExtension}", StringComparison.OrdinalIgnoreCase)))) .AddKey(x => x) .Cast(x => new FileInfo(x)) .SortBy(x => x.LastAccessTimeUtc, sortOrder: SortDirection.Descending)