Browse Source

File type dialog

Krzysztof Krysiński 1 year ago
parent
commit
2cc84e399e

+ 2 - 9
src/PixiEditor.AvaloniaUI/Helpers/SupportedFilesHelper.cs

@@ -113,14 +113,7 @@ internal class SupportedFilesHelper
 
     public static List<FilePickerFileType> BuildOpenFilter()
     {
-        var any = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Any).GetFormattedTypes();
-        var pixi = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Pixi).GetFormattedTypes();
-        var images = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Images).GetFormattedTypes();
-
-        var filter = new List<FilePickerFileType>();
-        filter.AddRange(any);
-        filter.AddRange(pixi);
-        filter.AddRange(images);
-        return filter;
+        var any = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Any).GetFormattedTypes(true);
+        return any.ToList();
     }
 }

+ 11 - 3
src/PixiEditor.AvaloniaUI/Models/IO/FileTypeDialogDataSet.cs

@@ -46,9 +46,17 @@ internal class FileTypeDialogDataSet
         this.displayName = displayName;
     }
 
-    public FilePickerFileType[] GetFormattedTypes()
+    public FilePickerFileType[] GetFormattedTypes(bool includeCommon)
     {
-        FilePickerFileType[] types = fileTypes.Select(i => i.SaveFilter).ToArray();
-        return types;
+        List<FilePickerFileType> types = new();
+        if (includeCommon)
+        {
+            FilePickerFileType common = new FilePickerFileType(displayName);
+            common.Patterns = fileTypes.SelectMany(i => i.SaveFilter.Patterns).ToArray();
+            types.Add(common);
+        }
+
+        types.AddRange(fileTypes.Select(i => i.SaveFilter));
+        return types.ToArray();
     }
 }

+ 1 - 1
src/PixiEditor.AvaloniaUI/ViewModels/SubViewModels/LayersViewModel.cs

@@ -369,7 +369,7 @@ internal class LayersViewModel : SubViewModel<ViewModelMain>
 
     private async Task<string> OpenReferenceLayerFilePicker()
     {
-        var imagesFilter = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Images).GetFormattedTypes();
+        var imagesFilter = new FileTypeDialogDataSet(FileTypeDialogDataSet.SetKind.Images).GetFormattedTypes(true);
         if (Application.Current.ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop)
         {
             var filePicker = await desktop.MainWindow.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions()