From 264babc608050a12c3108b5da112fdb154b307f6 Mon Sep 17 00:00:00 2001 From: Vignesh M <32194608+vishegn@users.noreply.github.com> Date: Tue, 21 Jul 2020 03:35:22 +0530 Subject: [PATCH] Resolution for Bit Shift radio button announcements (#1317) --- .../Automation/NarratorAnnouncement.cpp | 19 +++++++---- .../Common/Automation/NarratorAnnouncement.h | 2 ++ .../StandardCalculatorViewModel.cpp | 34 ++++++++++--------- .../StandardCalculatorViewModel.h | 1 + src/Calculator/Resources/en-US/Resources.resw | 16 +++++++++ ...alculatorProgrammerRadixOperators.xaml.cpp | 17 ++++++++++ .../CalculatorProgrammerRadixOperators.xaml.h | 5 +++ 7 files changed, 72 insertions(+), 22 deletions(-) diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp index a3f09767..5365937d 100644 --- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp +++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.cpp @@ -29,6 +29,7 @@ namespace CalculatorApp::Common::Automation StringReference FunctionRemoved(L"FunctionRemoved"); StringReference GraphViewBestFitChanged(L"GraphViewBestFitChanged"); StringReference AlwaysOnTop(L"AlwaysOnTop"); + StringReference BitShiftRadioButtonContent(L"BitShiftRadioButtonContent"); } } @@ -108,7 +109,10 @@ NarratorAnnouncement ^ CalculatorAnnouncement::GetHistoryClearedAnnouncement(Str NarratorAnnouncement ^ CalculatorAnnouncement::GetHistorySlotClearedAnnouncement(String ^ announcement) { return ref new NarratorAnnouncement( - announcement, CalculatorActivityIds::HistorySlotCleared, AutomationNotificationKind::ItemRemoved, AutomationNotificationProcessing::ImportantMostRecent); + announcement, + CalculatorActivityIds::HistorySlotCleared, + AutomationNotificationKind::ItemRemoved, + AutomationNotificationProcessing::ImportantMostRecent); } NarratorAnnouncement ^ CalculatorAnnouncement::GetCategoryNameChangedAnnouncement(String ^ announcement) @@ -174,10 +178,7 @@ NarratorAnnouncement ^ CalculatorAnnouncement::GetGraphViewChangedAnnouncement(S NarratorAnnouncement ^ CalculatorAnnouncement::GetFunctionRemovedAnnouncement(String ^ announcement) { return ref new NarratorAnnouncement( - announcement, - CalculatorActivityIds::FunctionRemoved, - AutomationNotificationKind::ItemRemoved, - AutomationNotificationProcessing::MostRecent); + announcement, CalculatorActivityIds::FunctionRemoved, AutomationNotificationKind::ItemRemoved, AutomationNotificationProcessing::MostRecent); } NarratorAnnouncement ^ CalculatorAnnouncement::GetGraphViewBestFitChangedAnnouncement(Platform::String ^ announcement) @@ -190,10 +191,16 @@ NarratorAnnouncement ^ CalculatorAnnouncement::GetGraphViewBestFitChangedAnnounc } NarratorAnnouncement ^ CalculatorAnnouncement::GetAlwaysOnTopChangedAnnouncement(String ^ announcement) +{ + return ref new NarratorAnnouncement( + announcement, CalculatorActivityIds::AlwaysOnTop, AutomationNotificationKind::ActionCompleted, AutomationNotificationProcessing::ImportantMostRecent); +} + +NarratorAnnouncement ^ CalculatorAnnouncement::GetBitShiftRadioButtonCheckedAnnouncement(String ^ announcement) { return ref new NarratorAnnouncement( announcement, - CalculatorActivityIds::AlwaysOnTop, + CalculatorActivityIds::BitShiftRadioButtonContent, AutomationNotificationKind::ActionCompleted, AutomationNotificationProcessing::ImportantMostRecent); } diff --git a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h index 53a2f61f..a19de86f 100644 --- a/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h +++ b/src/CalcViewModel/Common/Automation/NarratorAnnouncement.h @@ -76,5 +76,7 @@ public static NarratorAnnouncement ^ GetAlwaysOnTopChangedAnnouncement(Platform::String ^ announcement); + static NarratorAnnouncement ^ GetBitShiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement); + }; } diff --git a/src/CalcViewModel/StandardCalculatorViewModel.cpp b/src/CalcViewModel/StandardCalculatorViewModel.cpp index b68e010a..a148fe31 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.cpp +++ b/src/CalcViewModel/StandardCalculatorViewModel.cpp @@ -252,8 +252,7 @@ void StandardCalculatorViewModel::SetNoParenAddedNarratorAnnouncement() { if (m_localizedNoRightParenthesisAddedFormat == nullptr) { - m_localizedNoRightParenthesisAddedFormat = - AppResourceProvider::GetInstance()->GetResourceString(CalculatorResourceKeys::NoParenthesisAdded); + m_localizedNoRightParenthesisAddedFormat = AppResourceProvider::GetInstance()->GetResourceString(CalculatorResourceKeys::NoParenthesisAdded); } Announcement = CalculatorAnnouncement::GetNoRightParenthesisAddedAnnouncement(m_localizedNoRightParenthesisAddedFormat); @@ -1004,8 +1003,8 @@ ButtonInfo StandardCalculatorViewModel::MapCharacterToButtonId(char16 ch) { if (LocalizationSettings::GetInstance().IsLocalizedDigit(ch)) { - result.buttonId = NumbersAndOperatorsEnum::Zero - + static_cast(ch - LocalizationSettings::GetInstance().GetDigitSymbolFromEnUsDigit('0')); + result.buttonId = + NumbersAndOperatorsEnum::Zero + static_cast(ch - LocalizationSettings::GetInstance().GetDigitSymbolFromEnUsDigit('0')); result.canSendNegate = true; } } @@ -1469,7 +1468,7 @@ void StandardCalculatorViewModel::Recalculate(bool fromHistory) bool StandardCalculatorViewModel::IsOpnd(Command command) { static constexpr Command opnd[] = { Command::Command0, Command::Command1, Command::Command2, Command::Command3, Command::Command4, Command::Command5, - Command::Command6, Command::Command7, Command::Command8, Command::Command9, Command::CommandPNT }; + Command::Command6, Command::Command7, Command::Command8, Command::Command9, Command::CommandPNT }; return find(begin(opnd), end(opnd), command) != end(opnd); } @@ -1477,9 +1476,9 @@ bool StandardCalculatorViewModel::IsOpnd(Command command) bool StandardCalculatorViewModel::IsUnaryOp(Command command) { static constexpr Command unaryOp[] = { Command::CommandSQRT, Command::CommandFAC, Command::CommandSQR, Command::CommandLOG, - Command::CommandPOW10, Command::CommandPOWE, Command::CommandLN, Command::CommandREC, - Command::CommandSIGN, Command::CommandSINH, Command::CommandASINH, Command::CommandCOSH, - Command::CommandACOSH, Command::CommandTANH, Command::CommandATANH, Command::CommandCUB }; + Command::CommandPOW10, Command::CommandPOWE, Command::CommandLN, Command::CommandREC, + Command::CommandSIGN, Command::CommandSINH, Command::CommandASINH, Command::CommandCOSH, + Command::CommandACOSH, Command::CommandTANH, Command::CommandATANH, Command::CommandCUB }; if (find(begin(unaryOp), end(unaryOp), command) != end(unaryOp)) { @@ -1496,9 +1495,8 @@ bool StandardCalculatorViewModel::IsUnaryOp(Command command) bool StandardCalculatorViewModel::IsTrigOp(Command command) { - static constexpr Command trigOp[] = { - Command::CommandSIN, Command::CommandCOS, Command::CommandTAN, Command::CommandASIN, Command::CommandACOS, Command::CommandATAN - }; + static constexpr Command trigOp[] = { Command::CommandSIN, Command::CommandCOS, Command::CommandTAN, + Command::CommandASIN, Command::CommandACOS, Command::CommandATAN }; return find(begin(trigOp), end(trigOp), command) != end(trigOp); } @@ -1506,7 +1504,7 @@ bool StandardCalculatorViewModel::IsTrigOp(Command command) bool StandardCalculatorViewModel::IsBinOp(Command command) { static constexpr Command binOp[] = { Command::CommandADD, Command::CommandSUB, Command::CommandMUL, Command::CommandDIV, - Command::CommandEXP, Command::CommandROOT, Command::CommandMOD, Command::CommandPWR }; + Command::CommandEXP, Command::CommandROOT, Command::CommandMOD, Command::CommandPWR }; return find(begin(binOp), end(binOp), command) != end(binOp); } @@ -1695,12 +1693,11 @@ NarratorAnnouncement ^ StandardCalculatorViewModel::GetDisplayUpdatedNarratorAnn { if (m_localizedButtonPressFeedbackAutomationFormat == nullptr) { - m_localizedButtonPressFeedbackAutomationFormat = AppResourceProvider::GetInstance()->GetResourceString(CalculatorResourceKeys::ButtonPressFeedbackFormat); + m_localizedButtonPressFeedbackAutomationFormat = + AppResourceProvider::GetInstance()->GetResourceString(CalculatorResourceKeys::ButtonPressFeedbackFormat); } announcement = LocalizationStringUtil::GetLocalizedString( - m_localizedButtonPressFeedbackAutomationFormat, - m_CalculationResultAutomationName, - m_feedbackForButtonPress); + m_localizedButtonPressFeedbackAutomationFormat, m_CalculationResultAutomationName, m_feedbackForButtonPress); } // Make sure we don't accidentally repeat an announcement. @@ -1767,3 +1764,8 @@ void StandardCalculatorViewModel::SendCommandToCalcManager(int commandId) { m_standardCalculatorManager.SendCommand(static_cast(commandId)); } + +void StandardCalculatorViewModel::SetBitshiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement) +{ + Announcement = CalculatorAnnouncement::GetBitShiftRadioButtonCheckedAnnouncement(announcement); +} diff --git a/src/CalcViewModel/StandardCalculatorViewModel.h b/src/CalcViewModel/StandardCalculatorViewModel.h index fd57c7d0..1dbcc926 100644 --- a/src/CalcViewModel/StandardCalculatorViewModel.h +++ b/src/CalcViewModel/StandardCalculatorViewModel.h @@ -267,6 +267,7 @@ namespace CalculatorApp void OnMaxDigitsReached(); void OnBinaryOperatorReceived(); void OnMemoryItemChanged(unsigned int indexOfMemory); + void SetBitshiftRadioButtonCheckedAnnouncement(Platform::String ^ announcement); Platform::String ^ GetLocalizedStringFormat(Platform::String ^ format, Platform::String ^ displayValue); void OnPropertyChanged(Platform::String ^ propertyname); diff --git a/src/Calculator/Resources/en-US/Resources.resw b/src/Calculator/Resources/en-US/Resources.resw index 345b1cf3..296f790c 100644 --- a/src/Calculator/Resources/en-US/Resources.resw +++ b/src/Calculator/Resources/en-US/Resources.resw @@ -4727,4 +4727,20 @@ Calculator back to full view Announcement to indicate calculator window is now back to full view. + + Arithmetic Shift selected + Label for a radio button that toggles arithmetic shift behavior for the shift operations. + + + Logical Shift selected + Label for a radio button that toggles logical shift behavior for the shift operations. + + + Rotate Circular Shift selected + Label for a radio button that toggles rotate circular behavior for the shift operations. + + + Rotate Through Carry Circular Shift selected + Label for a radio button that toggles rotate circular with carry behavior for the shift operations. + diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp index ccffba92..77cd083c 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp @@ -11,6 +11,7 @@ #include "Controls/CalculatorButton.h" #include "Converters/BooleanToVisibilityConverter.h" #include "Views/NumberPad.xaml.h" +#include using namespace std; using namespace CalculatorApp; @@ -27,6 +28,16 @@ CalculatorProgrammerRadixOperators::CalculatorProgrammerRadixOperators() : m_isErrorVisualState(false) { InitializeComponent(); + LoadResourceStrings(); +} + +void CalculatorProgrammerRadixOperators::LoadResourceStrings() +{ + auto resProvider = AppResourceProvider::GetInstance(); + m_arithmeticShiftButtonContent = resProvider->GetResourceString(L"arithmeticShiftButtonSelected"); + m_logicalShiftButtonContent = resProvider->GetResourceString(L"logicalShiftButtonSelected"); + m_rotateCircularButtonContent = resProvider->GetResourceString(L"rotateCircularButtonSelected"); + m_rotateCarryShiftButtonContent = resProvider->GetResourceString(L"rotateCarryShiftButtonSelected"); } void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/) @@ -63,6 +74,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object CollapseBitshiftButtons(); auto radioButton = static_cast(sender); + Platform::String ^ announcementString = L""; if (radioButton == ArithmeticShiftButton) { @@ -70,6 +82,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RshButton->Visibility = ::Visibility::Visible; LshButton->IsEnabled = true; RshButton->IsEnabled = true; + announcementString = m_arithmeticShiftButtonContent; } else if (radioButton == LogicalShiftButton) { @@ -77,6 +90,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RshLogicalButton->Visibility = ::Visibility::Visible; LshLogicalButton->IsEnabled = true; RshLogicalButton->IsEnabled = true; + announcementString = m_logicalShiftButtonContent; } else if (radioButton == RotateCircularButton) { @@ -84,6 +98,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RorButton->Visibility = ::Visibility::Visible; RolButton->IsEnabled = true; RorButton->IsEnabled = true; + announcementString = m_rotateCircularButtonContent; } else if (radioButton == RotateCarryShiftButton) { @@ -91,9 +106,11 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RorCarryButton->Visibility = ::Visibility::Visible; RolCarryButton->IsEnabled = true; RorCarryButton->IsEnabled = true; + announcementString = m_rotateCarryShiftButtonContent; } this->BitShiftFlyout->Hide(); + Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString); } void CalculatorProgrammerRadixOperators::CollapseBitshiftButtons() diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h index bd61def1..2412bfc5 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h @@ -36,10 +36,15 @@ namespace CalculatorApp void BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void FlyoutButton_Clicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e); void CollapseBitshiftButtons(); + void LoadResourceStrings(); bool m_isErrorVisualState; void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearEntryButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); + Platform::String ^ m_arithmeticShiftButtonContent; + Platform::String ^ m_logicalShiftButtonContent; + Platform::String ^ m_rotateCircularButtonContent; + Platform::String ^ m_rotateCarryShiftButtonContent; }; }