mirror of
https://github.com/Microsoft/calculator.git
synced 2025-08-22 14:13:30 -07:00
Improve narrator screen reader messages of Settings page
This commit is contained in:
parent
e06355c9aa
commit
8da1883eda
8 changed files with 64 additions and 3 deletions
|
@ -30,6 +30,7 @@ namespace CalculatorApp::ViewModel::Common::Automation
|
||||||
StringReference GraphViewBestFitChanged(L"GraphViewBestFitChanged");
|
StringReference GraphViewBestFitChanged(L"GraphViewBestFitChanged");
|
||||||
StringReference AlwaysOnTop(L"AlwaysOnTop");
|
StringReference AlwaysOnTop(L"AlwaysOnTop");
|
||||||
StringReference BitShiftRadioButtonContent(L"BitShiftRadioButtonContent");
|
StringReference BitShiftRadioButtonContent(L"BitShiftRadioButtonContent");
|
||||||
|
StringReference SettingsPageOpened(L"SettingsPageOpened");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -204,3 +205,12 @@ NarratorAnnouncement ^ CalculatorAnnouncement::GetBitShiftRadioButtonCheckedAnno
|
||||||
AutomationNotificationKind::ActionCompleted,
|
AutomationNotificationKind::ActionCompleted,
|
||||||
AutomationNotificationProcessing::ImportantMostRecent);
|
AutomationNotificationProcessing::ImportantMostRecent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NarratorAnnouncement ^ CalculatorAnnouncement::GetSettingsPageOpenedAnnouncement(Platform::String ^ announcement)
|
||||||
|
{
|
||||||
|
return ref new NarratorAnnouncement(
|
||||||
|
announcement,
|
||||||
|
CalculatorActivityIds::SettingsPageOpened,
|
||||||
|
AutomationNotificationKind::ActionCompleted,
|
||||||
|
AutomationNotificationProcessing::ImportantMostRecent);
|
||||||
|
}
|
||||||
|
|
|
@ -75,5 +75,7 @@ public
|
||||||
static NarratorAnnouncement ^ GetAlwaysOnTopChangedAnnouncement(Platform::String ^ announcement);
|
static NarratorAnnouncement ^ GetAlwaysOnTopChangedAnnouncement(Platform::String ^ announcement);
|
||||||
|
|
||||||
static NarratorAnnouncement ^ GetBitShiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement);
|
static NarratorAnnouncement ^ GetBitShiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement);
|
||||||
|
|
||||||
|
static NarratorAnnouncement ^ GetSettingsPageOpenedAnnouncement(Platform::String ^ announcement);
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -4723,4 +4723,24 @@
|
||||||
<value>Use system setting</value>
|
<value>Use system setting</value>
|
||||||
<comment>Lable for the app theme option to use system setting</comment>
|
<comment>Lable for the app theme option to use system setting</comment>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TitleBarBackButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
|
<value>Back</value>
|
||||||
|
<comment>Screen reader prompt for the Back button in title bar to back to main page</comment>
|
||||||
|
</data>
|
||||||
|
<data name="SettingsPageOpenedAnnouncement" xml:space="preserve">
|
||||||
|
<value>Settings Page</value>
|
||||||
|
<comment>Announcement used when Settings page is opened</comment>
|
||||||
|
</data>
|
||||||
|
<data name="AppThemeExpander.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
|
<value>App theme Setting</value>
|
||||||
|
<comment>Screen reader prompt for the App theme Setting radio buttons group</comment>
|
||||||
|
</data>
|
||||||
|
<data name="LightThemeRadioButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
|
<value>Light mode</value>
|
||||||
|
<comment>Screen reader prompt for the App theme Light mode radio button</comment>
|
||||||
|
</data>
|
||||||
|
<data name="DarkThemeRadioButton.[using:Windows.UI.Xaml.Automation]AutomationProperties.Name" xml:space="preserve">
|
||||||
|
<value>Dark mode</value>
|
||||||
|
<comment>Screen reader prompt for the App theme Dark mode radio button</comment>
|
||||||
|
</data>
|
||||||
</root>
|
</root>
|
||||||
|
|
|
@ -157,6 +157,7 @@
|
||||||
</muxc:NavigationView>
|
</muxc:NavigationView>
|
||||||
|
|
||||||
<Popup x:Name="Popup"
|
<Popup x:Name="Popup"
|
||||||
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Closed="Popup_Closed"
|
Closed="Popup_Closed"
|
||||||
HorizontalOffset="0"
|
HorizontalOffset="0"
|
||||||
IsLightDismissEnabled="False"
|
IsLightDismissEnabled="False"
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
<UserControl x:Class="CalculatorApp.Settings"
|
<UserControl x:Class="CalculatorApp.Settings"
|
||||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||||
|
xmlns:automation="using:CalculatorApp.ViewModel.Common.Automation"
|
||||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||||
xmlns:local="using:CalculatorApp"
|
xmlns:local="using:CalculatorApp"
|
||||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||||
|
@ -9,7 +10,6 @@
|
||||||
Unloaded="OnUnloaded"
|
Unloaded="OnUnloaded"
|
||||||
mc:Ignorable="d">
|
mc:Ignorable="d">
|
||||||
|
|
||||||
|
|
||||||
<UserControl.Resources>
|
<UserControl.Resources>
|
||||||
<ResourceDictionary>
|
<ResourceDictionary>
|
||||||
<Style x:Key="SettingsContentScrollViewStyle" TargetType="ScrollViewer">
|
<Style x:Key="SettingsContentScrollViewStyle" TargetType="ScrollViewer">
|
||||||
|
@ -30,6 +30,8 @@
|
||||||
<Setter Property="FontSize" Value="{ThemeResource BodyFontSize}"/>
|
<Setter Property="FontSize" Value="{ThemeResource BodyFontSize}"/>
|
||||||
<Setter Property="TextWrapping" Value="Wrap"/>
|
<Setter Property="TextWrapping" Value="Wrap"/>
|
||||||
</Style>
|
</Style>
|
||||||
|
|
||||||
|
<automation:NarratorNotifier x:Name="NarratorNotifier"/>
|
||||||
</ResourceDictionary>
|
</ResourceDictionary>
|
||||||
</UserControl.Resources>
|
</UserControl.Resources>
|
||||||
|
|
||||||
|
@ -95,9 +97,12 @@
|
||||||
<RowDefinition x:Name="AboutTitleContentRow" Height="*"/>
|
<RowDefinition x:Name="AboutTitleContentRow" Height="*"/>
|
||||||
</Grid.RowDefinitions>
|
</Grid.RowDefinitions>
|
||||||
|
|
||||||
<TextBlock x:Uid="SettingsAppearance" Style="{StaticResource BodyStrongTextBlockStyle}"/>
|
<TextBlock x:Uid="SettingsAppearance"
|
||||||
|
Style="{StaticResource BodyStrongTextBlockStyle}"
|
||||||
|
AutomationProperties.HeadingLevel="Level1"/>
|
||||||
|
|
||||||
<muxc:Expander x:Name="AppThemeExpander"
|
<muxc:Expander x:Name="AppThemeExpander"
|
||||||
|
x:Uid="AppThemeExpander"
|
||||||
Grid.Row="1"
|
Grid.Row="1"
|
||||||
Margin="0,8,0,0"
|
Margin="0,8,0,0"
|
||||||
HorizontalAlignment="Stretch"
|
HorizontalAlignment="Stretch"
|
||||||
|
@ -157,7 +162,8 @@
|
||||||
<TextBlock x:Name="AboutGroupTitle"
|
<TextBlock x:Name="AboutGroupTitle"
|
||||||
x:Uid="AboutGroupTitle"
|
x:Uid="AboutGroupTitle"
|
||||||
Margin="0,20,0,0"
|
Margin="0,20,0,0"
|
||||||
Style="{ThemeResource BodyStrongTextBlockStyle}"/>
|
Style="{ThemeResource BodyStrongTextBlockStyle}"
|
||||||
|
AutomationProperties.HeadingLevel="Level1"/>
|
||||||
<StackPanel Grid.Row="1"
|
<StackPanel Grid.Row="1"
|
||||||
Margin="0,8,0,0"
|
Margin="0,8,0,0"
|
||||||
Orientation="Vertical">
|
Orientation="Vertical">
|
||||||
|
|
|
@ -17,6 +17,7 @@ using Windows.UI.Xaml.Data;
|
||||||
using Windows.UI.Xaml.Input;
|
using Windows.UI.Xaml.Input;
|
||||||
using Windows.UI.Xaml.Media;
|
using Windows.UI.Xaml.Media;
|
||||||
using Windows.UI.Xaml.Navigation;
|
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
|
// 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
|
// OnLoaded would be invoked by Popup several times while contructed once
|
||||||
private void OnLoaded(object sender, RoutedEventArgs args)
|
private void OnLoaded(object sender, RoutedEventArgs args)
|
||||||
{
|
{
|
||||||
|
AnnouncePageOpened();
|
||||||
|
|
||||||
var currentTheme = ThemeHelper.RootTheme.ToString();
|
var currentTheme = ThemeHelper.RootTheme.ToString();
|
||||||
(ThemeRadioButtons.Items.Cast<RadioButton>().FirstOrDefault(c => c?.Tag?.ToString() == currentTheme)).IsChecked = true;
|
(ThemeRadioButtons.Items.Cast<RadioButton>().FirstOrDefault(c => c?.Tag?.ToString() == currentTheme)).IsChecked = true;
|
||||||
|
|
||||||
SetDefaultFocus();
|
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
|
// OnUnloaded would be invoked by Popup several times while contructed once
|
||||||
private void OnUnloaded(object sender, RoutedEventArgs e)
|
private void OnUnloaded(object sender, RoutedEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
</Grid.Transitions>
|
</Grid.Transitions>
|
||||||
|
|
||||||
<Button x:Name="BackButton"
|
<Button x:Name="BackButton"
|
||||||
|
x:Uid="TitleBarBackButton"
|
||||||
Width="44"
|
Width="44"
|
||||||
Height="32"
|
Height="32"
|
||||||
Margin="0,0,4,0"
|
Margin="0,0,4,0"
|
||||||
|
@ -72,6 +73,7 @@
|
||||||
Height="16"
|
Height="16"
|
||||||
Margin="16,0,0,0"
|
Margin="16,0,0,0"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
Source="ms-appx:///Assets/CalculatorAppList.png"/>
|
Source="ms-appx:///Assets/CalculatorAppList.png"/>
|
||||||
<TextBlock x:Name="AppName"
|
<TextBlock x:Name="AppName"
|
||||||
x:Uid="AppName"
|
x:Uid="AppName"
|
||||||
|
@ -80,6 +82,7 @@
|
||||||
HorizontalAlignment="Left"
|
HorizontalAlignment="Left"
|
||||||
VerticalAlignment="Center"
|
VerticalAlignment="Center"
|
||||||
FontSize="12"
|
FontSize="12"
|
||||||
|
AutomationProperties.AccessibilityView="Raw"
|
||||||
TextTrimming="CharacterEllipsis"/>
|
TextTrimming="CharacterEllipsis"/>
|
||||||
</Grid>
|
</Grid>
|
||||||
</Grid>
|
</Grid>
|
||||||
|
|
|
@ -177,6 +177,15 @@ namespace CalculatorUnitTests
|
||||||
VERIFY_ARE_EQUAL(annoucement->Processing, AutomationNotificationProcessing::ImportantMostRecent);
|
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:
|
private:
|
||||||
static const Platform::StringReference m_testAnnouncement;
|
static const Platform::StringReference m_testAnnouncement;
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue