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 @@
diff --git a/src/CalculatorUnitTests/NarratorAnnouncementUnitTests.cpp b/src/CalculatorUnitTests/NarratorAnnouncementUnitTests.cpp
index 22602d58..616ad2ef 100644
--- a/src/CalculatorUnitTests/NarratorAnnouncementUnitTests.cpp
+++ b/src/CalculatorUnitTests/NarratorAnnouncementUnitTests.cpp
@@ -177,6 +177,15 @@ namespace CalculatorUnitTests
VERIFY_ARE_EQUAL(annoucement->Processing, AutomationNotificationProcessing::ImportantMostRecent);
}
+ TEST_METHOD(TestGetSettingsPageOpenedAnnouncement)
+ {
+ auto annoucement = CalculatorAnnouncement::GetSettingsPageOpenedAnnouncement(m_testAnnouncement);
+ VERIFY_ARE_EQUAL(annoucement->Announcement, m_testAnnouncement);
+ VERIFY_ARE_EQUAL(annoucement->ActivityId, L"SettingsPageOpened");
+ VERIFY_ARE_EQUAL(annoucement->Kind, AutomationNotificationKind::ActionCompleted);
+ VERIFY_ARE_EQUAL(annoucement->Processing, AutomationNotificationProcessing::ImportantMostRecent);
+ }
+
private:
static const Platform::StringReference m_testAnnouncement;
};