diff --git a/src/CalcManager/CEngine/scicomm.cpp b/src/CalcManager/CEngine/scicomm.cpp
index fdcf749c..f39405e4 100644
--- a/src/CalcManager/CEngine/scicomm.cpp
+++ b/src/CalcManager/CEngine/scicomm.cpp
@@ -546,7 +546,7 @@ void CCalcEngine::ProcessCommandWorker(WPARAM wParam)
{
if (!m_openParenCount && !nx)
{
- m_pCalcDisplay->OnNoParenAdded();
+ m_pCalcDisplay->OnNoRightParenAdded();
}
HandleErrorCommand(wParam);
diff --git a/src/CalcManager/CalculatorManager.cpp b/src/CalcManager/CalculatorManager.cpp
index d52256e8..25cef8b2 100644
--- a/src/CalcManager/CalculatorManager.cpp
+++ b/src/CalcManager/CalculatorManager.cpp
@@ -109,7 +109,6 @@ namespace CalculationManager
///
/// Callback from the engine
- /// Used to set the current unmatched open parenthesis count
///
/// string containing the parenthesis count
void CalculatorManager::SetParenDisplayText(const wstring& parenthesisCount)
@@ -121,9 +120,9 @@ namespace CalculationManager
/// Callback from the engine
/// Used to set the narrator text when no parenthesis can be added
///
- void CalculatorManager::OnNoParenAdded()
+ void CalculatorManager::OnNoRightParenAdded()
{
- m_displayCallback->OnNoParenAdded();
+ m_displayCallback->OnNoRightParenAdded();
}
///
diff --git a/src/CalcManager/CalculatorManager.h b/src/CalcManager/CalculatorManager.h
index cb90fbdf..d3e354fc 100644
--- a/src/CalcManager/CalculatorManager.h
+++ b/src/CalcManager/CalculatorManager.h
@@ -95,7 +95,7 @@ namespace CalculationManager
void SetMemorizedNumbers(_In_ const std::vector& memorizedNumbers) override;
void OnHistoryItemAdded(_In_ unsigned int addedItemIndex) override;
void SetParenDisplayText(const std::wstring& parenthesisCount) override;
- void OnNoParenAdded() override;
+ void OnNoRightParenAdded() override;
void DisplayPasteError();
void MaxDigitsReached() override;
void BinaryOperatorReceived() override;
diff --git a/src/CalcManager/Header Files/ICalcDisplay.h b/src/CalcManager/Header Files/ICalcDisplay.h
index 8f57d4fb..2ba57e65 100644
--- a/src/CalcManager/Header Files/ICalcDisplay.h
+++ b/src/CalcManager/Header Files/ICalcDisplay.h
@@ -13,7 +13,7 @@ public:
virtual void SetIsInError(bool isInError) = 0;
virtual void SetExpressionDisplay(_Inout_ std::shared_ptr>> const &tokens, _Inout_ std::shared_ptr>> const &commands) = 0;
virtual void SetParenDisplayText(const std::wstring& pszText) = 0;
- virtual void OnNoParenAdded() = 0;
+ virtual void OnNoRightParenAdded() = 0;
virtual void MaxDigitsReached() = 0; // not an error but still need to inform UI layer.
virtual void BinaryOperatorReceived() = 0;
virtual void OnHistoryItemAdded(_In_ unsigned int addedItemIndex) = 0;
diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp
index 7371bfa3..823572f3 100644
--- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp
+++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp
@@ -145,7 +145,7 @@ NarratorAnnouncement^ CalculatorAnnouncement::GetDisplayCopiedAnnouncement(Strin
AutomationNotificationProcessing::ImportantMostRecent);
}
-NarratorAnnouncement^ CalculatorAnnouncement::GetOpenParenethisCount(String^ announcement)
+NarratorAnnouncement^ CalculatorAnnouncement::GetOpenParenthesisCountChangedAnnouncement(String^ announcement)
{
return ref new NarratorAnnouncement(
announcement,
@@ -154,7 +154,7 @@ NarratorAnnouncement^ CalculatorAnnouncement::GetOpenParenethisCount(String^ ann
AutomationNotificationProcessing::ImportantMostRecent);
}
-NarratorAnnouncement^ CalculatorAnnouncement::GetNoParenthesisAddedAnnouncement(String^ announcement)
+NarratorAnnouncement^ CalculatorAnnouncement::GetNoRightParenthesisAddedAnnouncement(String^ announcement)
{
return ref new NarratorAnnouncement(
announcement,
diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h
index 3bf3e433..70067d72 100644
--- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h
+++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h
@@ -91,7 +91,7 @@ namespace CalculatorApp::Common::Automation
static NarratorAnnouncement^ GetDisplayCopiedAnnouncement(Platform::String^ announcement);
- static NarratorAnnouncement^ GetOpenParenethisCount(Platform::String^ announcement);
- static NarratorAnnouncement^ GetNoParenthesisAddedAnnouncement(Platform::String ^ announcement);
+ static NarratorAnnouncement^ GetOpenParenthesisCountChangedAnnouncement(Platform::String^ announcement);
+ static NarratorAnnouncement^ GetNoRightParenthesisAddedAnnouncement(Platform::String ^ announcement);
};
}
diff --git a/src/CalcViewModel/Common/CalculatorDisplay.cpp b/src/CalcViewModel/Common/CalculatorDisplay.cpp
index 0e6b45a3..36fe4fed 100644
--- a/src/CalcViewModel/Common/CalculatorDisplay.cpp
+++ b/src/CalcViewModel/Common/CalculatorDisplay.cpp
@@ -29,8 +29,7 @@ void CalculatorDisplay::SetPrimaryDisplay(_In_ const wstring& displayStringValue
{
if (m_callbackReference)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->SetPrimaryDisplay(displayStringValue, isError);
}
@@ -41,22 +40,20 @@ void CalculatorDisplay::SetParenDisplayText(_In_ const std::wstring& parenthesis
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->SetParenthesisCount(parenthesisCount);
}
}
}
-void CalculatorDisplay::OnNoParenAdded()
+void CalculatorDisplay::OnNoRightParenAdded()
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
- calcVM->SetNoParenAddedNarratorAnnouncement();
+ calcVM->OnNoRightParenAdded();
}
}
}
@@ -65,8 +62,7 @@ void CalculatorDisplay::SetIsInError(bool isError)
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->IsInError = isError;
}
@@ -77,8 +73,7 @@ void CalculatorDisplay::SetExpressionDisplay(_Inout_ std::shared_ptr();
- if (calcVM)
+ if(auto calcVM = m_callbackReference.Resolve())
{
calcVM->SetExpressionDisplay(tokens, commands);
}
@@ -89,8 +84,7 @@ void CalculatorDisplay::SetMemorizedNumbers(_In_ const vector& new
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->SetMemorizedNumbers(newMemorizedNumbers);
}
@@ -101,8 +95,7 @@ void CalculatorDisplay::OnHistoryItemAdded(_In_ unsigned int addedItemIndex)
{
if (m_historyCallbackReference != nullptr)
{
- auto historyVM = m_historyCallbackReference.Resolve();
- if (historyVM)
+ if (auto historyVM = m_historyCallbackReference.Resolve())
{
historyVM->OnHistoryItemAdded(addedItemIndex);
}
@@ -113,8 +106,7 @@ void CalculatorDisplay::MaxDigitsReached()
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->OnMaxDigitsReached();
}
@@ -125,8 +117,7 @@ void CalculatorDisplay::BinaryOperatorReceived()
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->OnBinaryOperatorReceived();
}
@@ -137,8 +128,7 @@ void CalculatorDisplay::MemoryItemChanged(unsigned int indexOfMemory)
{
if (m_callbackReference != nullptr)
{
- auto calcVM = m_callbackReference.Resolve();
- if (calcVM)
+ if (auto calcVM = m_callbackReference.Resolve())
{
calcVM->OnMemoryItemChanged(indexOfMemory);
}
diff --git a/src/CalcViewModel/Common/CalculatorDisplay.h b/src/CalcViewModel/Common/CalculatorDisplay.h
index 20e82f08..9ff06a6e 100644
--- a/src/CalcViewModel/Common/CalculatorDisplay.h
+++ b/src/CalcViewModel/Common/CalculatorDisplay.h
@@ -22,7 +22,7 @@ namespace CalculatorApp
void SetMemorizedNumbers(_In_ const std::vector& memorizedNumbers) override;
void OnHistoryItemAdded(_In_ unsigned int addedItemIndex) override;
void SetParenDisplayText(_In_ const std::wstring& parenthesisCount) override;
- void OnNoParenAdded() override;
+ void OnNoRightParenAdded() override;
void MaxDigitsReached() override;
void BinaryOperatorReceived() override;
void MemoryItemChanged(unsigned int indexOfMemory) override;
diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp
index 7e85beb1..08b3f9d1 100644
--- a/src/CalcViewModel/StandardCalculatorViewModel.cpp
+++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp
@@ -41,6 +41,7 @@ namespace CalculatorApp::ViewModel
StringReference DisplayValue(L"DisplayValue");
StringReference IsInError(L"IsInError");
StringReference BinaryDisplayValue(L"BinaryDisplayValue");
+ StringReference OpenParenthesisCount(L"OpenParenthesisCount");
}
namespace CalculatorResourceKeys
@@ -52,6 +53,7 @@ namespace CalculatorApp::ViewModel
StringReference DecButton(L"Format_DecButtonValue");
StringReference OctButton(L"Format_OctButtonValue");
StringReference BinButton(L"Format_BinButtonValue");
+ StringReference LeftParenthesisAutomationFormat(L"Format_OpenParenthesisAutomationNamePrefix");
StringReference OpenParenthesisCountAutomationFormat(L"Format_OpenParenthesisCountAutomationNamePrefix");
StringReference NoParenthesisAdded(L"NoParenthesisAdded_Announcement");
StringReference MaxDigitsReachedFormat(L"Format_MaxDigitsReached");
@@ -95,7 +97,7 @@ StandardCalculatorViewModel::StandardCalculatorViewModel() :
m_localizedMemoryItemClearedAutomationFormat(nullptr),
m_localizedMemoryCleared(nullptr),
m_localizedOpenParenthesisCountChangedAutomationFormat(nullptr),
- m_localizaedNoParenthesisAddedAutomationFormat(nullptr)
+ m_localizedNoRightParenthesisAddedAutomationFormat(nullptr)
{
WeakReference calculatorViewModel(this);
m_calculatorDisplay.SetCallback(calculatorViewModel);
@@ -106,6 +108,7 @@ StandardCalculatorViewModel::StandardCalculatorViewModel() :
m_localizedDecimalAutomationFormat = AppResourceProvider::GetInstance().GetResourceString(CalculatorResourceKeys::DecButton);
m_localizedOctalAutomationFormat = AppResourceProvider::GetInstance().GetResourceString(CalculatorResourceKeys::OctButton);
m_localizedBinaryAutomationFormat = AppResourceProvider::GetInstance().GetResourceString(CalculatorResourceKeys::BinButton);
+ m_leftParenthesisAutomationFormat = AppResourceProvider::GetInstance().GetResourceString(CalculatorResourceKeys::LeftParenthesisAutomationFormat);
// Initialize the Automation Name
CalculationResultAutomationName = GetLocalizedStringFormat(m_localizedCalculationResultAutomationFormat, m_DisplayValue);
@@ -224,13 +227,14 @@ void StandardCalculatorViewModel::SetParenthesisCount(_In_ const wstring& parent
if (IsProgrammer || IsScientific)
{
OpenParenthesisCount = ref new String(parenthesisCount.c_str());
+ RaisePropertyChanged("LeftParenthesisAutomationName");
}
}
-void StandardCalculatorViewModel::OpenParenthesisCountNarratorAnnouncment()
+void StandardCalculatorViewModel::SetOpenParenthesisCountNarratorAnnouncement()
{
String^ parenthesisCount = ((m_OpenParenthesisCount == nullptr) ? "0" : m_OpenParenthesisCount);
- wstring localizedParenthesisCount = std::wstring(parenthesisCount->Data());
+ wstring localizedParenthesisCount = parenthesisCount->Data();
LocalizationSettings::GetInstance().LocalizeDisplayValue(&localizedParenthesisCount);
String^ announcement = LocalizationStringUtil::GetLocalizedNarratorAnnouncement(
@@ -238,16 +242,21 @@ void StandardCalculatorViewModel::OpenParenthesisCountNarratorAnnouncment()
m_localizedOpenParenthesisCountChangedAutomationFormat,
localizedParenthesisCount.c_str());
- Announcement = CalculatorAnnouncement::GetOpenParenethisCount(announcement);
+ Announcement = CalculatorAnnouncement::GetOpenParenthesisCountChangedAnnouncement(announcement);
+}
+
+void StandardCalculatorViewModel::OnNoRightParenAdded()
+{
+ SetNoParenAddedNarratorAnnouncement();
}
void StandardCalculatorViewModel::SetNoParenAddedNarratorAnnouncement()
{
String^ announcement = LocalizationStringUtil::GetLocalizedNarratorAnnouncement(
CalculatorResourceKeys::NoParenthesisAdded,
- m_localizaedNoParenthesisAddedAutomationFormat);
+ m_localizedNoRightParenthesisAddedAutomationFormat);
- Announcement = CalculatorAnnouncement::GetNoParenthesisAddedAnnouncement(announcement);
+ Announcement = CalculatorAnnouncement::GetNoRightParenthesisAddedAnnouncement(announcement);
}
void StandardCalculatorViewModel::DisableButtons(CommandType selectedExpressionCommandType)
@@ -278,6 +287,15 @@ void StandardCalculatorViewModel::DisableButtons(CommandType selectedExpressionC
}
}
+String ^ StandardCalculatorViewModel::GetLeftParenthesisAutomationName()
+{
+ String^ parenthesisCount = ((m_OpenParenthesisCount == nullptr) ? "0" : m_OpenParenthesisCount);
+ wstring localizedParenthesisCount = std::wstring(parenthesisCount->Data());
+ LocalizationSettings::GetInstance().LocalizeDisplayValue(&localizedParenthesisCount);
+
+ return GetLocalizedStringFormat(m_leftParenthesisAutomationFormat, ref new String(localizedParenthesisCount.c_str()));
+}
+
void StandardCalculatorViewModel::SetExpressionDisplay(_Inout_ shared_ptr>> const &tokens, _Inout_ shared_ptr>> const &commands)
{
m_tokens = tokens;
@@ -581,7 +599,6 @@ void StandardCalculatorViewModel::OnButtonPressed(Object^ parameter)
m_feedbackForButtonPress = CalculatorButtonPressedEventArgs::GetAuditoryFeedbackFromCommandParameter(parameter);
NumbersAndOperatorsEnum numOpEnum = CalculatorButtonPressedEventArgs::GetOperationFromCommandParameter(parameter);
Command cmdenum = ConvertToOperatorsEnum(numOpEnum);
- String^ previousParenthesisCount = m_OpenParenthesisCount;
TraceLogger::GetInstance().UpdateFunctionUsage((int)numOpEnum);
@@ -659,11 +676,6 @@ void StandardCalculatorViewModel::OnButtonPressed(Object^ parameter)
m_standardCalculatorManager.SendCommand(cmdenum);
}
-
- if (numOpEnum == NumbersAndOperatorsEnum::OpenParenthesis || (numOpEnum == NumbersAndOperatorsEnum::CloseParenthesis && previousParenthesisCount) )
- {
- OpenParenthesisCountNarratorAnnouncment();
- }
}
}
diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h
index 58863469..576cee66 100644
--- a/src/CalcViewModel/StandardCalculatorViewModel.h
+++ b/src/CalcViewModel/StandardCalculatorViewModel.h
@@ -36,6 +36,7 @@ namespace CalculatorApp
extern Platform::StringReference IsMemoryEmpty;
extern Platform::StringReference IsInError;
extern Platform::StringReference BinaryDisplayValue;
+ extern Platform::StringReference OpenParenthesisCount;
}
[Windows::UI::Xaml::Data::Bindable]
@@ -261,6 +262,14 @@ namespace CalculatorApp
void set(bool value) { m_completeTextSelection = value; }
}
+ property Platform::String^ LeftParenthesisAutomationName
+ {
+ Platform::String^ get()
+ {
+ return GetLeftParenthesisAutomationName();
+ }
+ }
+
internal:
void OnPaste(Platform::String^ pastedString, CalculatorApp::Common::ViewMode mode);
void OnCopyCommand(Platform::Object^ parameter);
@@ -276,14 +285,14 @@ namespace CalculatorApp
void OnMemoryClear(_In_ Platform::Object^ memoryItemPosition);
void OnPinUnpinCommand(Platform::Object^ parameter);
- void OpenParenthesisCountNarratorAnnouncment();
-
void SetPrimaryDisplay(_In_ std::wstring const&displayString, _In_ bool isError);
void DisplayPasteError();
void SetTokens(_Inout_ std::shared_ptr>> const &tokens);
void SetExpressionDisplay(_Inout_ std::shared_ptr>> const &tokens, _Inout_ std::shared_ptr>> const &commands);
void SetHistoryExpressionDisplay(_Inout_ std::shared_ptr>> const &tokens, _Inout_ std::shared_ptr>> const &commands);
void SetParenthesisCount(_In_ const std::wstring& parenthesisCount);
+ void SetOpenParenthesisCountNarratorAnnouncement();
+ void OnNoRightParenAdded();
void SetNoParenAddedNarratorAnnouncement();
void OnMaxDigitsReached();
void OnBinaryOperatorReceived();
@@ -333,7 +342,7 @@ namespace CalculatorApp
Platform::String^ m_localizedMemoryItemClearedAutomationFormat;
Platform::String^ m_localizedMemoryCleared;
Platform::String^ m_localizedOpenParenthesisCountChangedAutomationFormat;
- Platform::String^ m_localizaedNoParenthesisAddedAutomationFormat;
+ Platform::String^ m_localizedNoRightParenthesisAddedAutomationFormat;
bool m_pinned;
bool m_isOperandEnabled;
@@ -352,6 +361,7 @@ namespace CalculatorApp
bool m_isLastOperationHistoryLoad;
Platform::String^ m_selectedExpressionLastData;
Common::DisplayExpressionToken^ m_selectedExpressionToken;
+ Platform::String^ m_leftParenthesisAutomationFormat;
Platform::String^ LocalizeDisplayValue(_In_ std::wstring const &displayValue, _In_ bool isError);
Platform::String^ CalculateNarratorDisplayValue(_In_ std::wstring const &displayValue, _In_ Platform::String^ localizedDisplayValue, _In_ bool isError);
@@ -361,6 +371,7 @@ namespace CalculatorApp
CalculationManager::Command ConvertToOperatorsEnum(NumbersAndOperatorsEnum operation);
void DisableButtons(CalculationManager::CommandType selectedExpressionCommandType);
+ Platform::String^ GetLeftParenthesisAutomationName();
Platform::String^ m_feedbackForButtonPress;
void OnButtonPressed(Platform::Object^ parameter);
diff --git a/src/Calculator/Resources/en-US/Resources.resw b/src/Calculator/Resources/en-US/Resources.resw
index 1e77ed55..4ee3d418 100644
--- a/src/Calculator/Resources/en-US/Resources.resw
+++ b/src/Calculator/Resources/en-US/Resources.resw
@@ -1312,6 +1312,10 @@
Left parenthesis
Screen reader prompt for the Calculator "(" button on the scientific operator keypad
+
+
+ Left parenthesis, open parenthesis count %1
+ {Locked="%1"} Screen reader prompt for the Calculator "(" button on the scientific operator keypad. %1 is the localized count of open parenthesis, e.g. "2".
Right parenthesis
@@ -1319,11 +1323,11 @@
Open parenthesis count %1
- {Locked="%1"} Screen reader prompt for the Calculator "(" button on the scientific operator keypad. %1 is the localized count of open parenthesis, e.g. "2".
+ {Locked="%1"} Screen reader prompt for the Calculator "(" button on the scientific and programmer operator keypad. %1 is the localized count of open parenthesis, e.g. "2".
There are no open parentheses to close.
- {Locked="%1"} Screen reader prompt for the Calculator when the ")" button on the scientific or programmer operator keypad cannot be added to the equation. e.g. "1+)".
+ {Locked="%1"} Screen reader prompt for the Calculator when the ")" button on the scientific and programmer operator keypad cannot be added to the equation. e.g. "1+)".
Scientific notation
diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml
index e281f3df..5c84f4f7 100644
--- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml
+++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml
@@ -10,6 +10,7 @@
d:DesignHeight="395"
d:DesignWidth="315"
Loaded="OnLoaded"
+ Unloaded="OnUnloaded"
mc:Ignorable="d">
@@ -408,6 +409,7 @@
Style="{StaticResource ParenthesisCalcButtonStyle}"
FontSize="18"
AutomationProperties.AutomationId="openParenthesisButton"
+ AutomationProperties.Name="{Binding LeftParenthesisAutomationName}"
ButtonId="OpenParenthesis"
Content="("
Tag="{x:Bind Model.OpenParenthesisCount, Mode=OneWay}"/>
diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp
index 60a628bf..380a798f 100644
--- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp
+++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp
@@ -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,12 @@ CalculatorProgrammerRadixOperators::CalculatorProgrammerRadixOperators() :
void CalculatorProgrammerRadixOperators::OnLoaded(Object^, RoutedEventArgs^)
{
- auto viewmodel = safe_cast(this->DataContext);
- viewmodel->ProgModeRadixChange += ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange);
+ Model->ProgModeRadixChange += ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange);
+ m_propertyChangedToken = Model->PropertyChanged += ref new PropertyChangedEventHandler(this, &CalculatorProgrammerRadixOperators::OnPropertyChanged);
+}
+void CalculatorProgrammerRadixOperators::OnUnloaded(Object^, RoutedEventArgs^)
+{
+ Model->PropertyChanged -= m_propertyChangedToken;
}
void CalculatorProgrammerRadixOperators::Shift_Clicked(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e)
@@ -94,3 +98,11 @@ void CalculatorProgrammerRadixOperators::IsErrorVisualState::set(bool value)
NumberPad->IsErrorVisualState = m_isErrorVisualState;
}
}
+
+void CalculatorProgrammerRadixOperators::OnPropertyChanged(Object^ sender, PropertyChangedEventArgs^ e)
+{
+ if (e->PropertyName == CalculatorViewModelProperties::OpenParenthesisCount && closeParenthesisButton->FocusState != Windows::UI::Xaml::FocusState::Unfocused)
+ {
+ Model->SetOpenParenthesisCountNarratorAnnouncement();
+ }
+}
diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h
index 7aae73f4..7fa64d31 100644
--- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h
+++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h
@@ -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,11 @@ 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 OnPropertyChanged(Platform::Object^ sender, Windows::UI::Xaml::Data::PropertyChangedEventArgs ^ e);
bool m_isErrorVisualState;
+ Windows::Foundation::EventRegistrationToken m_propertyChangedToken;
};
}
diff --git a/src/Calculator/Views/CalculatorScientificOperators.xaml b/src/Calculator/Views/CalculatorScientificOperators.xaml
index c68b3cfb..3db97aa9 100644
--- a/src/Calculator/Views/CalculatorScientificOperators.xaml
+++ b/src/Calculator/Views/CalculatorScientificOperators.xaml
@@ -11,6 +11,8 @@
x:Name="ControlRoot"
d:DesignHeight="400"
d:DesignWidth="315"
+ Loaded="OnLoaded"
+ Unloaded="OnUnloaded"
mc:Ignorable="d">
@@ -727,6 +729,7 @@
Style="{StaticResource ParenthesisCalcButtonStyle}"
FontSize="19"
AutomationProperties.AutomationId="openParenthesisButton"
+ AutomationProperties.Name="{Binding LeftParenthesisAutomationName}"
ButtonId="OpenParenthesis"
Content="("
Tag="{x:Bind Model.OpenParenthesisCount, Mode=OneWay}"/>
diff --git a/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp b/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp
index 47998496..470e8512 100644
--- a/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp
+++ b/src/Calculator/Views/CalculatorScientificOperators.xaml.cpp
@@ -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::OnPropertyChanged);
+}
+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::OnPropertyChanged(Object^ sender, PropertyChangedEventArgs^ e)
+{
+ if (e->PropertyName == CalculatorViewModelProperties::OpenParenthesisCount && closeParenthesisButton->FocusState != Windows::UI::Xaml::FocusState::Unfocused)
+ {
+ Model->SetOpenParenthesisCountNarratorAnnouncement();
+ }
+}
diff --git a/src/Calculator/Views/CalculatorScientificOperators.xaml.h b/src/Calculator/Views/CalculatorScientificOperators.xaml.h
index ae35e492..a93e204e 100644
--- a/src/Calculator/Views/CalculatorScientificOperators.xaml.h
+++ b/src/Calculator/Views/CalculatorScientificOperators.xaml.h
@@ -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 OnPropertyChanged(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;
};
}
diff --git a/src/CalculatorUnitTests/CalculatorManagerTest.cpp b/src/CalculatorUnitTests/CalculatorManagerTest.cpp
index f1df0f28..1d42a285 100644
--- a/src/CalculatorUnitTests/CalculatorManagerTest.cpp
+++ b/src/CalculatorUnitTests/CalculatorManagerTest.cpp
@@ -62,7 +62,7 @@ namespace CalculatorManagerTest
m_parenDisplay = parenthesisCount;
}
- void OnNoParenAdded() override
+ void OnNoRightParenAdded() override
{
// This method is used to create a narrator announcement when a close parenthesis cannot be added because there are no open parentheses
}