[Refactor] Replace OpenFileDialog with StorageProvider for file selection

This commit is contained in:
2025-07-07 23:59:01 +01:00
parent ad27c2a9ab
commit 8c12694fd6
2 changed files with 30 additions and 26 deletions

View File

@@ -157,30 +157,34 @@ public class MainWindowViewModel : ViewModelBase
async Task ExecuteImportDatCommandAsync()
{
var dlgOpen = new OpenFileDialog
var datFileType = new FilePickerFileType(Localization.DatFilesDialogLabel)
{
AllowMultiple = false,
Title = Localization.ImportDatFileDialogTitle
Patterns = new[]
{
"*.dat", "*.xml"
},
AppleUniformTypeIdentifiers = new[]
{
"public.xml", "public.json"
},
MimeTypes = new[]
{
"application/xml", "text/*"
}
};
dlgOpen.Filters.Add(new FileDialogFilter
IReadOnlyList<IStorageFile> result = await _view.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{
Extensions = ["dat", "xml"],
Name = Localization.DatFilesDialogLabel
Title = Localization.ImportDatFileDialogTitle,
AllowMultiple = false,
SuggestedStartLocation = await _view.StorageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents),
FileTypeFilter = [datFileType, FilePickerFileTypes.All]
});
dlgOpen.Filters.Add(new FileDialogFilter
{
Extensions = ["*"],
Name = Localization.AllFilesDialogLabel
});
string[] result = await dlgOpen.ShowAsync(_view);
if(result?.Length != 1) return;
if(result.Count != 1) return;
var dialog = new ImportDat();
var importDatViewModel = new ImportDatViewModel(dialog, result[0]);
var importDatViewModel = new ImportDatViewModel(dialog, result[0].Path.LocalPath);
importDatViewModel.RomSetAdded += ImportDatViewModelOnRomSetAdded;
dialog.DataContext = importDatViewModel;
_ = dialog.ShowDialog(_view);

View File

@@ -170,20 +170,20 @@ public sealed class SettingsViewModel : ViewModelBase
async Task ExecuteUnArCommandAsync()
{
var dlgFile = new OpenFileDialog
IReadOnlyList<IStorageFile> result = await _view.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions
{
Title = Localization.ChooseUnArExecutable,
AllowMultiple = false
};
AllowMultiple = false,
SuggestedStartLocation =
!string.IsNullOrWhiteSpace(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles))
? await _view.StorageProvider.TryGetFolderFromPathAsync(Environment.GetFolderPath(Environment
.SpecialFolder.ProgramFiles))
: await _view.StorageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Desktop)
});
if(!string.IsNullOrWhiteSpace(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles)))
dlgFile.Directory = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles);
if(result.Count != 1) return;
string[] result = await dlgFile.ShowAsync(_view);
if(result?.Length != 1) return;
UnArPath = result[0];
UnArPath = result[0].Path.LocalPath;
CheckUnAr();
}