From 4ad951eb569dab20e805445ea17bfe702a91e528 Mon Sep 17 00:00:00 2001 From: Kai Tao <69313318+vanzue@users.noreply.github.com> Date: Mon, 25 Aug 2025 21:23:07 +0800 Subject: [PATCH] Setting search (#41285) ## Summary of the Pull Request ## PR Checklist - [ ] Closes: #xxx - [ ] **Communication:** I've discussed this with core contributors already. If the work hasn't been agreed, this work might be rejected - [x] **Tests:** Added/updated and all pass - [ ] **Localization:** All end-user-facing strings can be localized - [ ] **Dev docs:** Added/updated - [ ] **New binaries:** Added on the required places - [ ] [JSON for signing](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ESRPSigning_core.json) for new binaries - [ ] [WXS for installer](https://github.com/microsoft/PowerToys/blob/main/installer/PowerToysSetup/Product.wxs) for new binaries and localization folder - [ ] [YML for CI pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/ci/templates/build-powertoys-steps.yml) for new test projects - [ ] [YML for signed pipeline](https://github.com/microsoft/PowerToys/blob/main/.pipelines/release.yml) - [ ] **Documentation updated:** If checked, please file a pull request on [our docs repo](https://github.com/MicrosoftDocs/windows-uwp/tree/docs/hub/powertoys) and link it here: #xxx ## Detailed Description of the Pull Request / Additional comments ## Validation Steps Performed Localized search: image ## AI summary This pull request introduces infrastructure and code to support search functionality for PowerToys settings, including a new search index specification, a dedicated search library, and updates to the solution configuration. The main changes are the addition of a spec describing how settings should be indexed and navigated, the creation of a new `Common.Search` project with a fuzz search implementation, and updates to the solution file to include these new components. **Settings Search Feature Implementation** * Documentation: * Added a detailed specification (`settings-search.md`) describing the structure of PowerToys settings pages, how to index settings, navigation logic, runtime search, result grouping, build-time indexing strategy, and corner cases. * New Search Library: * Added the new `Common.Search` project to the solution, including its project file and implementation of a fuzz search service (`FuzzSearchService`), match options, match results, and search precision scoring. [[1]](diffhunk://#diff-ddc06fa41e4e723e54181b0cb85cdd00f57f75725d51ceefa242d4d651a9a363R1-R8) [[2]](diffhunk://#diff-1a2ca29fc33bcccf338a7843a040ca2c31ba821e8cab7064fab0dbb1224d454cR1-R39) [[3]](diffhunk://#diff-242764d948b795f39653a84d9b6bfcdc52730100deab2e3a0995be95bb8e7868R1-R10) [[4]](diffhunk://#diff-61e525491ed916ebd65dabb66dd4f5dc720320d7e295ef1e0bd6d506ea0f7df6R1-R67) [[5]](diffhunk://#diff-a775f6de2e8d42982829b4161668f49dedbbd9dcbb05ce20003de7e62275c57aR1-R12) * Solution Configuration: * Updated `PowerToys.sln` to include `Common.Search` and `Settings.UI.XamlIndexBuilder` projects, and configured their build settings for various platforms and mapped project dependencies. [[1]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R714-R716) [[2]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2704-R2727) [[3]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R2889) [[4]](diffhunk://#diff-ca837ce490070b91656ffffe31cbad8865ba9174e0f020231f77baf35ff3f811R3157-R3158) **Spell-check Dictionary Updates** * Added new terms related to navigation and settings UI components (such as `Navigatable`, `NavigatablePage`, `settingscard`, `Tru`, `tweakable`) to the spell-check dictionary to support the new search and indexing features. [[1]](diffhunk://#diff-5dcab162c1b233a49973ae010f2b88c7ec4844382abd705e6154685e62bd5c4dR1020-R1021) [[2]](diffhunk://#diff-5dcab162c1b233a49973ae010f2b88c7ec4844382abd705e6154685e62bd5c4dR1498) [[3]](diffhunk://#diff-5dcab162c1b233a49973ae010f2b88c7ec4844382abd705e6154685e62bd5c4dR1755-R1761) --------- Co-authored-by: Niels Laute Co-authored-by: Gordon Lam (SH) Co-authored-by: Gordon Lam <73506701+yeelam-gordon@users.noreply.github.com> --- .github/actions/spell-check/expect.txt | 5 + .gitignore | 5 +- .pipelines/ESRPSigning_core.json | 3 + Directory.Packages.props | 1 + NOTICE.md | 1 + PowerToys.sln | 31 ++ doc/specs/search-result.png | Bin 0 -> 199192 bytes doc/specs/settings-search.md | 233 +++++++++++ doc/specs/workflow.png | Bin 0 -> 133038 bytes src/common/Common.Search/Common.Search.csproj | 8 + .../Common.Search/FuzzSearch/MatchOption.cs | 10 + .../Common.Search/FuzzSearch/MatchResult.cs | 67 ++++ .../FuzzSearch/SearchPrecisionScore.cs | 12 + .../Common.Search/FuzzSearch/StringMatcher.cs | 272 +++++++++++++ .../Common.Search/GlobalSuppressions.cs | 24 ++ src/common/Common.Search/stylecop.json | 22 ++ .../Settings.UI.Library/SettingEntry.cs | 44 +++ .../ModuleIconResolver.cs | 85 ++++ .../Settings.UI.XamlIndexBuilder/Program.cs | 314 +++++++++++++++ .../SettingEntry.cs | 44 +++ .../Settings.UI.XamlIndexBuilder.csproj | 44 +++ .../Settings.UI/Converters/IconConverter.cs | 133 +++++++ .../SearchSuggestionTemplateSelector.cs | 40 ++ .../Converters/UriToImageConverter.cs | 25 ++ .../Settings.UI/Helpers/NavigatablePage.cs | 144 +++++++ .../Settings.UI/Helpers/NavigationParams.cs | 18 + .../Settings.UI/PowerToys.Settings.csproj | 326 +++++++++------- .../Services/SearchIndexService.cs | 338 ++++++++++++++++ .../Settings.UI/SettingsXAML/App.xaml | 6 +- .../SettingsPageControl.xaml | 20 +- .../SettingsPageControl.xaml.cs | 19 +- .../SettingsXAML/Flyout/LaunchPage.xaml | 1 - .../SettingsXAML/MainWindow.xaml.cs | 14 +- ...ancedPaste.xaml => AdvancedPastePage.xaml} | 58 +-- ...aste.xaml.cs => AdvancedPastePage.xaml.cs} | 2 +- .../SettingsXAML/Views/AlwaysOnTopPage.xaml | 25 +- .../Views/AlwaysOnTopPage.xaml.cs | 2 +- .../SettingsXAML/Views/AwakePage.xaml | 21 +- .../SettingsXAML/Views/AwakePage.xaml.cs | 2 +- .../SettingsXAML/Views/CmdNotFoundPage.xaml | 10 +- .../Views/CmdNotFoundPage.xaml.cs | 3 +- .../SettingsXAML/Views/CmdPalPage.xaml | 11 +- .../SettingsXAML/Views/CmdPalPage.xaml.cs | 2 +- .../SettingsXAML/Views/ColorPickerPage.xaml | 39 +- .../Views/ColorPickerPage.xaml.cs | 2 +- .../SettingsXAML/Views/CropAndLockPage.xaml | 16 +- .../Views/CropAndLockPage.xaml.cs | 2 +- .../SettingsXAML/Views/DashboardPage.xaml | 9 +- .../SettingsXAML/Views/DashboardPage.xaml.cs | 2 +- .../Views/EnvironmentVariablesPage.xaml | 8 +- .../Views/EnvironmentVariablesPage.xaml.cs | 2 +- .../SettingsXAML/Views/FancyZonesPage.xaml | 75 +++- .../SettingsXAML/Views/FancyZonesPage.xaml.cs | 2 +- .../SettingsXAML/Views/FileLocksmithPage.xaml | 8 +- .../Views/FileLocksmithPage.xaml.cs | 2 +- .../SettingsXAML/Views/GeneralPage.xaml | 40 +- .../SettingsXAML/Views/GeneralPage.xaml.cs | 2 +- .../SettingsXAML/Views/HostsPage.xaml | 23 +- .../SettingsXAML/Views/HostsPage.xaml.cs | 2 +- .../SettingsXAML/Views/ImageResizerPage.xaml | 27 +- .../Views/ImageResizerPage.xaml.cs | 2 +- .../Views/KeyboardManagerPage.xaml | 12 +- .../Views/KeyboardManagerPage.xaml.cs | 2 +- .../SettingsXAML/Views/MeasureToolPage.xaml | 34 +- .../Views/MeasureToolPage.xaml.cs | 2 +- .../SettingsXAML/Views/MouseUtilsPage.xaml | 76 ++-- .../SettingsXAML/Views/MouseUtilsPage.xaml.cs | 2 +- .../Views/MouseWithoutBordersPage.xaml | 134 +++++-- .../Views/MouseWithoutBordersPage.xaml.cs | 4 +- .../SettingsXAML/Views/NewPlusPage.xaml | 19 +- .../SettingsXAML/Views/NewPlusPage.xaml.cs | 2 +- .../SettingsXAML/Views/PeekPage.xaml | 32 +- .../SettingsXAML/Views/PeekPage.xaml.cs | 2 +- .../SettingsXAML/Views/PowerAccentPage.xaml | 42 +- .../Views/PowerAccentPage.xaml.cs | 2 +- .../SettingsXAML/Views/PowerLauncherPage.xaml | 79 +++- .../Views/PowerLauncherPage.xaml.cs | 2 +- .../SettingsXAML/Views/PowerOcrPage.xaml | 13 +- .../SettingsXAML/Views/PowerOcrPage.xaml.cs | 2 +- .../SettingsXAML/Views/PowerPreviewPage.xaml | 38 +- .../Views/PowerPreviewPage.xaml.cs | 3 +- .../SettingsXAML/Views/PowerRenamePage.xaml | 28 +- .../Views/PowerRenamePage.xaml.cs | 2 +- .../Views/RegistryPreviewPage.xaml | 12 +- .../Views/RegistryPreviewPage.xaml.cs | 3 +- .../SettingsXAML/Views/SearchResultsPage.xaml | 81 ++++ .../Views/SearchResultsPage.xaml.cs | 108 ++++++ .../SettingsXAML/Views/ShellPage.xaml | 144 +++++-- .../SettingsXAML/Views/ShellPage.xaml.cs | 364 ++++++++++++++++-- .../SettingsXAML/Views/ShortcutGuidePage.xaml | 19 +- .../Views/ShortcutGuidePage.xaml.cs | 2 +- .../SettingsXAML/Views/WorkspacesPage.xaml | 12 +- .../SettingsXAML/Views/WorkspacesPage.xaml.cs | 2 +- .../SettingsXAML/Views/ZoomItPage.xaml | 101 +++-- .../SettingsXAML/Views/ZoomItPage.xaml.cs | 2 +- .../Settings.UI/Strings/en-us/Resources.resw | 28 ++ .../ViewModels/SearchResultsViewModel.cs | 133 +++++++ .../Settings.UI/ViewModels/ShellViewModel.cs | 16 +- .../Settings.UI/ViewModels/SuggestionItem.cs | 25 ++ 99 files changed, 3734 insertions(+), 558 deletions(-) create mode 100644 doc/specs/search-result.png create mode 100644 doc/specs/settings-search.md create mode 100644 doc/specs/workflow.png create mode 100644 src/common/Common.Search/Common.Search.csproj create mode 100644 src/common/Common.Search/FuzzSearch/MatchOption.cs create mode 100644 src/common/Common.Search/FuzzSearch/MatchResult.cs create mode 100644 src/common/Common.Search/FuzzSearch/SearchPrecisionScore.cs create mode 100644 src/common/Common.Search/FuzzSearch/StringMatcher.cs create mode 100644 src/common/Common.Search/GlobalSuppressions.cs create mode 100644 src/common/Common.Search/stylecop.json create mode 100644 src/settings-ui/Settings.UI.Library/SettingEntry.cs create mode 100644 src/settings-ui/Settings.UI.XamlIndexBuilder/ModuleIconResolver.cs create mode 100644 src/settings-ui/Settings.UI.XamlIndexBuilder/Program.cs create mode 100644 src/settings-ui/Settings.UI.XamlIndexBuilder/SettingEntry.cs create mode 100644 src/settings-ui/Settings.UI.XamlIndexBuilder/Settings.UI.XamlIndexBuilder.csproj create mode 100644 src/settings-ui/Settings.UI/Converters/IconConverter.cs create mode 100644 src/settings-ui/Settings.UI/Converters/SearchSuggestionTemplateSelector.cs create mode 100644 src/settings-ui/Settings.UI/Converters/UriToImageConverter.cs create mode 100644 src/settings-ui/Settings.UI/Helpers/NavigatablePage.cs create mode 100644 src/settings-ui/Settings.UI/Helpers/NavigationParams.cs create mode 100644 src/settings-ui/Settings.UI/Services/SearchIndexService.cs rename src/settings-ui/Settings.UI/SettingsXAML/Views/{AdvancedPaste.xaml => AdvancedPastePage.xaml} (92%) rename src/settings-ui/Settings.UI/SettingsXAML/Views/{AdvancedPaste.xaml.cs => AdvancedPastePage.xaml.cs} (98%) create mode 100644 src/settings-ui/Settings.UI/SettingsXAML/Views/SearchResultsPage.xaml create mode 100644 src/settings-ui/Settings.UI/SettingsXAML/Views/SearchResultsPage.xaml.cs create mode 100644 src/settings-ui/Settings.UI/ViewModels/SearchResultsViewModel.cs create mode 100644 src/settings-ui/Settings.UI/ViewModels/SuggestionItem.cs diff --git a/.github/actions/spell-check/expect.txt b/.github/actions/spell-check/expect.txt index de9c5a062b..ef580c9681 100644 --- a/.github/actions/spell-check/expect.txt +++ b/.github/actions/spell-check/expect.txt @@ -1024,6 +1024,8 @@ MYICON NAMECHANGE namespaceanddescendants nao +Navigatable +NavigatablePage NCACTIVATE ncc NCCALCSIZE @@ -1501,6 +1503,7 @@ SETRULES SETSCREENSAVEACTIVE SETSTICKYKEYS SETTEXT +settingscard SETTINGCHANGE SETTINGSCHANGED settingsheader @@ -1758,11 +1761,13 @@ transcodetomp transicc TRAYMOUSEMESSAGE triaging +Tru trl trx tsa tskill tstoi +tweakable TWF tymed TYPEKEYBOARD diff --git a/.gitignore b/.gitignore index a1a09282a8..8859e53742 100644 --- a/.gitignore +++ b/.gitignore @@ -355,5 +355,8 @@ src/common/Telemetry/*.etl # MSBuildCache /MSBuildCacheLogs/ +# PowerToys Settings generated search index (legacy location) and obj outputs +/src/settings-ui/Settings.UI/Assets/Settings/search.index.json + # PowerToysInstaller Build Temp Files -installer/*/*.wxs.bk +installer/*/*.wxs.bk \ No newline at end of file diff --git a/.pipelines/ESRPSigning_core.json b/.pipelines/ESRPSigning_core.json index 6f8f817492..9cb1fcb7d5 100644 --- a/.pipelines/ESRPSigning_core.json +++ b/.pipelines/ESRPSigning_core.json @@ -28,6 +28,8 @@ "PowerToys.GPOWrapperProjection.dll", "PowerToys.AllExperiments.dll", + "Common.Search.dll", + "PowerToys.AlwaysOnTop.exe", "PowerToys.AlwaysOnTopModuleInterface.dll", @@ -280,6 +282,7 @@ "Mono.Cecil.Pdb.dll", "Mono.Cecil.Rocks.dll", "Newtonsoft.Json.dll", + "CommunityToolkit.WinUI.Controls.TitleBar.dll", "NLog.dll", "HtmlAgilityPack.dll", diff --git a/Directory.Packages.props b/Directory.Packages.props index 649c927a64..4c09a60664 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -23,6 +23,7 @@ + diff --git a/NOTICE.md b/NOTICE.md index bedc11379d..9861a58f4a 100644 --- a/NOTICE.md +++ b/NOTICE.md @@ -1499,6 +1499,7 @@ SOFTWARE. - CoenM.ImageSharp.ImageHash - CommunityToolkit.Common - CommunityToolkit.Labs.WinUI.Controls.MarkdownTextBlock +- CommunityToolkit.Labs.WinUI.TitleBar - CommunityToolkit.Mvvm - CommunityToolkit.WinUI.Animations - CommunityToolkit.WinUI.Collections diff --git a/PowerToys.sln b/PowerToys.sln index 2b6d42305f..cedc7f05b4 100644 --- a/PowerToys.sln +++ b/PowerToys.sln @@ -712,6 +712,10 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Preview.BgcodePreviewHandle EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Preview.BgcodeThumbnailProvider.UnitTests", "src\modules\previewpane\UnitTests-BgcodeThumbnailProvider\Preview.BgcodeThumbnailProvider.UnitTests.csproj", "{61CBF221-9452-4934-B685-146285E080D7}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Common.Search", "src\common\Common.Search\Common.Search.csproj", "{38F187B2-6638-5A40-072F-DBE5E54070A0}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Settings.UI.XamlIndexBuilder", "src\settings-ui\Settings.UI.XamlIndexBuilder\Settings.UI.XamlIndexBuilder.csproj", "{DA0744BC-E822-680E-9CEB-D0FBA903A8EE}" +EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "MouseUtils.UITests", "src\modules\MouseUtils\MouseUtils.UITests\MouseUtils.UITests.csproj", "{4E0AE3A4-2EE0-44D7-A2D0-8769977254A1}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Workspaces.Editor.UITests", "src\modules\Workspaces\WorkspacesEditorUITest\Workspaces.Editor.UITests.csproj", "{43E779F3-D83C-48B1-BA8D-1912DBD76FC9}" @@ -2707,6 +2711,30 @@ Global {43E779F3-D83C-48B1-BA8D-1912DBD76FC9}.Release|ARM64.Build.0 = Release|ARM64 {43E779F3-D83C-48B1-BA8D-1912DBD76FC9}.Release|x64.ActiveCfg = Release|x64 {43E779F3-D83C-48B1-BA8D-1912DBD76FC9}.Release|x64.Build.0 = Release|x64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Debug|ARM64.Build.0 = Debug|ARM64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Debug|x64.ActiveCfg = Debug|x64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Debug|x64.Build.0 = Debug|x64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Release|ARM64.Build.0 = Release|ARM64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Release|x64.ActiveCfg = Release|x64 + {38F187B2-6638-5A40-072F-DBE5E54070A0}.Release|x64.Build.0 = Release|x64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Debug|ARM64.Build.0 = Debug|ARM64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Debug|x64.ActiveCfg = Debug|x64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Debug|x64.Build.0 = Debug|x64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Release|ARM64.ActiveCfg = Release|ARM64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Release|ARM64.Build.0 = Release|ARM64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Release|x64.ActiveCfg = Release|x64 + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE}.Release|x64.Build.0 = Release|x64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Debug|ARM64.Build.0 = Debug|ARM64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Debug|x64.ActiveCfg = Debug|x64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Debug|x64.Build.0 = Debug|x64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Release|ARM64.ActiveCfg = Release|ARM64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Release|ARM64.Build.0 = Release|ARM64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Release|x64.ActiveCfg = Release|x64 + {0217E86E-3476-9946-DE8E-9D200CEBD47A}.Release|x64.Build.0 = Release|x64 {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|ARM64.Build.0 = Debug|ARM64 {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6}.Debug|x64.ActiveCfg = Debug|x64 @@ -2900,6 +2928,7 @@ Global {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC} {F9C68EDF-AC74-4B77-9AF1-005D9C9F6A99} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} {9C6A7905-72D4-4BF5-B256-ABFDAEF68AE9} = {264B412F-DB8B-4CF8-A74B-96998B183045} + {1AFB6476-670D-4E80-A464-657E01DFF482} = {557C4636-D7E1-4838-A504-7D19B725EE95} {1A066C63-64B3-45F8-92FE-664E1CCE8077} = {1AFB6476-670D-4E80-A464-657E01DFF482} {5CCC8468-DEC8-4D36-99D4-5C891BEBD481} = {D1D6BC88-09AE-4FB4-AD24-5DED46A791DD} {89E20BCE-EB9C-46C8-8B50-E01A82E6FDC3} = {4574FDD0-F61D-4376-98BF-E5A1262C11EC} @@ -3167,6 +3196,8 @@ Global {61CBF221-9452-4934-B685-146285E080D7} = {6B01F1CF-F4DB-48B5-BFE7-0BF576C1D704} {4E0AE3A4-2EE0-44D7-A2D0-8769977254A1} = {2C318EC3-BA86-4372-B1BC-DB0F33C208B2} {43E779F3-D83C-48B1-BA8D-1912DBD76FC9} = {68328142-5B31-4715-BCBB-7B6345EE0971} + {38F187B2-6638-5A40-072F-DBE5E54070A0} = {1AFB6476-670D-4E80-A464-657E01DFF482} + {DA0744BC-E822-680E-9CEB-D0FBA903A8EE} = {C3081D9A-1586-441A-B5F4-ED815B3719C1} {2CF78CF7-8FEB-4BE1-9591-55FA25B48FC6} = {1AFB6476-670D-4E80-A464-657E01DFF482} {14AFD976-B4D2-49D0-9E6C-AA93CC061B8A} = {1AFB6476-670D-4E80-A464-657E01DFF482} {9D3F3793-EFE3-4525-8782-238015DABA62} = {66E1534A-1587-42B2-912F-45C994D32904} diff --git a/doc/specs/search-result.png b/doc/specs/search-result.png new file mode 100644 index 0000000000000000000000000000000000000000..4acde037e5fae3615d25ce5b5960f7e62ba87cd8 GIT binary patch literal 199192 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 NBO{?GUL$H4^nV1H(?|dS literal 0 HcmV?d00001 diff --git a/doc/specs/settings-search.md b/doc/specs/settings-search.md new file mode 100644 index 0000000000..e99bb448b6 --- /dev/null +++ b/doc/specs/settings-search.md @@ -0,0 +1,233 @@ +# PowerToys Settings – Search Index (Hard-sealed) + +## 1. What to index + +This section describes the current structure of the settings pages in PowerToys. All user-facing settings are contained in the content of . The logical and visual structure of settings follows a nested layout as shown below: + +```css +SettingsPageControl + └─ SettingsGroup + └─ [SettingsExpander] + └─ SettingsCard +``` +* Each SettingsGroup defines a functional section within a settings page. + +* An optional SettingsExpander may be used to further organize related settings inside a group. + +* Each actual setting is represented by a SettingsCard, which contains one user-tweakable control or a group of closely related controls. + +>Note: Not all SettingsCard are necessarily wrapped in a SettingsExpander; they can exist directly under a SettingsGroup. + +> For indexing purposes, we are specifically targeting all SettingsCard elements. These are the smallest units of user interaction and correspond to individual configurable settings. + +> There could be setting item in expander, so we also need to index expander items as well. + +### Module +Module is a primary type that needs to be indexed, for modules, we need to index the 'ModuleTitle' and the 'ModuleDescription'. +So these two should be passed in by x:Uid and binding with a key. + + +### SettingsCard/SettingsExpander + +Each SettingsCard/SettingsExpander should have an x:Uid for localization and indexing. The associated display strings are defined in the .resw files: + +{x:Uid}.Header – The visible label/title of the setting. +{x:Uid}.Description – (optional) The tooltip or explanatory text. + +The index should be built around these SettingsCard elements and their x:Uid-bound resources, as they represent the actual settings users will search for. + +--- + +## 2. How to Navigate + +### Entry +```csharp +enum EntryType +{ + SettingsPage, + SettingsCard, + SettingsExpander, +} + +public class SearchableElementMetadata +{ + public string PageName { get; set; } // Used to navigate to a specific page + public EntryType Type { get; set; } // Used to know how should we navigate(As a page, a settingscard or an expander?) + public string ParentElementName { get; set; } + public string ElementName { get; set; } + public string ElementUid { get; set; } + public string Icon { get; set; } +} +``` + +### Navigation +The steps for navigate to an item: +* Navigate among pages +* [optional] Expand the expander if setting entry is inside an expander +* [optional] Navigate within page + +> Use page name for navigation: +```csharp +Type GetPageTypeFromPageName(string PageName) +{ + var assembly = typeof(GeneralPage).Assembly; + return assembly.GetType($"Microsoft.PowerToys.Settings.UI.Views.{PageName}"); +} + +NavigationService.Navigate(PageType, ElementName,ParentElementName); +``` + +> Use ElementName and ParentElementName for in page navigation: +```csharp +Page.OnNavigateTo(ElementName, ParentElementName){ + var element = this.FindName(name) as FrameworkElement; + var parentElement = this.FindName(ParentElementName) as FrameworkElement; + + if(parentElement) { + expander = (Expander)parentElement; + if(expander){ + expander.Expand(); + } + + // https://learn.microsoft.com/en-us/uwp/api/windows.ui.xaml.uielement.startbringintoview?view=winrt-26100 + element.StartBringIntoView(); + } +} +``` + +## 3. Runtime Search +When user start typing for an entry, e.g. shortcut or 快捷键(cn version of shortcut), +we need to go through all the entries to see if an entry matches the search text. + +A naive approach will be try to match all the localized text one by one and see if they match. +Total entry is within thousand(To fill in an exact number), performance is acceptable now. +```csharp +// Match +query = UserInput(); +matched = {}; + +indexes = BuildIndex(); + +foreach(var entry in indexes) { + if(entry.Match(query)) { + matched.Add(entry); + } +} +``` + +And we don't intend to introduce complexity on the match algorithm discussion, so let's use powertoys FuzzMatch impl for now. +```csharp +MatchResult Match(this Entry entry, string query) { + return FuzzMatch(entry.DisplayedText, query); +} + +struct MatchResult{ + int Score; + bool Result; +} +``` + +## 4. Search Result Page +![search result page](./search-result.png) +After we got matched items, map these items to a search result page according to spec. +```c# +ObservableCollection ModuleResult; +ObservableCollection GroupedSettingsResults; + +public class SettingsGroup : INotifyPropertyChanged +{ + private string _groupName; + private ObservableCollection _settings; + public string GroupName + { + get => _groupName; + set + { + _groupName = value; + OnPropertyChanged(); + } + } + public ObservableCollection Settings + { + get => _settings; + set + { + _settings = value; + OnPropertyChanged(); + } + } + public event PropertyChangedEventHandler PropertyChanged; + protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null) + { + PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); + } +} +``` + +## 5. How to do Index +### Runtime index or build time index? +Now We need to build all the entries in our settings. + +Most of the entry properties are static, and in runtime, the `SettingsCard` is compiled into native winUI3 controls (I suppose, please correct here if it's wrong), it's hard to locate all the `SettingsCard`, and performance is terrible if we do search for all the pages' elements. + +### Build time indexing +We can rely on xaml file parsing to get all the SettingsCard Entries. +And we don't want xaml file to be brought into production bundle. +Use a project for parsing and bring that index file into production bundle is a solution. +```csproj + + + $(MSBuildProjectDirectory)\..\Settings.UI.XamlIndexBuilder\bin\$(Configuration)\net8.0\XamlIndexBuilder.exe + $(MSBuildProjectDirectory)\Views + $(MSBuildProjectDirectory)\Services\searchable_elements.json + + + +``` +```csharp +for(xamlFile in xamlFiles){ + var doc = Load(xamlFile); + var elements = doc.Descendants(); + + foreach(var element in elements){ + if(element.Name == "SettingsCard") { + var entry = new Entry{ + ElementName = element.Attribute["Name"], + PageName = FileName, + Type = "SettingsCard", + ElementUid = element.Attribute["Uid"], + DisplayedText = "", + } + + var parent = element.GetParent(); + if(parent.Name == "SettingsExpander"){ + entry.ParentElementName = parent.Attribute["Name"]; + } + } + } +} +``` +Runtime index loading: +``` +var entries = LoadEntriesFromFile(); +foreach(var entry in entries){ + entry.DisplayedText = ResourceLoader.GetString(entry.Uid); +} +``` +So now we have all the entries and entry properties. + +## Overall flow: + +![search workflow](./workflow.png) + + +## 6. Corner cases - that have not addressed yet + +1. CmdPal page is not in scope of this effort, that needs additional effort&design to launch and search within cmdpal settings page. + +2. Go back button + +3. Dynamic constructed settings page + - Shortcut guide, with visibility converter + - advanced paste dynamically configured setting items + - powertoys run's extensions \ No newline at end of file diff --git a/doc/specs/workflow.png b/doc/specs/workflow.png new file mode 100644 index 0000000000000000000000000000000000000000..6920644fc5f872d985161259de30e848727bcf39 GIT binary patch literal 133038 zcmeFZ^;=YZ7d1YFG}17HNW+jr4=oKt4~<9)3?UNIozfx<-3>!ZC`bwt(hZ_Wi-NRt z_#U6T0VJ6VMTWKpoA6S{_uITN;Z0AZdv_Q5pQnG%e7(fdIYS)TSXo(5U*>1@$I~o4^q1!fDR-PHH_X3YvH9}sU9H@2 zpOgBlU+IZh|4emO&t`ZtZ|De%*QXTr{t&Dl;R)X8UCFe;o%Obx6EkO+_UUQJE9g5- zmvZeqNw?dPSsHSI_ugU+zWrx|jzn5LeTwb5 zJ>GwFc_Qeu|JA+UlmA8Y{G$Difv@WvSv4veLC|$T9OGFl`gLhn6jV#eFi1=K9PZ3p z%SQmR%6V4a>khrR+LjpiCB({H=yP99&(9HiMptTZ*dbq0Z$Mz?e35S~{dVu|7ZwW4 zu5FrPK~+5bGLi6}!M9(|?iDAK*KHV#_s>@8GnXn2!^{#Zk8_jB5!_1Fx@6f1?vIXf zDqt48o4XCO2zG{ABLlK`X3j4H1bdktQAYJ|fF=|5MHC)(t;pR6{a(igO}dKmyplWn zXu0NhznG~~I$sEDd#iy-L$P#i1fr0a` z){{|HC|uA2MujZ;b})(*yvL3dr>An~Dg9_7F5g63q~~w$oakjM6KNe|R1&;zBS}-{ zi3=)O2G{Kt3XiviViC3MuJ9>yP;$(5d5UWnvO%Q{WVBN}8WL<1tD?#oTYcFlDe*gSq8Rz@Y>i-;*DeQ26T;|+7At7OP z`9PLors6<~31O06^hHDPt0Oa4e1(DwE>bB-5M@Vh+nE{ZFiT?y8A)zHDVeC}Iua)& zosvcdD;r?+mwb@Y=^?k|?c;(9bCR2hVuv#qxnAhm*$)Fot>8`9qtDWj3;O06h5 z+fK$}u18J3{cA;4+VL@0l&jx{((VqpJ@K)^5MD}L1A)s>TSP@yc=v+POeKMeA*dM&;bzt;0X_h&FIE$xR5ojWQLnM2jl zEa3{$<0gj*#*5{P?xcT`tqXSUi)r=0<6Ewk6K&dLzm|6pNHegGooCdEv>UKIP`z$iYG>=%3UDGH zNh-2$8VEe*M3{iFp9Hvq`+3{dm%aXExUFwxVq+7#IxQmKy48qk-}rSkW;(Vbe7nv- zA_Hz+L*GXt{USTay0T^9y+uOd+j!6<=D!kN0bGuK=NNaC9IDMLTLB8T#u&@3q*er?I0r3yV0xe^pj z_G4Fn6naRqKmHfJ+|)yX)ytX$!xZqJiU)y=&E4%fZ zzUj(R8?=b@qB$1>Y)1ig^=2P4swwUI?H|o_R8x$c5b(wiksPWi{xk(~d*nOdS_@_+ z^!kRayh|8`^uiZOQb|b85$)TfHx@R$@}lxf8kHUv6njxjwXtWBf=?9+XI$rh@i0I} zCS46DUKryM1+IoBjaN8Ps{jI>B za`HZRoS;ef6a~DfBJC!Y6xDV?^FjFvHa7kA__Lj2(Dw^J&jwqv&kq%kY@+L4`jt@?EIyv~I<8 zLzW$;``v@#Z8f}vQ)ETi&9d%qg4Q&917>z$?=OuZAGy3bCBNtrXUbP?Zyw@#>|Kfg z@3Q0FIK5H`&ON$0$G077WoSJZ@D~hq54?n6O$ceCmo0(JK-<@0p!zR1zRQp}|LWza|zrw zQX|;p`9+`cfR_lUlPMcMmk>2Yl(hshFtc6OI1>^L2(v*{o5&0!`3$2zW$V%Gxu;-O z<`aVT^6+D|t4+!F)Q5+<5KS(>*D3GkVgM`ksZW(84Az2Y3AK4+->{^kn4x*&5#;>E3`U zS*{D-w&)$`);UqOsP+$W=TCNv)^5@x+iUhrDW;8TiMF~L-{Xk&&Lp^b;aP!Vf3x`zg5UqNbFZSVPGYiyZ2LNN_g6DT?)=*8q>(Q=dx_rFxjzFV5%#; zO^!=svr9%8M{-VJBL>#4zx5O|y(?*UeoIj+>hB(>LTQ+7rmXJ!eH{|gkpUGcL5nIv zB$E!_Bhyoq5d$Bh9<_h26d5E?pIcF(H29X0)vv(%8@J}+rK{2t;7uKKNP{l=ZCWr5 z*vYWl(^dbcNVVang?es=Is%6yk}SXFp62kR>)Tbo+YLMj87Cy1sj{?&%XTZacgIJ? zamvWmg0DvI&R0qpKQI1$fvh!Y)1ktt+bh* zR8{a|+0sgu!I2!;i1D?y2zAaZrV*9SaN=a0&pyj=L`*XIGE5n4piE^Lq8}M1&ZHLL zj=50PCB8um<_t5hlXTw5Nh;ns@>8*KH!twY?Fo}g9`5yx=B4<(%uSp_9{ZWEQpAJq z&9al>!&mzDH&=#&6G9mI_|5cl3xv#58v4ySWZ{KodIzTn-!5@d3W<5GRX=anv4&GQ0P0*WHeuP9MJ3W%F$c^xXe}>G&>m!lPU*?{?gfah-x%_o~o+s3G$wj~| z#q6#y*1YF!I7-O;x)ib``dFWX-M^Ev_WNqkLZZHJop6KIk29ObyV-}YD4OV}dTLCY zpaEwtf3deJqaWM%(JXzxJ*B~aYT7%Rze~~$06H5f1$Q-fl)-!{=IV1xBr-Iz6WrxJG*%o=N59TMf5 z(sPc(CyT!^2{Ie2yl^$RotUh_cL0GO?B2g<^iv_O4ThRL85jP#`!=1ILJdscaBr%Y zRUT{rj zv9PuB*YEy(Gtl#yawO(A08c=_x*F9;NRK45xfIeA(Qqcii-1T{?;wqp(M+#Ly*7NY zTw>;-*A@D+87;+$+AClos=f=T^_#J(|I|($Jq+$2$v~kz^&O3O1}oWm&YPo=>KEWaYUq;2DiS?@ zUcCcAK*ps+d+U~DL{Wwi%|COKb&idX(F##XoCsnU({?vHms#iU)z3 z@A4%#ih!yOq7Jg7;4%UQA07#w)LSKqIkU)Bs76yM zK%5qN0;bYf-uz&qnZ1>}+bsNEl+h&ARD`)@!-aA;gJu=Z!x@M^&;d35R7S3M_qcusm%iRPVf>Xodwj9@2c5 zjYP@qC(Ok6v@z`(RCD(RsAEFrT8m}WwL(;Xo=Q{1jMdEm^_uZ!`$J$=nKUEyw!jo* z|CAkmVVM8|9GBQ;7|oYyzeADjm9Lw=b7A{=BKG<$XfWtVdR~Jp9cLL?OI9I*S4kE{ z6@Z<9hZ}07mD`k%jrRqB#JQ!q3PsB`9NlaxqvCXP-%SRDV>EltZxtr-Aya#0c;WIP zKDkig+h&1dA?BV&qWdCddR}^uwAvs`d-hwN@UrAmBDbL=1odzC-oi(Y+;*=SI3cSr zWCoqsPdYZ_+)GmRM(Q^3FRC8{D06+9QiyFbf|;ng6R)kdY>tRWjLLxg>D3^dRx!n+ z**PBS$RbwYgWLDZU~}_;ex6TBfkmCRxG-eQBgI|%4w14Tb9jrxUrySJLEz4?}Jqv2ssfPoqlos*_WonqzJSX3EnynlfSR+6b7dVQv|3gwZ4L zRa&`b4-sOR>rV@X@ywXXngIb(k{6v$cEFTQb(48_IJO(twZAs$=Cq0o}Yevzz;h~HV(@SY>F1s>WkaGt%ZR4G8pZlfMOdWyn zSe@ufVD6+ld|iS9Ga(0OC1r8khpbZKt$!}cbK~gXz-97Og!Tw)DyJE5cUCE2LR$7~ zozeKuz-<|fThEU$)og^m_pR(+_LInC*T{Lg<+`J>1!_jskY6T&S2G14?$PARt=;bb zZ}8ks=ZtNanjJGmosG8K^YvO_XuIbcRg)SXQx;T;mks%qWCrLH0Jd{bM#F=j4G5>s z$!6}2`Qo^)U+ozBI&}aO%ysRtmdR6oy&fdFQZ$opc1LM`3o3kSjIOErHmc#YdH% zGaB%V!27kxFoV;hnaD+L8TV)hU9&z<#|2hZxEV;Kcqbh9(qY};^Y|xhVrC~5!^iRS zv$MYv^tWD7I4$ySk2z#L%GGVuHC>zz8eHv>ul}8jL-s(}|dETANErvO@TU_dGD~$&|jH2)SeXn`gIkJ;x)* zec%0;8ce4N^&FRQV5*RLhdnzZf_mc%V=C}61yRecLm!oF>TA=+?lcC4ISk;C-S^+9 z`jlEiX2?fBbUS1*clW{1-uoV!$~PaMt4tk~-n7h)?>gu;nK0y|*>#L<_7h{5V4GvR zV=nYLH5mfJmVgBcT&ccnfp7@nb%YIlM7bkjZp%)TcCLg)KYFKqhJtR!oa!!2#G?-` zsn#@C!sMM2RmMubCF(aMpr^LbZmy1)BE`wnQ0U5Y-lVnm2(d~{-BgFqIBBXbV)PNj z!FZf|1lx8hYa9!6W zcehcz)(m;sG&1Kaeez|W4dICvaIEg(uA9Ik?Aj@`D1;`x(BC!a*#h&QpxhxtpMRN_ zp4@=_Hmo`CZ0szi8bg|v`50PL?wu-LQ;x~RPX`vR$)iHYtQi%F1kA5J;(}`8dprCD z4?DxS19Lr)PZDQJzMd1wo198H*dL=eU{psnC?T!V`@KCp=q7g?oQv7=Vh`p?4T@$u zJ?6?X12x3`1+UeBh=L{>PPg16P7m%{jN0k~Lp5kVaiBv!{>H01qmFnCZPAsGVWH!r zg>_ba*73)BUJ5Q8*paA7vl6n?S_v~}Tbg5BIx)x_PUQ-eSDh&PGC&>1T137P0Aj48 z*jgH{F@CH?cAxODPqfRIp5DN|Lz|xm&a;&G&qqhN~m9<)dvuP z94>Rq|KK|@sOR_5DuXXAIPaISiyjh*h@K&wEEt@OdD6_B7k55fk9`({6ouY| zj4)yIsi3`SqG0wM7%ye35yQNapoJaV@;!7W^ck3?(y zI@;Y87*F3{2!DcY*nQxHC{|BZ@>fP;Phb~@seq}a@S%*)iKDdl=r%EBen+eaf_jke za3>y)20D}}Wgdq!KSw-MxwYTES!%6|H~Pd_)}qo2qeQ;Z?~(-w*;MSxvR{rTh;2NCX&n+1se>8eZ$*g&Ea4lKZ8yh)9-M z!$l^eX?chq@SHO!^4R+Pc*q$t?ll;@BCHp0_v#(Wz9;2z?b0?ib**Uj*p7pi#LEqs zn}&t!xG+>WtNGg_$)$KQ9E-Iw0ctK4tGS9|fGAKHa`zl5Lrj)W=ZA0{CkwZ7+;41% z&&1FO+b%MFfBywBW%NKSJ*7hL33^>lN8d3LqqsrfJFu8(aaV~hepTTc8KFlccHaw@ zt)gW0#Ti3-$S1gj1o6;wA>@C`Rf|x(D53jhv!O5@+LtNhdV4VFwjxg<)#)Brf&(d{ zXsVLH!4Ahass)=(QWd|qGNj=9VFGpNp1oH^F+FGK29d~xP(E{N3c`(htQsY5`P^d5 z{*ZdPVlFS)B6sy8MN+|}#s7A5=%!ZHWkW{bq4qN4>vEzjN~Ab$s&WeIEqUkexyx{yFnW*RU4*WVvgrKP+w5u@#?+hlSQtRuKe9zFWooaKbE20{Pga5 zJ_p1LN0vQyNNF(}_9bZ}`P}C}w2iCHkIBMA z>x6~J#(@zv(=SfkHQG~N+FZZhU|XJKvod<4_Cdr{ql{-8sX*IGaFXfpqKvbh4etqh`MYJA`0Dz*9jDK9R_b(N)r?@VlYD<-E4pRWp8krv7NsSB_d7d9_SQ_Ld9{Xm7&ri z1$!_QfK2SiicUs196t@G)281b+N9kZFi_^ti|-&au5N4-11?1#D^8S!g<&D?efTa;zc?$xij%nzKlE+bp)|HseVa=)VeD znc|G!`>X*cWJIMJ!3W`pBu%v!PN`O()>C`W(d!KT<3!wqDQtEqr2Z~dVYw;(^IVIU zsHuPq&UTNPnblXRdw`a(#GCBVJP+RG04SUw?WHmGF=*vZuZmjinpxme4o$hJH*s6K zly;I0j|+ivKpQ7Iz|mIu7^@qmdZ}CPIUz%%qtj5N`46IL3>$j)?Jru?oWvfy3Vo1o zH_Pz3^1g*aet3!seQYRZ8Wat%t_g|CgaiW&T8JQlB^SJGS67GDa3ssFt}Fq?stXU z+ElkR&V(0p8afcSah6LY-07*k>ycyHw3#mlX$52{vC^c&+-uGd_IpzCP2d(BRybim zJt6YOhy-sMBwNgk4*VvM%m9%1ZBm7un7!016tlHkC&q={TH)r^; zt$!p^;kH{9)}}7@uLqfi{5UF)-5F&jOnPKu2BIDt|F(MiiyfkDHE;6}!md)HpUpt1 zf0UGp@_q&%92Q=O&~*Rt_kWIY4}ScqK4O@@qtB|xdw!4oa4;4zhHE>QlWlpM-H8Dr z-0ysMd@=Ap{+{Xkc-~`^r|T?sB?7)xN2x+zcfYNVmgWJJRDa|Nk)Z957gwg+Sy00@ zGZh#-Jimt6P=4j1xMfTH({LQ2w0ri$Lr!aLb8GUZ98784*?L$j!c{B~=@2(JO40P; zIO6c6TIMtbQiGM5@5c-o0%q2UpM?)vdsIZ!q`2BH3#gS2ABGPe?J0{L=KUi9>(!&5#)_PDZX z^ENfZPEKLLr-z=pR7*n#8JgMGZ$ffm+RW_un~iu2W~@p2Tr>507FKMKK3xa5t7pR! zd%mcSOEYJuM(=8G&dv3&MOCeK{`h=vcc^n+bJu|cbPqIIAlH5T_5U-#>Aa@lKW8dR z=ySpp*~8=$%kb%}MJ5{t8;LsI2gZ2HhQ_CmOi)aY=ix6HaBH(Gi(6HW?HBF^iE~ts z>3$N>ZaWC4CS?DRNoWmJz{dhl^RtWBVA^k>YT$_ZIZE&SSN*#}5-FREFNsfyaxR?JJ@5TFVE{>GO^K0&0_xF}dwOx5Q z->*)Vpw+q3&%0)7?tk9tw?9H?FmRK{g*zpM$g-hjpsz)vD2s)dsoU;xrXn-ene=|~ zt9Se)e%=FUs13eH>%%AXQvWw5@a*Rq**;Qxv4I^X&h;IIP}6rh=Bdc*x#;bi6i~{a zro-oa{k6taqA>x7S7O{sNMl$?4T8o>7Yd8Ci|KVT!xeXrfX>aEzg1Tz#98oEpQJC! zC?!HT5w%oXxDQAWb2^EwZBbJ-F}X2Ru-th1cLJ2nCvue@Mvo!pOsNBlo4d0wN9#1* z;2}OLQ=FA^?wLm?7#d#j6D9)ktJi4{a3%jRxP^|DYkttJ(3j2-Adsv@_moBv^U0bo zKz^~qAukfyOAV{r~=LSgm%c(Z19rupS%XE9*6R6&Z~D*a2Pt>i!_I z%QD7u2e(k!g0)76xeVUAi%Bdjn8wRTWJV&UlG+)Q6DP}CXPIZr~#ePGyC42{_99vdlJpeB& z`21T3ej2~+zep;^@8r96LC{&1T!O1Wbi{|+z%o%l^56;0L{ zYJYN)UvHWM|DF{dpK>|7UH5yhx@ydsc&y1Z)>!P6BS7Ra0#q`(Dc>HJqdzqf<$1SE z4>u8YS~$7L{mz%B7%Gj_KW@pO-PL2T3c9ir*KY9MbE+|KBZuR2sXGcGvLV&w@}~kJ zmxSZeCz=TfydT1^sn;Jn1Y^my{-4h*qhYbAp#G5WX5(M{^2W zrqk9m60+`DwTtD==RPOjzP*;|ezzMdjBjg|Te9r(K{)Z_<-yL^HqZElXTSc3E|}_< zvAnXc7g%S@4i6a`{t%5WK9}pb-FrSboW}FIl*r7nS(9LV@7+q$!`mOK zu>IDJ!>)72u#w;+&)lH1&#>>AwhhQ5av0Op%~#KfwZ4aUP}$2*I_q+OPUMc7Gz9ts zUImf_1NnjSfTvVRT>G#f(X8hkNE7iG@xDZnC#pp5)^{`h zrOCT~ZwW*YIyIXEbN21}+xdFO$#~!5qKWmy5XDpet_vFm{~y-A$DamqsXf_zKSk@m zCB%SMiQQr-qnioIae}_QMq~r9pw~SYgYdoRN2vX5L)npLRkAfaRba7Wu&%vqL|VLH5OJDH@f+4CVXLXMq3`p=#r^&fA1hhs z=GQ|`JA;-q1r~xT4B-(ZDu@*=u8)Z7Ad8Cn!5dj{AU_{Tdt9zkhEt_{1Wx3hpli@DgBHPW~DM_%HT- z+&}3A$CYWMudc_3sI6f26uo4Oi�PHkWa@U)Opg#07B&s4T0?<1N_9sPL34NthkO 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

P_Ktrq#e1?ia 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 + + + + + enable + + diff --git a/src/common/Common.Search/FuzzSearch/MatchOption.cs b/src/common/Common.Search/FuzzSearch/MatchOption.cs new file mode 100644 index 0000000000..9f9f573f42 --- /dev/null +++ b/src/common/Common.Search/FuzzSearch/MatchOption.cs @@ -0,0 +1,10 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Common.Search.FuzzSearch; + +public class MatchOption +{ + public bool IgnoreCase { get; set; } = true; +} diff --git a/src/common/Common.Search/FuzzSearch/MatchResult.cs b/src/common/Common.Search/FuzzSearch/MatchResult.cs new file mode 100644 index 0000000000..f448f449a7 --- /dev/null +++ b/src/common/Common.Search/FuzzSearch/MatchResult.cs @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Common.Search.FuzzSearch; + +public class MatchResult +{ + ///

+ /// The raw calculated search score without any search precision filtering applied. + /// + private int _rawScore; + + public MatchResult(bool success, SearchPrecisionScore searchPrecision) + { + Success = success; + SearchPrecision = searchPrecision; + } + + public MatchResult(bool success, SearchPrecisionScore searchPrecision, List matchData, int rawScore) + { + Success = success; + SearchPrecision = searchPrecision; + MatchData = matchData; + RawScore = rawScore; + } + + public bool Success { get; set; } + + /// + /// Gets the final score of the match result with search precision filters applied. + /// + public int Score { get; private set; } + + public int RawScore + { + get => _rawScore; + + set + { + _rawScore = value; + Score = ScoreAfterSearchPrecisionFilter(_rawScore); + } + } + + /// + /// Gets matched data to highlight. + /// + public List MatchData { get; private set; } = new(); + + public SearchPrecisionScore SearchPrecision { get; set; } + + public bool IsSearchPrecisionScoreMet() + { + return IsSearchPrecisionScoreMet(_rawScore); + } + + private bool IsSearchPrecisionScoreMet(int rawScore) + { + return rawScore >= (int)SearchPrecision; + } + + private int ScoreAfterSearchPrecisionFilter(int rawScore) + { + return IsSearchPrecisionScoreMet(rawScore) ? rawScore : 0; + } +} diff --git a/src/common/Common.Search/FuzzSearch/SearchPrecisionScore.cs b/src/common/Common.Search/FuzzSearch/SearchPrecisionScore.cs new file mode 100644 index 0000000000..5f1917f14c --- /dev/null +++ b/src/common/Common.Search/FuzzSearch/SearchPrecisionScore.cs @@ -0,0 +1,12 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Common.Search.FuzzSearch; + +public enum SearchPrecisionScore +{ + Regular = 50, + Low = 20, + None = 0, +} diff --git a/src/common/Common.Search/FuzzSearch/StringMatcher.cs b/src/common/Common.Search/FuzzSearch/StringMatcher.cs new file mode 100644 index 0000000000..be702bb8d9 --- /dev/null +++ b/src/common/Common.Search/FuzzSearch/StringMatcher.cs @@ -0,0 +1,272 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.Globalization; + +namespace Common.Search.FuzzSearch; + +public class StringMatcher +{ + public StringMatcher() + { + } + + private static readonly char[] Separator = [' ']; + + /// + /// Current method: + /// Character matching + substring matching; + /// 1. Query search string is split into substrings, separator is whitespace. + /// 2. Check each query substring's characters against full compare string, + /// 3. if a character in the substring is matched, loop back to verify the previous character. + /// 4. If previous character also matches, and is the start of the substring, update list. + /// 5. Once the previous character is verified, move on to the next character in the query substring. + /// 6. Move onto the next substring's characters until all substrings are checked. + /// 7. Consider success and move onto scoring if every char or substring without whitespaces matched + /// + public static MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption opt = null) + { + opt = opt ?? new MatchOption(); + + if (string.IsNullOrEmpty(stringToCompare)) + { + return new MatchResult(false, SearchPrecisionScore.Regular); + } + + SearchPrecisionScore score = SearchPrecisionScore.Regular; + + var bestResult = new MatchResult(false, score); + + for (int startIndex = 0; startIndex < stringToCompare.Length; startIndex++) + { + MatchResult result = FuzzyMatch(query, stringToCompare, opt, startIndex); + if (result.Success && (!bestResult.Success || result.Score > bestResult.Score)) + { + bestResult = result; + } + } + + return bestResult; + } + + private static MatchResult FuzzyMatch(string query, string stringToCompare, MatchOption opt, int startIndex) + { + if (string.IsNullOrEmpty(stringToCompare) || string.IsNullOrEmpty(query)) + { + return new MatchResult(false, SearchPrecisionScore.Regular); + } + + ArgumentNullException.ThrowIfNull(opt); + + query = query.Trim(); + + // Using InvariantCulture since this is internal + var fullStringToCompareWithoutCase = opt.IgnoreCase ? stringToCompare.ToUpper(CultureInfo.InvariantCulture) : stringToCompare; + var queryWithoutCase = opt.IgnoreCase ? query.ToUpper(CultureInfo.InvariantCulture) : query; + + var querySubstrings = queryWithoutCase.Split(Separator, StringSplitOptions.RemoveEmptyEntries); + int currentQuerySubstringIndex = 0; + var currentQuerySubstring = querySubstrings[currentQuerySubstringIndex]; + var currentQuerySubstringCharacterIndex = 0; + + var firstMatchIndex = -1; + var firstMatchIndexInWord = -1; + var lastMatchIndex = 0; + bool allQuerySubstringsMatched = false; + bool matchFoundInPreviousLoop = false; + bool allSubstringsContainedInCompareString = true; + + var indexList = new List(); + List spaceIndices = new List(); + + for (var compareStringIndex = startIndex; compareStringIndex < fullStringToCompareWithoutCase.Length; compareStringIndex++) + { + // To maintain a list of indices which correspond to spaces in the string to compare + // To populate the list only for the first query substring + if (fullStringToCompareWithoutCase[compareStringIndex].Equals(' ') && currentQuerySubstringIndex == 0) + { + spaceIndices.Add(compareStringIndex); + } + + bool compareResult; + if (opt.IgnoreCase) + { + var fullStringToCompare = fullStringToCompareWithoutCase[compareStringIndex].ToString(); + var querySubstring = currentQuerySubstring[currentQuerySubstringCharacterIndex].ToString(); +#pragma warning disable CA1309 // Use ordinal string comparison (We are looking for a fuzzy match here) + compareResult = string.Compare(fullStringToCompare, querySubstring, CultureInfo.CurrentCulture, CompareOptions.IgnoreCase | CompareOptions.IgnoreNonSpace) != 0; +#pragma warning restore CA1309 // Use ordinal string comparison + } + else + { + compareResult = fullStringToCompareWithoutCase[compareStringIndex] != currentQuerySubstring[currentQuerySubstringCharacterIndex]; + } + + if (compareResult) + { + matchFoundInPreviousLoop = false; + continue; + } + + if (firstMatchIndex < 0) + { + // first matched char will become the start of the compared string + firstMatchIndex = compareStringIndex; + } + + if (currentQuerySubstringCharacterIndex == 0) + { + // first letter of current word + matchFoundInPreviousLoop = true; + firstMatchIndexInWord = compareStringIndex; + } + else if (!matchFoundInPreviousLoop) + { + // we want to verify that there is not a better match if this is not a full word + // in order to do so we need to verify all previous chars are part of the pattern + var startIndexToVerify = compareStringIndex - currentQuerySubstringCharacterIndex; + + if (AllPreviousCharsMatched(startIndexToVerify, currentQuerySubstringCharacterIndex, fullStringToCompareWithoutCase, currentQuerySubstring)) + { + matchFoundInPreviousLoop = true; + + // if it's the beginning character of the first query substring that is matched then we need to update start index + firstMatchIndex = currentQuerySubstringIndex == 0 ? startIndexToVerify : firstMatchIndex; + + indexList = GetUpdatedIndexList(startIndexToVerify, currentQuerySubstringCharacterIndex, firstMatchIndexInWord, indexList); + } + } + + lastMatchIndex = compareStringIndex + 1; + indexList.Add(compareStringIndex); + + currentQuerySubstringCharacterIndex++; + + // if finished looping through every character in the current substring + if (currentQuerySubstringCharacterIndex == currentQuerySubstring.Length) + { + // if any of the substrings was not matched then consider as all are not matched + allSubstringsContainedInCompareString = matchFoundInPreviousLoop && allSubstringsContainedInCompareString; + + currentQuerySubstringIndex++; + + allQuerySubstringsMatched = AllQuerySubstringsMatched(currentQuerySubstringIndex, querySubstrings.Length); + if (allQuerySubstringsMatched) + { + break; + } + + // otherwise move to the next query substring + currentQuerySubstring = querySubstrings[currentQuerySubstringIndex]; + currentQuerySubstringCharacterIndex = 0; + } + } + + // proceed to calculate score if every char or substring without whitespaces matched + if (allQuerySubstringsMatched) + { + var nearestSpaceIndex = CalculateClosestSpaceIndex(spaceIndices, firstMatchIndex); + var score = CalculateSearchScore(query, stringToCompare, firstMatchIndex - nearestSpaceIndex - 1, lastMatchIndex - firstMatchIndex, allSubstringsContainedInCompareString); + + return new MatchResult(true, SearchPrecisionScore.Regular, indexList, score); + } + + return new MatchResult(false, SearchPrecisionScore.Regular); + } + + // To get the index of the closest space which precedes the first matching index + private static int CalculateClosestSpaceIndex(List spaceIndices, int firstMatchIndex) + { + if (spaceIndices.Count == 0) + { + return -1; + } + else + { + return spaceIndices.OrderBy(item => firstMatchIndex - item).Where(item => firstMatchIndex > item).FirstOrDefault(-1); + } + } + + private static bool AllPreviousCharsMatched(int startIndexToVerify, int currentQuerySubstringCharacterIndex, string fullStringToCompareWithoutCase, string currentQuerySubstring) + { + var allMatch = true; + for (int indexToCheck = 0; indexToCheck < currentQuerySubstringCharacterIndex; indexToCheck++) + { + if (fullStringToCompareWithoutCase[startIndexToVerify + indexToCheck] != + currentQuerySubstring[indexToCheck]) + { + allMatch = false; + } + } + + return allMatch; + } + + private static List GetUpdatedIndexList(int startIndexToVerify, int currentQuerySubstringCharacterIndex, int firstMatchIndexInWord, List indexList) + { + var updatedList = new List(); + + indexList.RemoveAll(x => x >= firstMatchIndexInWord); + + updatedList.AddRange(indexList); + + for (int indexToCheck = 0; indexToCheck < currentQuerySubstringCharacterIndex; indexToCheck++) + { + updatedList.Add(startIndexToVerify + indexToCheck); + } + + return updatedList; + } + + private static bool AllQuerySubstringsMatched(int currentQuerySubstringIndex, int querySubstringsLength) + { + return currentQuerySubstringIndex >= querySubstringsLength; + } + + private static int CalculateSearchScore(string query, string stringToCompare, int firstIndex, int matchLen, bool allSubstringsContainedInCompareString) + { + // A match found near the beginning of a string is scored more than a match found near the end + // A match is scored more if the characters in the patterns are closer to each other, + // while the score is lower if they are more spread out + + // The length of the match is assigned a larger weight factor. + const int matchLenWeightFactor = 2; + + var score = 100 * (query.Length + 1) * matchLenWeightFactor / (1 + firstIndex + (matchLenWeightFactor * (matchLen + 1))); + + // A match with less characters assigning more weights + if (stringToCompare.Length - query.Length < 5) + { + score += 20; + } + else if (stringToCompare.Length - query.Length < 10) + { + score += 10; + } + + if (allSubstringsContainedInCompareString) + { + int count = query.Count(c => !char.IsWhiteSpace(c)); + int threshold = 4; + if (count <= threshold) + { + score += count * 10; + } + else + { + score += (threshold * 10) + ((count - threshold) * 5); + } + } + +#pragma warning disable CA1309 // Use ordinal string comparison (Using CurrentCultureIgnoreCase since this relates to queries input by user) + if (string.Equals(query, stringToCompare, StringComparison.CurrentCultureIgnoreCase)) + { + var bonusForExactMatch = 10; + score += bonusForExactMatch; + } +#pragma warning restore CA1309 // Use ordinal string comparison + + return score; + } +} diff --git a/src/common/Common.Search/GlobalSuppressions.cs b/src/common/Common.Search/GlobalSuppressions.cs new file mode 100644 index 0000000000..c1ccfc6882 --- /dev/null +++ b/src/common/Common.Search/GlobalSuppressions.cs @@ -0,0 +1,24 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +// This file is used by Code Analysis to maintain SuppressMessage +// attributes that are applied to this project. +// Project-level suppressions either have no target or are given +// a specific target and scoped to a namespace, type, member, etc. +using System.Diagnostics.CodeAnalysis; + +[assembly: SuppressMessage("StyleCop.CSharp.NamingRules", "SA1309:Field names should not begin with underscore", Justification = "coding style", Scope = "member", Target = "~F:Common.Search.MatchResult._rawScore")] +[assembly: SuppressMessage("StyleCop.CSharp.NamingRules", "SA1309:Field names should not begin with underscore", Justification = "coding style", Scope = "member", Target = "~F:Common.Search.StringMatcher._defaultMatchOption")] +[assembly: SuppressMessage("StyleCop.CSharp.NamingRules", "SA1309:Field names should not begin with underscore", Justification = "coding style", Scope = "member", Target = "~F:Common.Search.StringMatcher._instance")] +[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "coding style", Scope = "member", Target = "~M:Common.Search.MatchResult.#ctor(System.Boolean,Common.Search.SearchPrecisionScore)")] +[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "coding style", Scope = "member", Target = "~M:Common.Search.MatchResult.#ctor(System.Boolean,Common.Search.SearchPrecisionScore,System.Collections.Generic.List{System.Int32},System.Int32)")] +[assembly: SuppressMessage("Compiler", "CS8618:Non-nullable field must contain a non-null value when exiting constructor. Consider adding the 'required' modifier or declaring as nullable.", Justification = "Coding style", Scope = "member", Target = "~F:Common.Search.StringMatcher._instance")] +[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:Elements should appear in the correct order", Justification = "coding style", Scope = "member", Target = "~F:Common.Search.StringMatcher._instance")] +[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:Elements should appear in the correct order", Justification = "coding style", Scope = "member", Target = "~F:Common.Search.StringMatcher.Separator")] +[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1201:Elements should appear in the correct order", Justification = "coding style", Scope = "member", Target = "~M:Common.Search.StringMatcher.#ctor")] +[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "coding style", Scope = "member", Target = "~M:Common.Search.StringMatcher.FuzzyMatch(System.String,System.String)~Common.Search.MatchResult")] +[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "coding style", Scope = "member", Target = "~M:Common.Search.StringMatcher.FuzzyMatch(System.String,System.String,Common.Search.MatchOption)~Common.Search.MatchResult")] +[assembly: SuppressMessage("StyleCop.CSharp.MaintainabilityRules", "SA1407:Arithmetic expressions should declare precedence", Justification = "migrate from stable code", Scope = "member", Target = "~M:Common.Search.StringMatcher.CalculateSearchScore(System.String,System.String,System.Int32,System.Int32,System.Boolean)~System.Int32")] +[assembly: SuppressMessage("StyleCop.CSharp.ReadabilityRules", "SA1101:Prefix local calls with this", Justification = "migrate from stable code", Scope = "member", Target = "~M:Common.Search.StringMatcher.FuzzyMatch(System.String,System.String,Common.Search.MatchOption,System.Int32)~Common.Search.MatchResult")] +[assembly: SuppressMessage("StyleCop.CSharp.OrderingRules", "SA1204:Static elements should appear before instance elements", Justification = "migrate from stable code", Scope = "member", Target = "~M:Common.Search.StringMatcher.CalculateClosestSpaceIndex(System.Collections.Generic.List{System.Int32},System.Int32)~System.Int32")] diff --git a/src/common/Common.Search/stylecop.json b/src/common/Common.Search/stylecop.json new file mode 100644 index 0000000000..a338998bbc --- /dev/null +++ b/src/common/Common.Search/stylecop.json @@ -0,0 +1,22 @@ +{ + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "companyName": "Microsoft Corporation", + "copyrightText": "Copyright (c) {companyName}\r\nThe {companyName} licenses this file to you under the MIT license.\r\nSee the LICENSE file in the project root for more information.", + "xmlHeader": false, + "headerDecoration": "", + "fileNamingConvention": "metadata", + "documentInterfaces": false, + "documentExposedElements": false, + "documentInternalElements": false + }, + "layoutRules": { + "newlineAtEndOfFile": "require" + }, + "orderingRules": { + "usingDirectivesPlacement": "outsideNamespace", + "systemUsingDirectivesFirst": true + } + } +} \ No newline at end of file diff --git a/src/settings-ui/Settings.UI.Library/SettingEntry.cs b/src/settings-ui/Settings.UI.Library/SettingEntry.cs new file mode 100644 index 0000000000..8f5f6ed0da --- /dev/null +++ b/src/settings-ui/Settings.UI.Library/SettingEntry.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Settings.UI.Library +{ + public enum EntryType + { + SettingsPage, + SettingsCard, + SettingsExpander, + } + + public struct SettingEntry + { + public EntryType Type { get; set; } + + public string Header { get; set; } + + public string PageTypeName { get; set; } + + public string ElementName { get; set; } + + public string ElementUid { get; set; } + + public string ParentElementName { get; set; } + + public string Description { get; set; } + + public string Icon { get; set; } + + public SettingEntry(EntryType type, string header, string pageTypeName, string elementName, string elementUid, string parentElementName = null, string description = null, string icon = null) + { + Type = type; + Header = header; + PageTypeName = pageTypeName; + ElementName = elementName; + ElementUid = elementUid; + ParentElementName = parentElementName; + Description = description; + Icon = icon; + } + } +} diff --git a/src/settings-ui/Settings.UI.XamlIndexBuilder/ModuleIconResolver.cs b/src/settings-ui/Settings.UI.XamlIndexBuilder/ModuleIconResolver.cs new file mode 100644 index 0000000000..43c3ed2b05 --- /dev/null +++ b/src/settings-ui/Settings.UI.XamlIndexBuilder/ModuleIconResolver.cs @@ -0,0 +1,85 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System.IO; +using System.Linq; +using System.Xml.Linq; + +namespace Microsoft.PowerToys.Tools.XamlIndexBuilder +{ + public static class ModuleIconResolver + { + // Hardcoded page-level overrides for module -> icon path + private static readonly System.Collections.Generic.Dictionary FileNameOverrides = new System.Collections.Generic.Dictionary(System.StringComparer.OrdinalIgnoreCase) + { + // Example overrides; expand as needed + { "FancyZonesPage.xaml", "/Assets/Settings/Icons/FancyZones.png" }, + { "FileLocksmithPage.xaml", "/Assets/Settings/Icons/FileLocksmith.png" }, + { "CmdNotFoundPage.xaml", "/Assets/Settings/Icons/CommandNotFound.png" }, + { "PowerLauncherPage.xaml", "/Assets/Settings/Icons/PowerToysRun.png" }, + }; + + // Contract: + // - Input: absolute path to the module XAML file (e.g., FancyZonesPage.xaml) + // - Output: app-relative icon path (e.g., "/Assets/Settings/Icons/FancyZones.png"), or null if not found + // - Strategy: take the first SettingsCard under the page and read its HeaderIcon value + public static string ResolveIconFromFirstSettingsCard(string xamlFilePath) + { + if (string.IsNullOrWhiteSpace(xamlFilePath)) + { + return null; + } + + try + { + var doc = XDocument.Load(xamlFilePath); + + // Prefer looking inside SettingsPageControl.ModuleContent to avoid picking cards in Resources/DataTemplates + var pageControl = doc.Descendants().FirstOrDefault(e => e.Name.LocalName == "SettingsPageControl"); + + if (pageControl != null) + { + // Locate the property element + var moduleContent = pageControl + .Elements() + .FirstOrDefault(e => e.Name.LocalName.EndsWith(".ModuleContent", System.StringComparison.OrdinalIgnoreCase)) + ?? pageControl + .Descendants() + .FirstOrDefault(e => e.Name.LocalName.EndsWith(".ModuleContent", System.StringComparison.OrdinalIgnoreCase)); + + if (moduleContent != null) + { + // Find the first SettingsCard under ModuleContent and try to read its HeaderIcon + var firstCardUnderModule = moduleContent + .Descendants() + .FirstOrDefault(e => e.Name.LocalName == "SettingsCard"); + + if (firstCardUnderModule != null) + { + var icon = Program.ExtractIconValue(firstCardUnderModule); + if (!string.IsNullOrWhiteSpace(icon)) + { + return icon; + } + } + } + } + + // Fallback to hardcoded overrides by file name + var fileName = Path.GetFileName(xamlFilePath); + if (!string.IsNullOrEmpty(fileName) && FileNameOverrides.TryGetValue(fileName, out var overrideIcon)) + { + return overrideIcon; + } + + return null; + } + catch + { + // Non-fatal: let caller decide fallback + return null; + } + } + } +} diff --git a/src/settings-ui/Settings.UI.XamlIndexBuilder/Program.cs b/src/settings-ui/Settings.UI.XamlIndexBuilder/Program.cs new file mode 100644 index 0000000000..d3ebad0ff7 --- /dev/null +++ b/src/settings-ui/Settings.UI.XamlIndexBuilder/Program.cs @@ -0,0 +1,314 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +using System.Linq; +using System.Text.Json; +using System.Xml.Linq; + +namespace Microsoft.PowerToys.Tools.XamlIndexBuilder +{ + public class Program + { + private static readonly HashSet ExcludedXamlFiles = new(StringComparer.OrdinalIgnoreCase) + { + "ShellPage.xaml", + }; + + private static JsonSerializerOptions serializeOption = new() + { + WriteIndented = true, + PropertyNamingPolicy = JsonNamingPolicy.CamelCase, + }; + + public static void Main(string[] args) + { + if (args.Length < 2) + { + Debug.WriteLine("Usage: XamlIndexBuilder "); + Environment.Exit(1); + } + + string xamlDirectory = args[0]; + string outputFile = args[1]; + + if (!Directory.Exists(xamlDirectory)) + { + Debug.WriteLine($"Error: Directory '{xamlDirectory}' does not exist."); + Environment.Exit(1); + } + + try + { + var searchableElements = new List(); + var xamlFiles = Directory.GetFiles(xamlDirectory, "*.xaml", SearchOption.AllDirectories); + + foreach (var xamlFile in xamlFiles) + { + var fileName = Path.GetFileName(xamlFile); + if (ExcludedXamlFiles.Contains(fileName)) + { + // Skip ShellPage.xaml as it contains many elements not relevant for search + continue; + } + + Debug.WriteLine($"Processing: {fileName}"); + var elements = ExtractSearchableElements(xamlFile); + searchableElements.AddRange(elements); + } + + searchableElements = searchableElements.OrderBy(e => e.PageTypeName).ThenBy(e => e.ElementName).ToList(); + + string json = JsonSerializer.Serialize(searchableElements, serializeOption); + File.WriteAllText(outputFile, json); + + Debug.WriteLine($"Successfully generated index with {searchableElements.Count} elements."); + Debug.WriteLine($"Output written to: {outputFile}"); + } + catch (Exception ex) + { + Debug.WriteLine($"Error: {ex.Message}"); + Environment.Exit(1); + } + } + + public static List ExtractSearchableElements(string xamlFile) + { + var elements = new List(); + string pageName = Path.GetFileNameWithoutExtension(xamlFile); + + try + { + // Load XAML as XML + var doc = XDocument.Load(xamlFile); + + // Define namespaces + XNamespace x = "http://schemas.microsoft.com/winfx/2006/xaml"; + XNamespace controls = "http://schemas.microsoft.com/winfx/2006/xaml/presentation"; + XNamespace labs = "using:CommunityToolkit.Labs.WinUI"; + XNamespace winui = "using:CommunityToolkit.WinUI.UI.Controls"; + + // Extract SettingsPageControl elements + var settingsPageElements = doc.Descendants() + .Where(e => e.Name.LocalName == "SettingsPageControl") + .Where(e => e.Attribute(x + "Uid") != null); + + // Extract SettingsCard elements + var settingsElements = doc.Descendants() + .Where(e => e.Name.LocalName == "SettingsCard") + .Where(e => e.Attribute("Name") != null || e.Attribute(x + "Uid") != null); + + // Extract SettingsExpander elements + var settingsExpanderElements = doc.Descendants() + .Where(e => e.Name.LocalName == "SettingsExpander") + .Where(e => e.Attribute("Name") != null || e.Attribute(x + "Uid") != null); + + // Process SettingsPageControl elements + foreach (var element in settingsPageElements) + { + var elementUid = GetElementUid(element, x); + + // Prefer the first SettingsCard.HeaderIcon as the module icon + var moduleImageSource = ModuleIconResolver.ResolveIconFromFirstSettingsCard(xamlFile); + + if (!string.IsNullOrEmpty(elementUid)) + { + elements.Add(new SettingEntry + { + PageTypeName = pageName, + Type = EntryType.SettingsPage, + ParentElementName = string.Empty, + ElementName = string.Empty, + ElementUid = elementUid, + Icon = moduleImageSource, + }); + } + } + + // Process SettingsCard elements + foreach (var element in settingsElements) + { + var elementName = GetElementName(element, x); + var elementUid = GetElementUid(element, x); + var headerIcon = ExtractIconValue(element); + + if (!string.IsNullOrEmpty(elementName) || !string.IsNullOrEmpty(elementUid)) + { + var parentElementName = GetParentElementName(element, x); + + elements.Add(new SettingEntry + { + PageTypeName = pageName, + Type = EntryType.SettingsCard, + ParentElementName = parentElementName, + ElementName = elementName, + ElementUid = elementUid, + Icon = headerIcon, + }); + } + } + + // Process SettingsExpander elements + foreach (var element in settingsExpanderElements) + { + var elementName = GetElementName(element, x); + var elementUid = GetElementUid(element, x); + var headerIcon = ExtractIconValue(element); + + if (!string.IsNullOrEmpty(elementName) || !string.IsNullOrEmpty(elementUid)) + { + var parentElementName = GetParentElementName(element, x); + + elements.Add(new SettingEntry + { + PageTypeName = pageName, + Type = EntryType.SettingsExpander, + ParentElementName = parentElementName, + ElementName = elementName, + ElementUid = elementUid, + Icon = headerIcon, + }); + } + } + } + catch (Exception ex) + { + Debug.WriteLine($"Error processing {xamlFile}: {ex.Message}"); + } + + return elements; + } + + public static string GetElementName(XElement element, XNamespace x) + { + // Get Name attribute (we call it ElementName in our indexing system) + var name = element.Attribute("Name")?.Value; + return name; + } + + public static string GetElementUid(XElement element, XNamespace x) + { + // Try x:Uid + var uid = element.Attribute(x + "Uid")?.Value; + return uid; + } + + public static string GetParentElementName(XElement element, XNamespace x) + { + // Look for parent SettingsExpander + var current = element.Parent; + while (current != null) + { + // Check if we're inside a SettingsExpander.Items or just directly inside SettingsExpander + if (current.Name.LocalName == "Items") + { + // Check if the parent of Items is SettingsExpander + var expanderParent = current.Parent; + if (expanderParent?.Name.LocalName == "SettingsExpander") + { + var expanderName = expanderParent.Attribute("Name")?.Value; + if (!string.IsNullOrEmpty(expanderName)) + { + return expanderName; + } + } + } + else if (current.Name.LocalName == "SettingsExpander") + { + // Direct child of SettingsExpander + var expanderName = current.Attribute("Name")?.Value; + if (!string.IsNullOrEmpty(expanderName)) + { + return expanderName; + } + } + + current = current.Parent; + } + + return string.Empty; + } + + public static string ExtractIconValue(XElement element) + { + var headerIconAttribute = element.Attribute("HeaderIcon")?.Value; + + if (string.IsNullOrEmpty(headerIconAttribute)) + { + // Try nested property element: ... + var headerIconProperty = element.Elements() + .FirstOrDefault(e => e.Name.LocalName.EndsWith(".HeaderIcon", StringComparison.OrdinalIgnoreCase)); + + if (headerIconProperty != null) + { + // Prefer explicit icon elements within the HeaderIcon property + var pathIcon = headerIconProperty.Descendants().FirstOrDefault(d => d.Name.LocalName == "PathIcon"); + if (pathIcon != null) + { + var dataAttr = pathIcon.Attribute("Data")?.Value; + if (!string.IsNullOrWhiteSpace(dataAttr)) + { + return dataAttr.Trim(); + } + } + + var fontIcon = headerIconProperty.Descendants().FirstOrDefault(d => d.Name.LocalName == "FontIcon"); + if (fontIcon != null) + { + var glyphAttr = fontIcon.Attribute("Glyph")?.Value; + if (!string.IsNullOrWhiteSpace(glyphAttr)) + { + return glyphAttr.Trim(); + } + } + + var bitmapIcon = headerIconProperty.Descendants().FirstOrDefault(d => d.Name.LocalName == "BitmapIcon"); + if (bitmapIcon != null) + { + var sourceAttr = bitmapIcon.Attribute("Source")?.Value; + if (!string.IsNullOrWhiteSpace(sourceAttr)) + { + return sourceAttr.Trim(); + } + } + } + + return null; + } + + // Parse different icon markup extensions + // Example: {ui:BitmapIcon Source=/Assets/Settings/Icons/AlwaysOnTop.png} + if (headerIconAttribute.Contains("BitmapIcon") && headerIconAttribute.Contains("Source=")) + { + var sourceStart = headerIconAttribute.IndexOf("Source=", StringComparison.OrdinalIgnoreCase) + "Source=".Length; + var sourceEnd = headerIconAttribute.IndexOf('}', sourceStart); + if (sourceEnd == -1) + { + sourceEnd = headerIconAttribute.Length; + } + + return headerIconAttribute.Substring(sourceStart, sourceEnd - sourceStart).Trim(); + } + + // Example: {ui:FontIcon Glyph=} + if (headerIconAttribute.Contains("FontIcon") && headerIconAttribute.Contains("Glyph=")) + { + var glyphStart = headerIconAttribute.IndexOf("Glyph=", StringComparison.OrdinalIgnoreCase) + "Glyph=".Length; + var glyphEnd = headerIconAttribute.IndexOf('}', glyphStart); + if (glyphEnd == -1) + { + glyphEnd = headerIconAttribute.Length; + } + + return headerIconAttribute.Substring(glyphStart, glyphEnd - glyphStart).Trim(); + } + + // If it doesn't match known patterns, return the original value + return headerIconAttribute; + } + } +} diff --git a/src/settings-ui/Settings.UI.XamlIndexBuilder/SettingEntry.cs b/src/settings-ui/Settings.UI.XamlIndexBuilder/SettingEntry.cs new file mode 100644 index 0000000000..0a95f8e816 --- /dev/null +++ b/src/settings-ui/Settings.UI.XamlIndexBuilder/SettingEntry.cs @@ -0,0 +1,44 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.PowerToys.Tools.XamlIndexBuilder +{ + public enum EntryType + { + SettingsPage, + SettingsCard, + SettingsExpander, + } + + public struct SettingEntry + { + public EntryType Type { get; set; } + + public string Header { get; set; } + + public string PageTypeName { get; set; } + + public string ElementName { get; set; } + + public string ElementUid { get; set; } + + public string ParentElementName { get; set; } + + public string Description { get; set; } + + public string Icon { get; set; } + + public SettingEntry(EntryType type, string header, string pageTypeName, string elementName, string elementUid, string parentElementName = null, string description = null, string icon = null) + { + Type = type; + Header = header; + PageTypeName = pageTypeName; + ElementName = elementName; + ElementUid = elementUid; + ParentElementName = parentElementName; + Description = description; + Icon = icon; + } + } +} diff --git a/src/settings-ui/Settings.UI.XamlIndexBuilder/Settings.UI.XamlIndexBuilder.csproj b/src/settings-ui/Settings.UI.XamlIndexBuilder/Settings.UI.XamlIndexBuilder.csproj new file mode 100644 index 0000000000..ef37b3eca9 --- /dev/null +++ b/src/settings-ui/Settings.UI.XamlIndexBuilder/Settings.UI.XamlIndexBuilder.csproj @@ -0,0 +1,44 @@ + + + + + + net9.0 + Exe + Microsoft.PowerToys.Tools.XamlIndexBuilder + XamlIndexBuilder + + false + false + AnyCPU + + + $(MSBuildProjectDirectory)\obj\XamlIndexBuilder\$(Configuration)\ + + + + + + + + + + + + + + + + + dotnet + $(MSBuildProjectDirectory)\..\Settings.UI\SettingsXAML\Views + $(MSBuildProjectDirectory)\..\Settings.UI\Assets\Settings\search.index.json + + + + + + + + + diff --git a/src/settings-ui/Settings.UI/Converters/IconConverter.cs b/src/settings-ui/Settings.UI/Converters/IconConverter.cs new file mode 100644 index 0000000000..45ba530e02 --- /dev/null +++ b/src/settings-ui/Settings.UI/Converters/IconConverter.cs @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Markup; +using Microsoft.UI.Xaml.Media; +using Microsoft.UI.Xaml.Media.Imaging; + +namespace Microsoft.PowerToys.Settings.UI.Converters +{ + public partial class IconConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + if (value is not string iconValue || string.IsNullOrEmpty(iconValue)) + { + // Return a default icon based on the parameter + var defaultGlyph = parameter?.ToString() ?? "\uE8B7"; // Default gear icon + return new FontIcon { Glyph = defaultGlyph }; + } + + // Check if it's a single Unicode character (most common case after JSON deserialization) + if (iconValue.Length == 1) + { + return new FontIcon { Glyph = iconValue }; + } + + // Handle HTML numeric character references, e.g. "" or "" + if (iconValue.StartsWith("&#", StringComparison.Ordinal) && iconValue.EndsWith(';')) + { + var inner = iconValue.Substring(2, iconValue.Length - 3); // strip &# and ; + try + { + string glyph; + if (inner.StartsWith("x", StringComparison.OrdinalIgnoreCase)) + { + var hex = inner.Substring(1); + if (int.TryParse(hex, System.Globalization.NumberStyles.HexNumber, null, out int codePointHex)) + { + glyph = char.ConvertFromUtf32(codePointHex); + return new FontIcon { Glyph = glyph }; + } + } + else if (int.TryParse(inner, out int codePointDec)) + { + glyph = char.ConvertFromUtf32(codePointDec); + return new FontIcon { Glyph = glyph }; + } + } + catch + { + // fall through to other handlers + } + } + + if (iconValue.StartsWith("\\u", StringComparison.OrdinalIgnoreCase) && iconValue.Length == 6) + { + var hexPart = iconValue.Substring(2); // Remove \u + if (int.TryParse(hexPart, System.Globalization.NumberStyles.HexNumber, null, out int codePoint)) + { + var unicodeChar = char.ConvertFromUtf32(codePoint); + return new FontIcon { Glyph = unicodeChar }; + } + } + + // Check if it's an image path + if (iconValue.Contains('/') || iconValue.Contains('\\') || iconValue.Contains(".png", StringComparison.OrdinalIgnoreCase) || iconValue.Contains(".jpg", StringComparison.OrdinalIgnoreCase) || iconValue.Contains(".ico", StringComparison.OrdinalIgnoreCase) || iconValue.Contains(".svg", StringComparison.OrdinalIgnoreCase)) + { + // Handle different path formats + var imagePath = iconValue; + + // Convert ms-appx:/// paths to local paths + if (imagePath.StartsWith("ms-appx:///", StringComparison.OrdinalIgnoreCase)) + { + imagePath = imagePath.Substring("ms-appx:///".Length); + } + + // Ensure path starts with / + if (!imagePath.StartsWith('/')) + { + imagePath = "/" + imagePath; + } + + var uri = new Uri($"ms-appx://{imagePath}"); + + if (imagePath.EndsWith(".svg", StringComparison.OrdinalIgnoreCase)) + { + // Render SVG using ImageIcon + SvgImageSource + return new ImageIcon + { + Source = new SvgImageSource(uri), + }; + } + else + { + return new BitmapIcon + { + UriSource = uri, + ShowAsMonochrome = false, + }; + } + } + + // Try to interpret as raw SVG path data (PathIcon.Data) + // Many of our XAML PathIcon usages (e.g., AdvancedPastePage) provide a Data string like "M128 766q0-42 ...". + // If parsing succeeds, render it as a PathIcon. + try + { + var geometryObj = XamlBindingHelper.ConvertValue(typeof(Geometry), iconValue); + if (geometryObj is Geometry geometry) + { + return new PathIcon { Data = geometry }; + } + } + catch + { + // Ignore parse errors and fall back below. + } + + // If all else fails, return default icon + var fallbackGlyph = parameter?.ToString() ?? "\uE8B7"; + return new FontIcon { Glyph = fallbackGlyph }; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + { + throw new NotImplementedException(); + } + } +} diff --git a/src/settings-ui/Settings.UI/Converters/SearchSuggestionTemplateSelector.cs b/src/settings-ui/Settings.UI/Converters/SearchSuggestionTemplateSelector.cs new file mode 100644 index 0000000000..11320baaea --- /dev/null +++ b/src/settings-ui/Settings.UI/Converters/SearchSuggestionTemplateSelector.cs @@ -0,0 +1,40 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using Microsoft.PowerToys.Settings.UI.Library; +using Microsoft.PowerToys.Settings.UI.ViewModels; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; + +namespace Microsoft.PowerToys.Settings.UI.Converters; + +public sealed partial class SearchSuggestionTemplateSelector : DataTemplateSelector +{ + public DataTemplate DefaultSuggestionTemplate { get; set; } + + public DataTemplate NoResultsSuggestionTemplate { get; set; } + + public DataTemplate ShowAllSuggestionTemplate { get; set; } + + protected override DataTemplate SelectTemplateCore(object item, DependencyObject container) + { + if (item is SuggestionItem suggestionItem) + { + if (suggestionItem.IsNoResults) + { + return NoResultsSuggestionTemplate; + } + + if (suggestionItem.IsShowAll) + { + return ShowAllSuggestionTemplate ?? NoResultsSuggestionTemplate ?? DefaultSuggestionTemplate; + } + + return DefaultSuggestionTemplate; + } + + return DefaultSuggestionTemplate; + } +} diff --git a/src/settings-ui/Settings.UI/Converters/UriToImageConverter.cs b/src/settings-ui/Settings.UI/Converters/UriToImageConverter.cs new file mode 100644 index 0000000000..dc079f5d01 --- /dev/null +++ b/src/settings-ui/Settings.UI/Converters/UriToImageConverter.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Microsoft.UI.Xaml.Data; +using Microsoft.UI.Xaml.Media.Imaging; + +namespace Microsoft.PowerToys.Settings.UI.Converters +{ + public sealed partial class UriToImageSourceConverter : IValueConverter + { + public object Convert(object value, Type targetType, object parameter, string language) + { + return value is Uri uri ? new BitmapImage(uri) : null; + } + + public object ConvertBack(object value, Type targetType, object parameter, string language) + => throw new NotImplementedException(); + } +} diff --git a/src/settings-ui/Settings.UI/Helpers/NavigatablePage.cs b/src/settings-ui/Settings.UI/Helpers/NavigatablePage.cs new file mode 100644 index 0000000000..126b4f2105 --- /dev/null +++ b/src/settings-ui/Settings.UI/Helpers/NavigatablePage.cs @@ -0,0 +1,144 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Numerics; +using System.Threading.Tasks; +using CommunityToolkit.WinUI.Controls; +using Microsoft.UI.Xaml; +using Microsoft.UI.Xaml.Controls; +using Microsoft.UI.Xaml.Hosting; +using Microsoft.UI.Xaml.Media; + +namespace Microsoft.PowerToys.Settings.UI.Helpers; + +public abstract partial class NavigatablePage : Page +{ + private const int ExpandWaitDuration = 500; + private const int AnimationDuration = 1000; + + private NavigationParams _pendingNavigationParams; + + public NavigatablePage() + { + Loaded += OnPageLoaded; + } + + protected override void OnNavigatedTo(Microsoft.UI.Xaml.Navigation.NavigationEventArgs e) + { + base.OnNavigatedTo(e); + + // Handle both old string parameter and new NavigationParams + if (e.Parameter is NavigationParams navParams) + { + _pendingNavigationParams = navParams; + } + else if (e.Parameter is string elementKey) + { + _pendingNavigationParams = new NavigationParams(elementKey); + } + } + + private async void OnPageLoaded(object sender, RoutedEventArgs e) + { + if (_pendingNavigationParams != null && !string.IsNullOrEmpty(_pendingNavigationParams.ElementName)) + { + // First, expand parent if specified + if (!string.IsNullOrEmpty(_pendingNavigationParams.ParentElementName)) + { + var parentElement = FindElementByName(_pendingNavigationParams.ParentElementName); + if (parentElement is SettingsExpander expander) + { + expander.IsExpanded = true; + + // Give time for the expander to animate + await Task.Delay(ExpandWaitDuration); + } + } + + // Then find and navigate to the target element + var target = FindElementByName(_pendingNavigationParams.ElementName); + + target?.StartBringIntoView(new BringIntoViewOptions + { + VerticalOffset = -20, + AnimationDesired = true, + }); + + await OnTargetElementNavigatedAsync(target, _pendingNavigationParams.ElementName); + + _pendingNavigationParams = null; + } + } + + protected virtual async Task OnTargetElementNavigatedAsync(FrameworkElement target, string elementKey) + { + if (target == null) + { + return; + } + + // Get the visual and compositor + var visual = ElementCompositionPreview.GetElementVisual(target); + var compositor = visual.Compositor; + + // Create a subtle glow effect using drop shadow + var dropShadow = compositor.CreateDropShadow(); + dropShadow.Color = Microsoft.UI.Colors.Gray; + dropShadow.BlurRadius = 8f; + dropShadow.Opacity = 0f; + dropShadow.Offset = new Vector3(0, 0, 0); + + var spriteVisual = compositor.CreateSpriteVisual(); + spriteVisual.Size = new Vector2((float)target.ActualWidth + 16, (float)target.ActualHeight + 16); + spriteVisual.Shadow = dropShadow; + spriteVisual.Offset = new Vector3(-8, -8, 0); + + // Insert the shadow visual behind the target element + ElementCompositionPreview.SetElementChildVisual(target, spriteVisual); + + // Create a simple fade in/out animation + var fadeAnimation = compositor.CreateScalarKeyFrameAnimation(); + fadeAnimation.InsertKeyFrame(0f, 0f); + fadeAnimation.InsertKeyFrame(0.5f, 0.3f); + fadeAnimation.InsertKeyFrame(1f, 0f); + fadeAnimation.Duration = TimeSpan.FromMilliseconds(AnimationDuration); + + dropShadow.StartAnimation("Opacity", fadeAnimation); + + if (target is Control ctrl) + { + // TODO: ability to adjust brush color and animation from settings. + var originalBackground = ctrl.Background; + + var highlightBrush = new SolidColorBrush(); + var grayColor = Microsoft.UI.Colors.Gray; + grayColor.A = 50; // Very subtle transparency + highlightBrush.Color = grayColor; + + // Apply the highlight + ctrl.Background = highlightBrush; + + // Wait for animation to complete + await Task.Delay(AnimationDuration); + + // Restore original background + ctrl.Background = originalBackground; + } + else + { + // For non-control elements, just wait for the glow animation + await Task.Delay(AnimationDuration); + } + + // Clean up the shadow visual + ElementCompositionPreview.SetElementChildVisual(target, null); + } + + protected FrameworkElement FindElementByName(string name) + { + var element = this.FindName(name) as FrameworkElement; + return element; + } +} diff --git a/src/settings-ui/Settings.UI/Helpers/NavigationParams.cs b/src/settings-ui/Settings.UI/Helpers/NavigationParams.cs new file mode 100644 index 0000000000..30c27343ce --- /dev/null +++ b/src/settings-ui/Settings.UI/Helpers/NavigationParams.cs @@ -0,0 +1,18 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +namespace Microsoft.PowerToys.Settings.UI.Helpers; + +public class NavigationParams +{ + public string ElementName { get; set; } + + public string ParentElementName { get; set; } + + public NavigationParams(string elementName, string parentElementName = null) + { + ElementName = elementName; + ParentElementName = parentElementName; + } +} diff --git a/src/settings-ui/Settings.UI/PowerToys.Settings.csproj b/src/settings-ui/Settings.UI/PowerToys.Settings.csproj index 13aef6df63..aaa1c2bdc7 100644 --- a/src/settings-ui/Settings.UI/PowerToys.Settings.csproj +++ b/src/settings-ui/Settings.UI/PowerToys.Settings.csproj @@ -1,161 +1,193 @@  - - - + + + - - WinExe - Microsoft.PowerToys.Settings.UI - app.manifest - true - true - None - false - false - Assets\Settings\icon.ico - true - - ..\..\..\$(Platform)\$(Configuration)\WinUI3Apps - - PowerToys.Settings.pri - - - - - - - - - - - - - - + + WinExe + Microsoft.PowerToys.Settings.UI + app.manifest + true + true + None + false + false + Assets\Settings\icon.ico + true + + ..\..\..\$(Platform)\$(Configuration)\WinUI3Apps + + PowerToys.Settings.pri + + + + + + + + + + + + + + - - - PowerToys.GPOWrapper;PowerToys.ZoomItSettingsInterop - $(OutDir) - false - + + + PowerToys.GPOWrapper;PowerToys.ZoomItSettingsInterop + $(OutDir) + false + - - - - - - - - - + + + + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - VSTHRD002;VSTHRD110;VSTHRD100;VSTHRD200;VSTHRD101 - + + + $(MSBuildProjectDirectory)\Assets\Settings\search.index.json + - - - Always - - + - - - Always - - - Always - - - Always - - - Always - - - Always - - - MSBuild:Compile - - - MSBuild:Compile - - - MSBuild:Compile - - + + + + + VSTHRD002;VSTHRD110;VSTHRD100;VSTHRD200;VSTHRD101 + - - - $(DefaultXamlRuntime) - - - $(DefaultXamlRuntime) - - - $(DefaultXamlRuntime) - - + - + + + + Always + + + + Microsoft.PowerToys.Settings.UI.Assets.search.index.json + + + + + + Always + + + + + + Always + + + Always + + + Always + + + Always + + + Always + + + MSBuild:Compile + + + MSBuild:Compile + + + MSBuild:Compile + + + + + + $(DefaultXamlRuntime) + + + $(DefaultXamlRuntime) + + + $(DefaultXamlRuntime) + + + + + + + + + + + \ No newline at end of file diff --git a/src/settings-ui/Settings.UI/Services/SearchIndexService.cs b/src/settings-ui/Settings.UI/Services/SearchIndexService.cs new file mode 100644 index 0000000000..65915fed7b --- /dev/null +++ b/src/settings-ui/Settings.UI/Services/SearchIndexService.cs @@ -0,0 +1,338 @@ +// Copyright (c) Microsoft Corporation +// The Microsoft Corporation licenses this file to you under the MIT license. +// See the LICENSE file in the project root for more information. + +using System; +using System.Collections.Concurrent; +using System.Collections.Generic; +using System.Collections.Immutable; +using System.Diagnostics; +using System.Globalization; +using System.IO; +using System.Linq; +using System.Reflection; +using System.Text; +using System.Text.Json; +using System.Threading; +using System.Threading.Tasks; +using Common.Search.FuzzSearch; +using Microsoft.PowerToys.Settings.UI.Helpers; +using Microsoft.PowerToys.Settings.UI.Views; +using Microsoft.Windows.ApplicationModel.Resources; +using Settings.UI.Library; + +namespace Microsoft.PowerToys.Settings.UI.Services +{ + public static class SearchIndexService + { + private static readonly object _lockObject = new(); + private static readonly Dictionary _pageNameCache = []; + private static readonly Dictionary _normalizedTextCache = new(); + private static readonly Dictionary _pageTypeCache = new(); + private static ImmutableArray _index = []; + private static bool _isIndexBuilt; + private static bool _isIndexBuilding; + private const string PrebuiltIndexResourceName = "Microsoft.PowerToys.Settings.UI.Assets.search.index.json"; + private static JsonSerializerOptions _serializerOptions = new() { PropertyNameCaseInsensitive = true }; + + public static ImmutableArray Index + { + get + { + lock (_lockObject) + { + return _index; + } + } + } + + public static bool IsIndexReady + { + get + { + lock (_lockObject) + { + return _isIndexBuilt; + } + } + } + + public static void BuildIndex() + { + lock (_lockObject) + { + if (_isIndexBuilt || _isIndexBuilding) + { + return; + } + + _isIndexBuilding = true; + + // Clear caches on rebuild + _normalizedTextCache.Clear(); + _pageTypeCache.Clear(); + } + + try + { + var builder = ImmutableArray.CreateBuilder(); + LoadIndexFromPrebuiltData(builder); + + lock (_lockObject) + { + _index = builder.ToImmutable(); + _isIndexBuilt = true; + _isIndexBuilding = false; + } + } + catch (Exception ex) + { + Debug.WriteLine($"[SearchIndexService] CRITICAL ERROR building search index: {ex.Message}\n{ex.StackTrace}"); + lock (_lockObject) + { + _isIndexBuilding = false; + _isIndexBuilt = false; + } + } + } + + private static void LoadIndexFromPrebuiltData(ImmutableArray.Builder builder) + { + var assembly = Assembly.GetExecutingAssembly(); + var resourceLoader = ResourceLoaderInstance.ResourceLoader; + SettingEntry[] metadataList; + + Debug.WriteLine($"[SearchIndexService] Attempting to load prebuilt index from: {PrebuiltIndexResourceName}"); + + try + { + using Stream stream = assembly.GetManifestResourceStream(PrebuiltIndexResourceName); + if (stream == null) + { + Debug.WriteLine($"[SearchIndexService] ERROR: Embedded resource '{PrebuiltIndexResourceName}' not found. Ensure it's correctly embedded and the name matches."); + return; + } + + using StreamReader reader = new(stream); + string json = reader.ReadToEnd(); + if (string.IsNullOrWhiteSpace(json)) + { + Debug.WriteLine("[SearchIndexService] ERROR: Embedded resource was empty."); + return; + } + + metadataList = JsonSerializer.Deserialize(json, _serializerOptions); + } + catch (Exception ex) + { + Debug.WriteLine($"[SearchIndexService] ERROR: Failed to load or deserialize prebuilt index: {ex.Message}"); + return; + } + + if (metadataList == null || metadataList.Length == 0) + { + Debug.WriteLine("[SearchIndexService] Prebuilt index is empty or deserialization failed."); + return; + } + + foreach (ref var metadata in metadataList.AsSpan()) + { + if (metadata.Type == EntryType.SettingsPage) + { + (metadata.Header, metadata.Description) = GetLocalizedModuleTitleAndDescription(resourceLoader, metadata.ElementUid); + } + else + { + (metadata.Header, metadata.Description) = GetLocalizedSettingHeaderAndDescription(resourceLoader, metadata.ElementUid); + } + + if (string.IsNullOrEmpty(metadata.Header)) + { + continue; + } + + builder.Add(metadata); + + // Cache the page name mapping for SettingsPage entries + if (metadata.Type == EntryType.SettingsPage && !string.IsNullOrEmpty(metadata.Header)) + { + _pageNameCache[metadata.PageTypeName] = metadata.Header; + } + } + + Debug.WriteLine($"[SearchIndexService] Finished loading index. Total entries: {builder.Count}"); + } + + private static (string Header, string Description) GetLocalizedSettingHeaderAndDescription(ResourceLoader resourceLoader, string elementUid) + { + string header = GetString(resourceLoader, $"{elementUid}/Header"); + string description = GetString(resourceLoader, $"{elementUid}/Description"); + + if (string.IsNullOrEmpty(header)) + { + Debug.WriteLine($"[SearchIndexService] WARNING: No header localization found for ElementUid: '{elementUid}'"); + } + + return (header, description); + } + + private static (string Title, string Description) GetLocalizedModuleTitleAndDescription(ResourceLoader resourceLoader, string elementUid) + { + string title = GetString(resourceLoader, $"{elementUid}/ModuleTitle"); + string description = GetString(resourceLoader, $"{elementUid}/ModuleDescription"); + + return (title, description); + } + + private static string GetString(ResourceLoader rl, string key) + { + try + { + string value = rl.GetString(key); + return string.IsNullOrWhiteSpace(value) ? string.Empty : value; + } + catch (Exception) + { + return string.Empty; + } + } + + public static List Search(string query) + { + return Search(query, CancellationToken.None); + } + + public static List Search(string query, CancellationToken token) + { + if (string.IsNullOrWhiteSpace(query)) + { + return []; + } + + var currentIndex = Index; + if (currentIndex.IsEmpty) + { + Debug.WriteLine("[SearchIndexService] Search called but index is empty."); + return []; + } + + var normalizedQuery = NormalizeString(query); + var bag = new ConcurrentBag<(SettingEntry Hit, double Score)>(); + var po = new ParallelOptions + { + CancellationToken = token, + MaxDegreeOfParallelism = Math.Max(1, Environment.ProcessorCount - 1), + }; + + try + { + Parallel.ForEach(currentIndex, po, entry => + { + var (headerNorm, descNorm) = GetNormalizedTexts(entry); + var captionScoreResult = StringMatcher.FuzzyMatch(normalizedQuery, headerNorm); + double score = captionScoreResult.Score; + + if (!string.IsNullOrEmpty(descNorm)) + { + var descriptionScoreResult = StringMatcher.FuzzyMatch(normalizedQuery, descNorm); + if (descriptionScoreResult.Success) + { + score = Math.Max(score, descriptionScoreResult.Score * 0.8); + } + } + + if (score > 0) + { + var pageType = GetPageTypeFromName(entry.PageTypeName); + if (pageType != null) + { + bag.Add((entry, score)); + } + } + }); + } + catch (OperationCanceledException) + { + return []; + } + + return bag + .OrderByDescending(r => r.Score) + .Select(r => r.Hit) + .ToList(); + } + + private static Type GetPageTypeFromName(string pageTypeName) + { + if (string.IsNullOrEmpty(pageTypeName)) + { + return null; + } + + lock (_lockObject) + { + if (_pageTypeCache.TryGetValue(pageTypeName, out var cached)) + { + return cached; + } + + var assembly = typeof(GeneralPage).Assembly; + var type = assembly.GetType($"Microsoft.PowerToys.Settings.UI.Views.{pageTypeName}"); + _pageTypeCache[pageTypeName] = type; + return type; + } + } + + private static (string HeaderNorm, string DescNorm) GetNormalizedTexts(SettingEntry entry) + { + if (entry.ElementUid == null && entry.Header == null) + { + return (NormalizeString(entry.Header), NormalizeString(entry.Description)); + } + + var key = entry.ElementUid ?? $"{entry.PageTypeName}|{entry.ElementName}"; + lock (_lockObject) + { + if (_normalizedTextCache.TryGetValue(key, out var cached)) + { + return cached; + } + } + + var headerNorm = NormalizeString(entry.Header); + var descNorm = NormalizeString(entry.Description); + lock (_lockObject) + { + _normalizedTextCache[key] = (headerNorm, descNorm); + } + + return (headerNorm, descNorm); + } + + private static string NormalizeString(string input) + { + if (string.IsNullOrEmpty(input)) + { + return string.Empty; + } + + var normalized = input.ToLowerInvariant().Normalize(NormalizationForm.FormKD); + var stringBuilder = new StringBuilder(); + foreach (var c in normalized) + { + var unicodeCategory = CharUnicodeInfo.GetUnicodeCategory(c); + if (unicodeCategory != UnicodeCategory.NonSpacingMark) + { + stringBuilder.Append(c); + } + } + + return stringBuilder.ToString(); + } + + public static string GetLocalizedPageName(string pageTypeName) + { + return _pageNameCache.TryGetValue(pageTypeName, out string cachedName) ? cachedName : string.Empty; + } + } +} diff --git a/src/settings-ui/Settings.UI/SettingsXAML/App.xaml b/src/settings-ui/Settings.UI/SettingsXAML/App.xaml index 2de03f636f..ea2a585b8b 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/App.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/App.xaml @@ -49,8 +49,12 @@ TrueValue="Collapsed" /> + - + 2 diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml index 118c9b7ca5..20af0c6629 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml @@ -3,6 +3,7 @@ xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:controls="using:Microsoft.PowerToys.Settings.UI.Controls" + xmlns:converters="using:Microsoft.PowerToys.Settings.UI.Converters" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:tk7controls="using:CommunityToolkit.WinUI.UI.Controls" @@ -11,6 +12,7 @@ 1000 1020 + @@ -38,10 +40,7 @@ - + @@ -52,14 +51,12 @@ - - - - - + CornerRadius="{StaticResource OverlayCornerRadius}" + Visibility="{x:Bind ModuleImageSource, Converter={StaticResource EmptyObjectToObjectConverter}}"> + @@ -73,7 +70,8 @@ x:Name="PrimaryLinksControl" Margin="0,8,0,0" IsTabStop="False" - ItemsSource="{x:Bind PrimaryLinks}"> + ItemsSource="{x:Bind PrimaryLinks}" + Visibility="{x:Bind PrimaryLinks.Count, Converter={StaticResource DoubleToVisibilityConverter}}"> diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs index dca1fbae8e..6e5fef091f 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Controls/SettingsPageControl/SettingsPageControl.xaml.cs @@ -2,6 +2,7 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using System; using System.Collections.ObjectModel; using Microsoft.UI.Xaml; @@ -30,9 +31,9 @@ namespace Microsoft.PowerToys.Settings.UI.Controls set => SetValue(ModuleDescriptionProperty, value); } - public string ModuleImageSource + public Uri ModuleImageSource { - get => (string)GetValue(ModuleImageSourceProperty); + get => (Uri)GetValue(ModuleImageSourceProperty); set => SetValue(ModuleImageSourceProperty, value); } @@ -60,13 +61,13 @@ namespace Microsoft.PowerToys.Settings.UI.Controls set { SetValue(ModuleContentProperty, value); } } - public static readonly DependencyProperty ModuleTitleProperty = DependencyProperty.Register("ModuleTitle", typeof(string), typeof(SettingsPageControl), new PropertyMetadata(default(string))); - public static readonly DependencyProperty ModuleDescriptionProperty = DependencyProperty.Register("ModuleDescription", typeof(string), typeof(SettingsPageControl), new PropertyMetadata(default(string))); - public static readonly DependencyProperty ModuleImageSourceProperty = DependencyProperty.Register("ModuleImageSource", typeof(string), typeof(SettingsPageControl), new PropertyMetadata(default(string))); - public static readonly DependencyProperty PrimaryLinksProperty = DependencyProperty.Register("PrimaryLinks", typeof(ObservableCollection), typeof(SettingsPageControl), new PropertyMetadata(new ObservableCollection())); - public static readonly DependencyProperty SecondaryLinksHeaderProperty = DependencyProperty.Register("SecondaryLinksHeader", typeof(string), typeof(SettingsPageControl), new PropertyMetadata(default(string))); - public static readonly DependencyProperty SecondaryLinksProperty = DependencyProperty.Register("SecondaryLinks", typeof(ObservableCollection), typeof(SettingsPageControl), new PropertyMetadata(new ObservableCollection())); - public static readonly DependencyProperty ModuleContentProperty = DependencyProperty.Register("ModuleContent", typeof(object), typeof(SettingsPageControl), new PropertyMetadata(new Grid())); + public static readonly DependencyProperty ModuleTitleProperty = DependencyProperty.Register(nameof(ModuleTitle), typeof(string), typeof(SettingsPageControl), new PropertyMetadata(defaultValue: null)); + public static readonly DependencyProperty ModuleDescriptionProperty = DependencyProperty.Register(nameof(ModuleDescription), typeof(string), typeof(SettingsPageControl), new PropertyMetadata(defaultValue: null)); + public static readonly DependencyProperty ModuleImageSourceProperty = DependencyProperty.Register(nameof(ModuleImageSource), typeof(Uri), typeof(SettingsPageControl), new PropertyMetadata(null)); + public static readonly DependencyProperty PrimaryLinksProperty = DependencyProperty.Register(nameof(PrimaryLinks), typeof(ObservableCollection), typeof(SettingsPageControl), new PropertyMetadata(new ObservableCollection())); + public static readonly DependencyProperty SecondaryLinksHeaderProperty = DependencyProperty.Register(nameof(SecondaryLinksHeader), typeof(string), typeof(SettingsPageControl), new PropertyMetadata(default(string))); + public static readonly DependencyProperty SecondaryLinksProperty = DependencyProperty.Register(nameof(SecondaryLinks), typeof(ObservableCollection), typeof(SettingsPageControl), new PropertyMetadata(new ObservableCollection())); + public static readonly DependencyProperty ModuleContentProperty = DependencyProperty.Register(nameof(ModuleContent), typeof(object), typeof(SettingsPageControl), new PropertyMetadata(new Grid())); private void UserControl_Loaded(object sender, RoutedEventArgs e) { diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml index a5e6f2de40..07b6a00c21 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Flyout/LaunchPage.xaml @@ -21,7 +21,6 @@ - diff --git a/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs index 1b6a33ad4d..90b2577268 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/MainWindow.xaml.cs @@ -3,7 +3,6 @@ // See the LICENSE file in the project root for more information. using System; - using ManagedCommon; using Microsoft.PowerLauncher.Telemetry; using Microsoft.PowerToys.Settings.UI.Helpers; @@ -14,6 +13,7 @@ using Microsoft.UI; using Microsoft.UI.Windowing; using Microsoft.UI.Xaml; using Windows.Data.Json; +using WinRT.Interop; using WinUIEx; namespace Microsoft.PowerToys.Settings.UI @@ -104,7 +104,7 @@ namespace Microsoft.PowerToys.Settings.UI { if (App.GetOobeWindow() == null) { - App.SetOobeWindow(new OobeWindow(Microsoft.PowerToys.Settings.UI.OOBE.Enums.PowerToysModules.Overview)); + App.SetOobeWindow(new OobeWindow(OOBE.Enums.PowerToysModules.Overview)); } App.GetOobeWindow().Activate(); @@ -115,7 +115,7 @@ namespace Microsoft.PowerToys.Settings.UI { if (App.GetOobeWindow() == null) { - App.SetOobeWindow(new OobeWindow(Microsoft.PowerToys.Settings.UI.OOBE.Enums.PowerToysModules.WhatsNew)); + App.SetOobeWindow(new OobeWindow(OOBE.Enums.PowerToysModules.WhatsNew)); } else { @@ -160,6 +160,7 @@ namespace Microsoft.PowerToys.Settings.UI }); this.InitializeComponent(); + SetAppTitleBar(); // receive IPC Message App.IPCMessageReceivedCallback = (string msg) => @@ -186,6 +187,13 @@ namespace Microsoft.PowerToys.Settings.UI PowerToysTelemetry.Log.WriteEvent(new SettingsBootEvent() { BootTimeMs = bootTime.ElapsedMilliseconds }); } + private void SetAppTitleBar() + { + // We need to assign the window here so it can configure the custom title bar area correctly. + shellPage.TitleBar.Window = this; + WindowHelpers.ForceTopBorder1PixelInsetOnWindows10(WindowNative.GetWindowHandle(this)); + } + public void NavigateToSection(System.Type type) { ShellPage.Navigate(type); diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml similarity index 92% rename from src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml rename to src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml index 7aa8176621..58552b1c00 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml @@ -1,9 +1,10 @@ - - + @@ -37,7 +38,7 @@ - + @@ -46,6 +47,7 @@ Orientation="Vertical" Spacing="2"> @@ -61,7 +63,6 @@ - - + @@ -96,15 +100,16 @@ - @@ -120,19 +125,22 @@ - + - + - @@ -141,25 +149,27 @@ Click="AddCustomActionButton_Click" Style="{ThemeResource AccentButtonStyle}" /> - + - + - + - + - - - + - @@ -275,8 +290,8 @@ - @@ -306,7 +323,6 @@ - - - @@ -411,4 +425,4 @@ - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml.cs similarity index 98% rename from src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs rename to src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml.cs index 8442262688..095cb7167f 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPaste.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AdvancedPastePage.xaml.cs @@ -15,7 +15,7 @@ using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class AdvancedPastePage : Page, IRefreshablePage + public sealed partial class AdvancedPastePage : NavigatablePage, IRefreshablePage { private AdvancedPasteViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml index 1424b256a3..0bd34a3d57 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml @@ -1,9 +1,10 @@ - @@ -35,6 +37,7 @@ @@ -49,31 +52,42 @@ - + - + - + @@ -121,4 +136,4 @@ - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml.cs index 2e22da3120..d82ccb1917 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AlwaysOnTopPage.xaml.cs @@ -9,7 +9,7 @@ using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class AlwaysOnTopPage : Page, IRefreshablePage + public sealed partial class AlwaysOnTopPage : NavigatablePage, IRefreshablePage { private AlwaysOnTopViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml index f4a190ab46..5ccd1e4413 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml @@ -1,10 +1,11 @@ - - + - + @@ -42,7 +44,10 @@ - + @@ -52,21 +57,23 @@ - + - + @@ -112,4 +119,4 @@ - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs index 3399f425cc..cd085a2053 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/AwakePage.xaml.cs @@ -17,7 +17,7 @@ using PowerToys.GPOWrapper; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class AwakePage : Page, IRefreshablePage + public sealed partial class AwakePage : NavigatablePage, IRefreshablePage { private readonly string _appName = "Awake"; private readonly SettingsUtils _settingsUtils; diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml index 34305e3529..aad05be69e 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml @@ -1,9 +1,10 @@ - @@ -84,7 +86,7 @@ - + @@ -117,7 +119,7 @@ - + @@ -168,4 +170,4 @@ - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml.cs index 8afa34700e..6f406d669c 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdNotFoundPage.xaml.cs @@ -2,12 +2,13 @@ // The Microsoft Corporation licenses this file to you under the MIT license. // See the LICENSE file in the project root for more information. +using Microsoft.PowerToys.Settings.UI.Helpers; using Microsoft.PowerToys.Settings.UI.ViewModels; using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class CmdNotFoundPage : Page + public sealed partial class CmdNotFoundPage : NavigatablePage { private CmdNotFoundViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml index 9e7420d84d..23b41af139 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml @@ -1,9 +1,10 @@ - @@ -27,7 +29,10 @@ Severity="Informational" /> - + - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml.cs index fb3a97e309..1cc7e411d3 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/CmdPalPage.xaml.cs @@ -13,7 +13,7 @@ using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class CmdPalPage : Page, IRefreshablePage + public sealed partial class CmdPalPage : NavigatablePage, IRefreshablePage { private CmdPalViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml index 7ac03ead81..66b5c2d404 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/ColorPickerPage.xaml @@ -1,9 +1,10 @@ - @@ -38,11 +40,17 @@ - + - + @@ -50,25 +58,35 @@ - + - + - + @@ -80,7 +98,10 @@ - + - + - + - + - + - + @@ -230,6 +272,7 @@ @@ -256,4 +299,4 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/FancyZonesPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/FancyZonesPage.xaml.cs index 61865c89fa..93296699f6 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/FancyZonesPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/FancyZonesPage.xaml.cs @@ -9,7 +9,7 @@ using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class FancyZonesPage : Page, IRefreshablePage + public sealed partial class FancyZonesPage : NavigatablePage, IRefreshablePage { private FancyZonesViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml index 21de1910c7..7f3741df41 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml @@ -1,9 +1,10 @@ - @@ -32,7 +34,7 @@ - + @@ -51,4 +53,4 @@ - + diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml.cs b/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml.cs index 4d4ffbf416..3e0a642718 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml.cs +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/FileLocksmithPage.xaml.cs @@ -9,7 +9,7 @@ using Microsoft.UI.Xaml.Controls; namespace Microsoft.PowerToys.Settings.UI.Views { - public sealed partial class FileLocksmithPage : Page, IRefreshablePage + public sealed partial class FileLocksmithPage : NavigatablePage, IRefreshablePage { private FileLocksmithViewModel ViewModel { get; set; } diff --git a/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml b/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml index 1a3c640ddf..7658d11237 100644 --- a/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml +++ b/src/settings-ui/Settings.UI/SettingsXAML/Views/GeneralPage.xaml @@ -1,19 +1,21 @@ - - + + - + @@ -209,6 +211,7 @@ - + - + @@ -262,10 +271,12 @@ - + - - +