diff --git a/samples/ControlCatalog/Pages/DialogsPage.xaml b/samples/ControlCatalog/Pages/DialogsPage.xaml index 5325534909..90c717e7ed 100644 --- a/samples/ControlCatalog/Pages/DialogsPage.xaml +++ b/samples/ControlCatalog/Pages/DialogsPage.xaml @@ -1,6 +1,8 @@ + xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" + xmlns:storage="clr-namespace:Avalonia.Platform.Storage;assembly=Avalonia.Base" + xmlns:generic="clr-namespace:System.Collections.Generic;assembly=System.Collections"> @@ -42,6 +44,19 @@ + + + + Desktop + Documents + Downloads + Pictures + Videos + Music + + + + ("PickerLastResults"); var resultsVisible = this.Get("PickerLastResultsVisible"); var bookmarkContainer = this.Get("BookmarkContainer"); var openedFileContent = this.Get("OpenedFileContent"); var openMultiple = this.Get("OpenMultiple"); + var currentFolderBox = this.Get("CurrentFolderBox"); + + currentFolderBox.TextChanged += async (sender, args) => + { + if (ignoreTextChanged) return; + + if (Enum.TryParse(currentFolderBox.Text, true, out var folderEnum)) + { + lastSelectedDirectory = await GetStorageProvider().TryGetWellKnownFolder(folderEnum); + } + else + { + if (!Uri.TryCreate(currentFolderBox.Text, UriKind.Absolute, out var folderLink)) + { + Uri.TryCreate("file://" + currentFolderBox.Text, UriKind.Absolute, out folderLink); + } + + if (folderLink is not null) + { + lastSelectedDirectory = await GetStorageProvider().TryGetFolderFromPath(folderLink); + } + } + }; - IStorageFolder? lastSelectedDirectory = null; List GetFilters() { @@ -84,7 +109,7 @@ namespace ControlCatalog.Pages { Title = "Open multiple files", Filters = GetFilters(), - Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null, + Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, AllowMultiple = true }.ShowAsync(GetWindow()); results.Items = result; @@ -97,7 +122,7 @@ namespace ControlCatalog.Pages { Title = "Save file", Filters = filters, - Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null, + Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, DefaultExtension = filters?.Any() == true ? "txt" : null, InitialFileName = "test.txt" }.ShowAsync(GetWindow()); @@ -109,7 +134,7 @@ namespace ControlCatalog.Pages var result = await new OpenFolderDialog() { Title = "Select folder", - Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null + Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, }.ShowAsync(GetWindow()); if (string.IsNullOrEmpty(result)) { @@ -117,7 +142,7 @@ namespace ControlCatalog.Pages } else { - lastSelectedDirectory = new BclStorageFolder(new System.IO.DirectoryInfo(result)); + SetFolder(await GetStorageProvider().TryGetFolderFromPath(result)); results.Items = new[] { result }; resultsVisible.IsVisible = true; } @@ -127,7 +152,7 @@ namespace ControlCatalog.Pages var result = await new OpenFileDialog() { Title = "Select both", - Directory = lastSelectedDirectory?.TryGetUri(out var path) == true ? path.LocalPath : null, + Directory = lastSelectedDirectory?.Path is {IsAbsoluteUri:true} path ? path.LocalPath : null, AllowMultiple = true }.ShowManagedAsync(GetWindow(), new ManagedFileDialogOptions { @@ -210,7 +235,7 @@ namespace ControlCatalog.Pages #endif await reader.WriteLineAsync(openedFileContent.Text); - lastSelectedDirectory = await file.GetParentAsync(); + SetFolder(await file.GetParentAsync()); } await SetPickerResult(file is null ? null : new[] { file }); @@ -226,7 +251,7 @@ namespace ControlCatalog.Pages await SetPickerResult(folders); - lastSelectedDirectory = folders.FirstOrDefault(); + SetFolder(folders.FirstOrDefault()); }; this.Get