diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp index 0afb82fc..afca1f9f 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.cpp @@ -38,7 +38,6 @@ void CalculatorProgrammerRadixOperators::LoadResourceStrings() m_logicalShiftButtonContent = resProvider->GetResourceString(L"logicalShiftButtonSelected"); m_rotateCircularButtonContent = resProvider->GetResourceString(L"rotateCircularButtonSelected"); m_rotateCarryShiftButtonContent = resProvider->GetResourceString(L"rotateCarryShiftButtonSelected"); - m_selectedShiftButtonContent = m_arithmeticShiftButtonContent; } void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/) @@ -46,6 +45,11 @@ void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Obj this->BitwiseFlyout->Hide(); } +void CalculatorProgrammerRadixOperators::checkDefaultBitShift() +{ + m_selectedShiftButtonMode = BitShiftMode::Arithmetic; +} + void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e) { // Load deferred load buttons @@ -71,6 +75,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object auto radioButton = static_cast(sender); Platform::String ^ announcementString = L""; + BitShiftMode selectedButtonMode = m_selectedShiftButtonMode; if (radioButton == ArithmeticShiftButton) { @@ -79,6 +84,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object LshButton->IsEnabled = true; RshButton->IsEnabled = true; announcementString = m_arithmeticShiftButtonContent; + selectedButtonMode = BitShiftMode::Arithmetic; } else if (radioButton == LogicalShiftButton) { @@ -87,6 +93,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object LshLogicalButton->IsEnabled = true; RshLogicalButton->IsEnabled = true; announcementString = m_logicalShiftButtonContent; + selectedButtonMode = BitShiftMode::LogicalShift; } else if (radioButton == RotateCircularButton) { @@ -95,6 +102,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RolButton->IsEnabled = true; RorButton->IsEnabled = true; announcementString = m_rotateCircularButtonContent; + selectedButtonMode = BitShiftMode::RotateCircular; } else if (radioButton == RotateCarryShiftButton) { @@ -103,12 +111,13 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object RolCarryButton->IsEnabled = true; RorCarryButton->IsEnabled = true; announcementString = m_rotateCarryShiftButtonContent; + selectedButtonMode = BitShiftMode::RotateCarry; } - if (announcementString != m_selectedShiftButtonContent) + if (selectedButtonMode != m_selectedShiftButtonMode) { this->BitShiftFlyout->Hide(); - m_selectedShiftButtonContent = announcementString; + m_selectedShiftButtonMode = selectedButtonMode; } Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString); @@ -180,19 +189,19 @@ void CalculatorProgrammerRadixOperators::ClearButton_LostFocus(Object ^ sender, void CalculatorApp::CalculatorProgrammerRadixOperators::BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e) { - if (m_selectedShiftButtonContent == m_arithmeticShiftButtonContent) + if (m_selectedShiftButtonMode == BitShiftMode::Arithmetic) { ArithmeticShiftButton->IsChecked = true; } - else if (m_selectedShiftButtonContent == m_logicalShiftButtonContent) + else if (m_selectedShiftButtonMode == BitShiftMode::LogicalShift) { LogicalShiftButton->IsChecked = true; } - else if (m_selectedShiftButtonContent == m_rotateCircularButtonContent) + else if (m_selectedShiftButtonMode == BitShiftMode::RotateCircular) { RotateCircularButton->IsChecked = true; } - else if (m_selectedShiftButtonContent == m_rotateCarryShiftButtonContent) + else if (m_selectedShiftButtonMode == BitShiftMode::RotateCarry) { RotateCarryShiftButton->IsChecked = true; } diff --git a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h index 176c7ee5..2981c2fa 100644 --- a/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h +++ b/src/Calculator/Views/CalculatorProgrammerRadixOperators.xaml.h @@ -29,8 +29,17 @@ namespace CalculatorApp Platform::String ^ ParenthesisCountToString(unsigned int count); DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators); + void checkDefaultBitShift(); private: + enum class BitShiftMode + { + Arithmetic, + LogicalShift, + RotateCircular, + RotateCarry + }; + 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(); @@ -41,7 +50,7 @@ namespace CalculatorApp void ClearEntryButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void ClearButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e); void BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e); - Platform::String ^ m_selectedShiftButtonContent; + BitShiftMode m_selectedShiftButtonMode; Platform::String ^ m_arithmeticShiftButtonContent; Platform::String ^ m_logicalShiftButtonContent; Platform::String ^ m_rotateCircularButtonContent; diff --git a/src/Calculator/Views/OperatorsPanel.xaml.cpp b/src/Calculator/Views/OperatorsPanel.xaml.cpp index d771ad0a..83c16e3d 100644 --- a/src/Calculator/Views/OperatorsPanel.xaml.cpp +++ b/src/Calculator/Views/OperatorsPanel.xaml.cpp @@ -71,6 +71,8 @@ void OperatorsPanel::EnsureProgrammerRadixOps() { this->FindName(L"ProgrammerRadixOperators"); } + + ProgrammerRadixOperators->checkDefaultBitShift(); } void OperatorsPanel::EnsureProgrammerBitFlipPanel()