From 0d4c1b90c2f61c5e4356b14d0a67341148c5e861 Mon Sep 17 00:00:00 2001 From: Michael Babienco Date: Tue, 17 Feb 2026 14:50:59 +0900 Subject: [PATCH] Allow locating file that was moved/renamed --- ViewModels/MainViewModel.cs | 35 +++++++++++++++++++++++++++++++++++ Views/MainView.axaml | 25 +++++++++++++++++++++---- 2 files changed, 56 insertions(+), 4 deletions(-) diff --git a/ViewModels/MainViewModel.cs b/ViewModels/MainViewModel.cs index 8eb5c2a..65ea6ce 100644 --- a/ViewModels/MainViewModel.cs +++ b/ViewModels/MainViewModel.cs @@ -286,6 +286,41 @@ class MainViewModel : BaseViewModel, IFontResolver } } + public void LocateFile(object f) => LocateFileImpl((ReportFile) f); + public async void LocateFileImpl(ReportFile reportFile) + { + var topLevel = TopLevelGrabber?.GetTopLevel(); + if (topLevel is not null) + { + var files = await topLevel.StorageProvider.OpenFilePickerAsync(new FilePickerOpenOptions() + { + Title = "Choose image or PDF file...", + AllowMultiple = false, + FileTypeFilter = [ + new FilePickerFileType("All Types") + { + Patterns = GetAllowedFileExtensionPatterns(), + AppleUniformTypeIdentifiers = [ "public.image", "com.adobe.pdf", "public.heic" ], + MimeTypes = [ "image/*", "application/pdf", "image/heic" ] + }, + FilePickerFileTypes.ImageAll, + new FilePickerFileType("HEIC Images") + { + Patterns = [ "*.heic" ], + AppleUniformTypeIdentifiers = [ "public.heic" ], + MimeTypes = [ "image/heic" ] + }, + FilePickerFileTypes.Pdf, + ], + }); + if (files.Count > 0) + { + var file = files[0]; + reportFile.FilePath = file.Path.LocalPath; + } + } + } + // https://github.com/AvaloniaUI/Avalonia/issues/10075 public void OpenFile(object f) => OpenFileImpl((ReportFile)f); public void OpenFileImpl(ReportFile file) diff --git a/Views/MainView.axaml b/Views/MainView.axaml index cef385a..3d74736 100644 --- a/Views/MainView.axaml +++ b/Views/MainView.axaml @@ -75,9 +75,25 @@ Width="*"> -