Change the initialization time of Radio button's isChecked (#1312)
* Change the initialization time of Radio button's isChecked * Rollback checkDefaultBitShift and Use Enum instead of String * Fix Check Default - In previous versions, there was an issue where button availability was reset when opening BitShift Flyout not when the mode is changed * Reset Calculator Type in Calculator ViewModel when mode change to not Calculator mode * Revert "Reset Calculator Type in Calculator ViewModel when mode change to not Calculator mode" This reverts commit a0d2f84513bc2d36fea3d75445782e1c67bc2e8d. * Check deferred load button
This commit is contained in:
parent
8c53444a04
commit
9206520121
@ -346,13 +346,13 @@
|
|||||||
<Flyout x:Name="BitShiftFlyout"
|
<Flyout x:Name="BitShiftFlyout"
|
||||||
Windows10version1809:AreOpenCloseAnimationsEnabled="False"
|
Windows10version1809:AreOpenCloseAnimationsEnabled="False"
|
||||||
FlyoutPresenterStyle="{ThemeResource OperatorPanelFlyoutStyle}"
|
FlyoutPresenterStyle="{ThemeResource OperatorPanelFlyoutStyle}"
|
||||||
Placement="Bottom">
|
Placement="Bottom"
|
||||||
|
Opened="BitShiftFlyout_Opened">
|
||||||
<StackPanel MaxWidth="192" Padding="12">
|
<StackPanel MaxWidth="192" Padding="12">
|
||||||
<RadioButton x:Name="ArithmeticShiftButton"
|
<RadioButton x:Name="ArithmeticShiftButton"
|
||||||
x:Uid="arithmeticShiftButton"
|
x:Uid="arithmeticShiftButton"
|
||||||
AutomationProperties.AutomationId="arithmeticShiftButton"
|
AutomationProperties.AutomationId="arithmeticShiftButton"
|
||||||
Checked="BitshiftFlyout_Checked"
|
Checked="BitshiftFlyout_Checked"/>
|
||||||
IsChecked="True"/>
|
|
||||||
<RadioButton x:Name="LogicalShiftButton"
|
<RadioButton x:Name="LogicalShiftButton"
|
||||||
x:Uid="logicalShiftButton"
|
x:Uid="logicalShiftButton"
|
||||||
AutomationProperties.AutomationId="logicalShiftButton"
|
AutomationProperties.AutomationId="logicalShiftButton"
|
||||||
|
@ -47,10 +47,31 @@ void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Obj
|
|||||||
|
|
||||||
void CalculatorProgrammerRadixOperators::checkDefaultBitShift()
|
void CalculatorProgrammerRadixOperators::checkDefaultBitShift()
|
||||||
{
|
{
|
||||||
this->ArithmeticShiftButton->IsChecked = true;
|
LoadDeferredLoadButtons();
|
||||||
|
|
||||||
|
if (IsButtonLoaded())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
CollapseBitshiftButtons();
|
||||||
|
|
||||||
|
m_selectedShiftButtonMode = BitShiftMode::Arithmetic;
|
||||||
|
LshButton->Visibility = ::Visibility::Visible;
|
||||||
|
RshButton->Visibility = ::Visibility::Visible;
|
||||||
|
LshButton->IsEnabled = true;
|
||||||
|
RshButton->IsEnabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
bool CalculatorApp::CalculatorProgrammerRadixOperators::IsButtonLoaded()
|
||||||
|
{
|
||||||
|
// Since arithmeticShiftButton defaults to IsChecked = true, this event an fire before we can load the deferred loaded controls. If that is the case, just
|
||||||
|
// return and do nothing.
|
||||||
|
return RolButton == nullptr || RorButton == nullptr || RolCarryButton == nullptr || RorCarryButton == nullptr || LshLogicalButton == nullptr
|
||||||
|
|| RshLogicalButton == nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CalculatorApp::CalculatorProgrammerRadixOperators::LoadDeferredLoadButtons()
|
||||||
{
|
{
|
||||||
// Load deferred load buttons
|
// Load deferred load buttons
|
||||||
if (RolButton == nullptr)
|
if (RolButton == nullptr)
|
||||||
@ -62,11 +83,14 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
FindName("LshLogicalButton");
|
FindName("LshLogicalButton");
|
||||||
FindName("RshLogicalButton");
|
FindName("RshLogicalButton");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Since arithmeticShiftButton defaults to IsChecked = true, this event an fire before we can load the deferred loaded controls. If that is the case, just
|
void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
||||||
// return and do nothing.
|
{
|
||||||
if (RolButton == nullptr || RorButton == nullptr || RolCarryButton == nullptr || RorCarryButton == nullptr || LshLogicalButton == nullptr
|
// Load deferred load buttons
|
||||||
|| RshLogicalButton == nullptr)
|
LoadDeferredLoadButtons();
|
||||||
|
|
||||||
|
if (IsButtonLoaded())
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -75,6 +99,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
|
|
||||||
auto radioButton = static_cast<RadioButton ^>(sender);
|
auto radioButton = static_cast<RadioButton ^>(sender);
|
||||||
Platform::String ^ announcementString = L"";
|
Platform::String ^ announcementString = L"";
|
||||||
|
BitShiftMode selectedButtonMode = m_selectedShiftButtonMode;
|
||||||
|
|
||||||
if (radioButton == ArithmeticShiftButton)
|
if (radioButton == ArithmeticShiftButton)
|
||||||
{
|
{
|
||||||
@ -83,6 +108,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
LshButton->IsEnabled = true;
|
LshButton->IsEnabled = true;
|
||||||
RshButton->IsEnabled = true;
|
RshButton->IsEnabled = true;
|
||||||
announcementString = m_arithmeticShiftButtonContent;
|
announcementString = m_arithmeticShiftButtonContent;
|
||||||
|
selectedButtonMode = BitShiftMode::Arithmetic;
|
||||||
}
|
}
|
||||||
else if (radioButton == LogicalShiftButton)
|
else if (radioButton == LogicalShiftButton)
|
||||||
{
|
{
|
||||||
@ -91,6 +117,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
LshLogicalButton->IsEnabled = true;
|
LshLogicalButton->IsEnabled = true;
|
||||||
RshLogicalButton->IsEnabled = true;
|
RshLogicalButton->IsEnabled = true;
|
||||||
announcementString = m_logicalShiftButtonContent;
|
announcementString = m_logicalShiftButtonContent;
|
||||||
|
selectedButtonMode = BitShiftMode::LogicalShift;
|
||||||
}
|
}
|
||||||
else if (radioButton == RotateCircularButton)
|
else if (radioButton == RotateCircularButton)
|
||||||
{
|
{
|
||||||
@ -99,6 +126,7 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
RolButton->IsEnabled = true;
|
RolButton->IsEnabled = true;
|
||||||
RorButton->IsEnabled = true;
|
RorButton->IsEnabled = true;
|
||||||
announcementString = m_rotateCircularButtonContent;
|
announcementString = m_rotateCircularButtonContent;
|
||||||
|
selectedButtonMode = BitShiftMode::RotateCircular;
|
||||||
}
|
}
|
||||||
else if (radioButton == RotateCarryShiftButton)
|
else if (radioButton == RotateCarryShiftButton)
|
||||||
{
|
{
|
||||||
@ -107,9 +135,15 @@ void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object
|
|||||||
RolCarryButton->IsEnabled = true;
|
RolCarryButton->IsEnabled = true;
|
||||||
RorCarryButton->IsEnabled = true;
|
RorCarryButton->IsEnabled = true;
|
||||||
announcementString = m_rotateCarryShiftButtonContent;
|
announcementString = m_rotateCarryShiftButtonContent;
|
||||||
|
selectedButtonMode = BitShiftMode::RotateCarry;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (selectedButtonMode != m_selectedShiftButtonMode)
|
||||||
|
{
|
||||||
this->BitShiftFlyout->Hide();
|
this->BitShiftFlyout->Hide();
|
||||||
|
m_selectedShiftButtonMode = selectedButtonMode;
|
||||||
|
}
|
||||||
|
|
||||||
Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString);
|
Model->SetBitshiftRadioButtonCheckedAnnouncement(announcementString);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -176,3 +210,23 @@ void CalculatorProgrammerRadixOperators::ClearButton_LostFocus(Object ^ sender,
|
|||||||
ClearEntryButton->Focus(::FocusState::Programmatic);
|
ClearEntryButton->Focus(::FocusState::Programmatic);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CalculatorApp::CalculatorProgrammerRadixOperators::BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e)
|
||||||
|
{
|
||||||
|
if (m_selectedShiftButtonMode == BitShiftMode::Arithmetic)
|
||||||
|
{
|
||||||
|
ArithmeticShiftButton->IsChecked = true;
|
||||||
|
}
|
||||||
|
else if (m_selectedShiftButtonMode == BitShiftMode::LogicalShift)
|
||||||
|
{
|
||||||
|
LogicalShiftButton->IsChecked = true;
|
||||||
|
}
|
||||||
|
else if (m_selectedShiftButtonMode == BitShiftMode::RotateCircular)
|
||||||
|
{
|
||||||
|
RotateCircularButton->IsChecked = true;
|
||||||
|
}
|
||||||
|
else if (m_selectedShiftButtonMode == BitShiftMode::RotateCarry)
|
||||||
|
{
|
||||||
|
RotateCarryShiftButton->IsChecked = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -29,19 +29,30 @@ namespace CalculatorApp
|
|||||||
Platform::String ^ ParenthesisCountToString(unsigned int count);
|
Platform::String ^ ParenthesisCountToString(unsigned int count);
|
||||||
|
|
||||||
DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators);
|
DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators);
|
||||||
|
|
||||||
void checkDefaultBitShift();
|
void checkDefaultBitShift();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
enum class BitShiftMode
|
||||||
|
{
|
||||||
|
Arithmetic,
|
||||||
|
LogicalShift,
|
||||||
|
RotateCircular,
|
||||||
|
RotateCarry
|
||||||
|
};
|
||||||
|
|
||||||
void BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
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 FlyoutButton_Clicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||||
void CollapseBitshiftButtons();
|
void CollapseBitshiftButtons();
|
||||||
void LoadResourceStrings();
|
void LoadResourceStrings();
|
||||||
|
void LoadDeferredLoadButtons();
|
||||||
|
bool IsButtonLoaded();
|
||||||
|
|
||||||
bool m_isErrorVisualState;
|
bool m_isErrorVisualState;
|
||||||
void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||||
void ClearEntryButton_LostFocus(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);
|
void ClearButton_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||||
|
void BitShiftFlyout_Opened(Platform::Object ^ sender, Platform::Object ^ e);
|
||||||
|
BitShiftMode m_selectedShiftButtonMode;
|
||||||
Platform::String ^ m_arithmeticShiftButtonContent;
|
Platform::String ^ m_arithmeticShiftButtonContent;
|
||||||
Platform::String ^ m_logicalShiftButtonContent;
|
Platform::String ^ m_logicalShiftButtonContent;
|
||||||
Platform::String ^ m_rotateCircularButtonContent;
|
Platform::String ^ m_rotateCircularButtonContent;
|
||||||
|
@ -72,10 +72,7 @@ void OperatorsPanel::EnsureProgrammerRadixOps()
|
|||||||
this->FindName(L"ProgrammerRadixOperators");
|
this->FindName(L"ProgrammerRadixOperators");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ProgrammerRadixOperators)
|
|
||||||
{
|
|
||||||
ProgrammerRadixOperators->checkDefaultBitShift();
|
ProgrammerRadixOperators->checkDefaultBitShift();
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void OperatorsPanel::EnsureProgrammerBitFlipPanel()
|
void OperatorsPanel::EnsureProgrammerBitFlipPanel()
|
||||||
|
Loading…
Reference in New Issue
Block a user