Fixes #282 Narrator does not convey error information when no more Right Parenthesis can be added in expression. (#284)

* Added narrator announcements when right parenthesis is clicked
This commit is contained in:
Stephanie Anderl
2019-03-14 16:20:05 -07:00
committed by GitHub
parent ac5292cf88
commit d37c75fec2
18 changed files with 165 additions and 31 deletions

View File

@@ -10,6 +10,7 @@
d:DesignHeight="395"
d:DesignWidth="315"
Loaded="OnLoaded"
Unloaded="OnUnloaded"
mc:Ignorable="d">
<Grid x:Name="ProgRadixOps">

View File

@@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
@@ -34,8 +34,13 @@ CalculatorProgrammerRadixOperators::CalculatorProgrammerRadixOperators() :
void CalculatorProgrammerRadixOperators::OnLoaded(Object^, RoutedEventArgs^)
{
auto viewmodel = safe_cast<StandardCalculatorViewModel^>(this->DataContext);
viewmodel->ProgModeRadixChange += ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange);
m_progModeRadixChangeToken = Model->ProgModeRadixChange += ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange);
m_propertyChangedToken = Model->PropertyChanged += ref new PropertyChangedEventHandler(this, &CalculatorProgrammerRadixOperators::OnViewModelPropertyChanged);
}
void CalculatorProgrammerRadixOperators::OnUnloaded(Object^, RoutedEventArgs^)
{
Model->ProgModeRadixChange -= m_progModeRadixChangeToken;
Model->PropertyChanged -= m_propertyChangedToken;
}
void CalculatorProgrammerRadixOperators::Shift_Clicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
@@ -94,3 +99,11 @@ void CalculatorProgrammerRadixOperators::IsErrorVisualState::set(bool value)
NumberPad->IsErrorVisualState = m_isErrorVisualState;
}
}
void CalculatorProgrammerRadixOperators::OnViewModelPropertyChanged(Object^ sender, PropertyChangedEventArgs^ e)
{
if (e->PropertyName == CalculatorViewModelProperties::OpenParenthesisCount && closeParenthesisButton->FocusState != ::FocusState::Unfocused)
{
Model->SetOpenParenthesisCountNarratorAnnouncement();
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
#pragma once
@@ -33,8 +33,12 @@ namespace CalculatorApp
void Shift_Clicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void SetVisibilityBinding(Windows::UI::Xaml::FrameworkElement^ element, Platform::String^ path, Windows::UI::Xaml::Data::IValueConverter^ converter);
void OnLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void OnUnloaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void ProgModeRadixChange();
void OnViewModelPropertyChanged(Platform::Object^ sender, Windows::UI::Xaml::Data::PropertyChangedEventArgs ^ e);
bool m_isErrorVisualState;
Windows::Foundation::EventRegistrationToken m_progModeRadixChangeToken;
Windows::Foundation::EventRegistrationToken m_propertyChangedToken;
};
}

View File

@@ -11,6 +11,8 @@
x:Name="ControlRoot"
d:DesignHeight="400"
d:DesignWidth="315"
Loaded="OnLoaded"
Unloaded="OnUnloaded"
mc:Ignorable="d">
<UserControl.Resources>
<converters:BooleanNegationConverter x:Key="BooleanNegationConverter"/>

View File

@@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
@@ -38,6 +38,15 @@ CalculatorScientificOperators::CalculatorScientificOperators()
Common::KeyboardShortcutManager::ShiftButtonChecked(false);
}
void CalculatorScientificOperators::OnLoaded(Object^, RoutedEventArgs^)
{
m_propertyChangedToken = Model->PropertyChanged += ref new PropertyChangedEventHandler(this, &CalculatorScientificOperators::OnViewModelPropertyChanged);
}
void CalculatorScientificOperators::OnUnloaded(Object^, RoutedEventArgs^)
{
Model->PropertyChanged -= m_propertyChangedToken;
}
void CalculatorScientificOperators::ShortLayout_Completed(_In_ Platform::Object^ /*sender*/, _In_ Platform::Object^ /*e*/)
{
IsWideLayout = false;
@@ -97,3 +106,11 @@ void CalculatorScientificOperators::SetOperatorRowVisibility()
InvRow1->Visibility = invRowVis;
InvRow2->Visibility = invRowVis;
}
void CalculatorScientificOperators::OnViewModelPropertyChanged(Object^ sender, PropertyChangedEventArgs^ e)
{
if (e->PropertyName == CalculatorViewModelProperties::OpenParenthesisCount && closeParenthesisButton->FocusState != ::FocusState::Unfocused)
{
Model->SetOpenParenthesisCountNarratorAnnouncement();
}
}

View File

@@ -1,4 +1,4 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
//
@@ -41,5 +41,10 @@ namespace CalculatorApp
void shiftButton_Check(_In_ Platform::Object^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs^ e);
void shiftButton_IsEnabledChanged(_In_ Platform::Object^ sender, _In_ Windows::UI::Xaml::DependencyPropertyChangedEventArgs^ e);
void SetOperatorRowVisibility();
void OnViewModelPropertyChanged(Platform::Object^ sender, Windows::UI::Xaml::Data::PropertyChangedEventArgs ^ e);
void OnLoaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
void OnUnloaded(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e);
Windows::Foundation::EventRegistrationToken m_propertyChangedToken;
};
}