From 8da1883edaceb3e4a4a82c0535a14469c4d8bfea Mon Sep 17 00:00:00 2001 From: Kenny Guo Date: Wed, 28 Jul 2021 18:25:06 +0800 Subject: [PATCH] Improve narrator screen reader messages of Settings page --- .../Automation/NarratorAnnouncement.cpp | 10 ++++++++++ .../Common/Automation/NarratorAnnouncement.h | 2 ++ src/Calculator/Resources/en-US/Resources.resw | 20 +++++++++++++++++++ src/Calculator/Views/MainPage.xaml | 1 + src/Calculator/Views/Settings.xaml | 12 ++++++++--- src/Calculator/Views/Settings.xaml.cs | 10 ++++++++++ src/Calculator/Views/TitleBar.xaml | 3 +++ .../NarratorAnnouncementUnitTests.cpp | 9 +++++++++ 8 files changed, 64 insertions(+), 3 deletions(-) diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp index 9751c7dc..35a8a692 100644 --- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp +++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp @@ -30,6 +30,7 @@ namespace CalculatorApp::ViewModel::Common::Automation StringReference GraphViewBestFitChanged(L"GraphViewBestFitChanged"); StringReference AlwaysOnTop(L"AlwaysOnTop"); StringReference BitShiftRadioButtonContent(L"BitShiftRadioButtonContent"); + StringReference SettingsPageOpened(L"SettingsPageOpened"); } } @@ -204,3 +205,12 @@ NarratorAnnouncement ^ CalculatorAnnouncement::GetBitShiftRadioButtonCheckedAnno AutomationNotificationKind::ActionCompleted, AutomationNotificationProcessing::ImportantMostRecent); } + +NarratorAnnouncement ^ CalculatorAnnouncement::GetSettingsPageOpenedAnnouncement(Platform::String ^ announcement) +{ + return ref new NarratorAnnouncement( + announcement, + CalculatorActivityIds::SettingsPageOpened, + AutomationNotificationKind::ActionCompleted, + AutomationNotificationProcessing::ImportantMostRecent); +} diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h index da323e5f..26196b9e 100644 --- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h +++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h @@ -75,5 +75,7 @@ public static NarratorAnnouncement ^ GetAlwaysOnTopChangedAnnouncement(Platform::String ^ announcement); static NarratorAnnouncement ^ GetBitShiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement); + + static NarratorAnnouncement ^ GetSettingsPageOpenedAnnouncement(Platform::String ^ announcement); }; } diff --git a/src/Calculator/Resources/en-US/Resources.resw b/src/Calculator/Resources/en-US/Resources.resw index bbbef488..a2f51a07 100644 --- a/src/Calculator/Resources/en-US/Resources.resw +++ b/src/Calculator/Resources/en-US/Resources.resw @@ -4723,4 +4723,24 @@ Use system setting Lable for the app theme option to use system setting + + Back + Screen reader prompt for the Back button in title bar to back to main page + + + Settings Page + Announcement used when Settings page is opened + + + App theme Setting + Screen reader prompt for the App theme Setting radio buttons group + + + Light mode + Screen reader prompt for the App theme Light mode radio button + + + Dark mode + Screen reader prompt for the App theme Dark mode radio button + diff --git a/src/Calculator/Views/MainPage.xaml b/src/Calculator/Views/MainPage.xaml index 123d8782..ce56b9d0 100644 --- a/src/Calculator/Views/MainPage.xaml +++ b/src/Calculator/Views/MainPage.xaml @@ -157,6 +157,7 @@ - + + @@ -95,9 +97,12 @@ - + + Style="{ThemeResource BodyStrongTextBlockStyle}" + AutomationProperties.HeadingLevel="Level1"/> diff --git a/src/Calculator/Views/Settings.xaml.cs b/src/Calculator/Views/Settings.xaml.cs index a11250cc..366d32a4 100644 --- a/src/Calculator/Views/Settings.xaml.cs +++ b/src/Calculator/Views/Settings.xaml.cs @@ -17,6 +17,7 @@ using Windows.UI.Xaml.Data; using Windows.UI.Xaml.Input; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Navigation; +using CalculatorApp.ViewModel.Common.Automation; // The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236 @@ -62,12 +63,21 @@ namespace CalculatorApp // OnLoaded would be invoked by Popup several times while contructed once private void OnLoaded(object sender, RoutedEventArgs args) { + AnnouncePageOpened(); + var currentTheme = ThemeHelper.RootTheme.ToString(); (ThemeRadioButtons.Items.Cast().FirstOrDefault(c => c?.Tag?.ToString() == currentTheme)).IsChecked = true; SetDefaultFocus(); } + private void AnnouncePageOpened() + { + string announcementText = AppResourceProvider.GetInstance().GetResourceString("SettingsPageOpenedAnnouncement"); + NarratorAnnouncement announcement = CalculatorAnnouncement.GetSettingsPageOpenedAnnouncement(announcementText); + NarratorNotifier.Announce(announcement); + } + // OnUnloaded would be invoked by Popup several times while contructed once private void OnUnloaded(object sender, RoutedEventArgs e) { diff --git a/src/Calculator/Views/TitleBar.xaml b/src/Calculator/Views/TitleBar.xaml index 690609aa..6df40e7f 100644 --- a/src/Calculator/Views/TitleBar.xaml +++ b/src/Calculator/Views/TitleBar.xaml @@ -47,6 +47,7 @@