merge with master
This commit is contained in:
@@ -53,22 +53,23 @@
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Style="{StaticResource ResultsScrollerSnapped}"
|
||||
AutomationProperties.AccessibilityView="Raw">
|
||||
<ItemsControl x:Name="TokenList"
|
||||
Padding="0"
|
||||
VerticalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Right"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False"
|
||||
ItemTemplateSelector="{StaticResource ExpressionItemTemplateSelector}"
|
||||
ItemsSource="{Binding ExpressionTokens}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsStackPanel HorizontalAlignment="Right"
|
||||
VerticalAlignment="Stretch"
|
||||
Orientation="Horizontal"/>
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
</ItemsControl>
|
||||
<Grid x:Name="ExpressionContent">
|
||||
<ItemsControl x:Name="TokenList"
|
||||
VerticalAlignment="Stretch"
|
||||
HorizontalContentAlignment="Right"
|
||||
VerticalContentAlignment="Stretch"
|
||||
IsTabStop="False"
|
||||
ItemTemplateSelector="{StaticResource ExpressionItemTemplateSelector}"
|
||||
ItemsSource="{Binding ExpressionTokens}">
|
||||
<ItemsControl.ItemsPanel>
|
||||
<ItemsPanelTemplate>
|
||||
<ItemsStackPanel HorizontalAlignment="Right"
|
||||
VerticalAlignment="Stretch"
|
||||
Orientation="Horizontal"/>
|
||||
</ItemsPanelTemplate>
|
||||
</ItemsControl.ItemsPanel>
|
||||
</ItemsControl>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
<Button x:Name="ScrollLeft"
|
||||
x:Uid="scrollLeft"
|
||||
@@ -94,11 +95,8 @@
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="AlwaysOnTopStyleS" TargetType="controls:OverflowTextBlock">
|
||||
<Style x:Key="AOTResultsStyle" TargetType="controls:OverflowTextBlock">
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="ColumnWidth" Value="14"/>
|
||||
<Setter Property="ColumnHeight" Value="14"/>
|
||||
<Setter Property="ScrollButtonFontSize" Value="12"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="controls:OverflowTextBlock">
|
||||
@@ -164,56 +162,49 @@
|
||||
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Style="{StaticResource ResultsScrollerSnapped}"
|
||||
AutomationProperties.AccessibilityView="Control">
|
||||
<TextBlock x:Name="EditableToken"
|
||||
Grid.Row="2"
|
||||
Margin="4,0,4,0"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Stretch"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
Text="{Binding DisplayValue, Mode=OneWay}"/>
|
||||
<Grid x:Name="ExpressionContent">
|
||||
<TextBlock x:Name="EditableToken"
|
||||
Grid.Row="2"
|
||||
Margin="4,0,4,0"
|
||||
Padding="0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Stretch"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
Text="{Binding DisplayValue, Mode=OneWay}"/>
|
||||
</Grid>
|
||||
</ScrollViewer>
|
||||
<Border Grid.Column="0" Background="{ThemeResource AppChromeAcrylicHostBackdropMediumLowBrush}">
|
||||
<Button x:Name="ScrollLeft"
|
||||
x:Uid="scrollLeft"
|
||||
MinWidth="{TemplateBinding ColumnWidth}"
|
||||
MinHeight="{TemplateBinding ColumnHeight}"
|
||||
Margin="0,3,0,0"
|
||||
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
|
||||
Background="Transparent">
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{TemplateBinding ScrollButtonFontSize}"
|
||||
Glyph=""/>
|
||||
</Button>
|
||||
</Border>
|
||||
<Border Grid.Column="2" Background="{ThemeResource AppChromeAcrylicHostBackdropMediumLowBrush}">
|
||||
<Button x:Name="ScrollRight"
|
||||
x:Uid="scrollRight"
|
||||
MinWidth="{TemplateBinding ColumnWidth}"
|
||||
MinHeight="{TemplateBinding ColumnHeight}"
|
||||
Margin="0,3,0,0"
|
||||
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
|
||||
Background="Transparent">
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{TemplateBinding ScrollButtonFontSize}"
|
||||
Glyph=""/>
|
||||
</Button>
|
||||
</Border>
|
||||
|
||||
<Button x:Name="ScrollLeft"
|
||||
x:Uid="scrollLeft"
|
||||
Grid.Column="0"
|
||||
Width="{TemplateBinding ScrollButtonsWidth}"
|
||||
Margin="0,3,0,0"
|
||||
VerticalAlignment="Stretch"
|
||||
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
|
||||
Background="Transparent">
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{TemplateBinding ScrollButtonsFontSize}"
|
||||
Glyph=""/>
|
||||
</Button>
|
||||
<Button x:Name="ScrollRight"
|
||||
x:Uid="scrollRight"
|
||||
Grid.Column="2"
|
||||
Width="{TemplateBinding ScrollButtonsWidth}"
|
||||
Margin="0,3,0,0"
|
||||
VerticalAlignment="Stretch"
|
||||
Style="{StaticResource AlwaysOnTopScrollButtonStyleS}"
|
||||
Background="Transparent">
|
||||
<FontIcon FontFamily="{ThemeResource SymbolThemeFontFamily}"
|
||||
FontSize="{TemplateBinding ScrollButtonsFontSize}"
|
||||
Glyph=""/>
|
||||
</Button>
|
||||
</Grid>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="AlwaysOnTopStyleM"
|
||||
BasedOn="{StaticResource AlwaysOnTopStyleS}"
|
||||
TargetType="controls:OverflowTextBlock">
|
||||
<Setter Property="ColumnWidth" Value="28"/>
|
||||
<Setter Property="ColumnHeight" Value="280"/>
|
||||
<Setter Property="ScrollButtonFontSize" Value="28"/>
|
||||
</Style>
|
||||
|
||||
<!-- Calculation Result Styles -->
|
||||
<Style x:Key="ResultsStyle"
|
||||
BasedOn="{StaticResource CalculationResultStyle}"
|
||||
@@ -412,12 +403,12 @@
|
||||
<Setter Target="MemMinus.IsEnabled" Value="False"/>
|
||||
<Setter Target="MemButton.IsEnabled" Value="False"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnErrorLayoutCompleted"/>
|
||||
<Storyboard Completed="OnErrorVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<!-- Always-on-Top specific -->
|
||||
<VisualStateGroup x:Name="AlwaysOnTopStates">
|
||||
<VisualState x:Name="AlwaysOnTop">
|
||||
<VisualStateGroup x:Name="DisplayModeVisualStates">
|
||||
<VisualState x:Name="DisplayModeAlwaysOnTop">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ClearMemoryButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="MemRecall.IsEnabled" Value="False"/>
|
||||
@@ -428,19 +419,21 @@
|
||||
<Setter Target="RowHamburger.Height" Value="0"/>
|
||||
<Setter Target="RowMemoryControls.Height" Value="0*"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnDisplayVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Normal">
|
||||
<VisualState x:Name="DisplayModeNormal">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="RowExpression.Height" Value="20*"/>
|
||||
<Setter Target="RowHamburger.Height" Value="{StaticResource HamburgerHeightGridLength}"/>
|
||||
<Setter Target="RowMemoryControls.Height" Value="32*"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnDisplayVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<!-- Mode specific -->
|
||||
<VisualStateGroup x:Name="Mode">
|
||||
<VisualStateGroup x:Name="ModeVisualStates">
|
||||
<VisualState x:Name="Standard">
|
||||
<Storyboard Completed="OnStoryboardCompleted"/>
|
||||
<Storyboard Completed="OnModeVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Scientific">
|
||||
<VisualState.Setters>
|
||||
@@ -448,7 +441,7 @@
|
||||
<Setter Target="RowDisplayControls.MinHeight" Value="32"/>
|
||||
<Setter Target="RowNumPad.Height" Value="276*"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnStoryboardCompleted"/>
|
||||
<Storyboard Completed="OnModeVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Programmer">
|
||||
<VisualState.Setters>
|
||||
@@ -461,13 +454,12 @@
|
||||
<Setter Target="M5.MaxWidth" Value="80"/>
|
||||
<Setter Target="MemButton.(Grid.Column)" Value="5"/>
|
||||
<Setter Target="MemoryButton.(Grid.Column)" Value="6"/>
|
||||
<Setter Target="HistoryButton.Visibility" Value="Collapsed"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnStoryboardCompleted"/>
|
||||
<Storyboard Completed="OnModeVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<!-- Layout specific -->
|
||||
<VisualStateGroup CurrentStateChanged="OnVisualStateChanged">
|
||||
<VisualStateGroup x:Name="LayoutVisualStates" CurrentStateChanged="OnVisualStateChanged">
|
||||
<VisualState x:Name="Portrait768x1366">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="1366" MinWindowWidth="768"/>
|
||||
@@ -477,7 +469,7 @@
|
||||
<Setter Target="DockPanel.Visibility" Value="Visible"/>
|
||||
<Setter Target="M6.Width" Value="0"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnLayoutStateChanged"/>
|
||||
<Storyboard Completed="OnLayoutVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="LargeWideView">
|
||||
<VisualState.StateTriggers>
|
||||
@@ -488,7 +480,7 @@
|
||||
<Setter Target="DockPanel.Visibility" Value="Visible"/>
|
||||
<Setter Target="M6.Width" Value="0"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnLayoutStateChanged"/>
|
||||
<Storyboard Completed="OnLayoutVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="DockVisible">
|
||||
<VisualState.StateTriggers>
|
||||
@@ -500,13 +492,13 @@
|
||||
<Setter Target="DockPanel.Visibility" Value="Visible"/>
|
||||
<Setter Target="M6.Width" Value="0"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnLayoutStateChanged"/>
|
||||
<Storyboard Completed="OnLayoutVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="MinSizeLayout">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="{StaticResource AppMinWindowHeight}" MinWindowWidth="{StaticResource AppMinWindowWidth}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<Storyboard Completed="OnLayoutStateChanged"/>
|
||||
<Storyboard Completed="OnLayoutVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
<VisualState x:Name="DefaultLayout">
|
||||
<VisualState.StateTriggers>
|
||||
@@ -514,7 +506,6 @@
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="RowMemoryControls.MinHeight" Value="0"/>
|
||||
|
||||
<Setter Target="ClearMemoryButton.Style" Value="{StaticResource CaptionButtonStyle}"/>
|
||||
<Setter Target="MemRecall.Style" Value="{StaticResource CaptionButtonStyle}"/>
|
||||
<Setter Target="MemPlus.Style" Value="{StaticResource CaptionButtonStyle}"/>
|
||||
@@ -522,7 +513,7 @@
|
||||
<Setter Target="MemButton.Style" Value="{StaticResource CaptionButtonStyle}"/>
|
||||
<Setter Target="MemoryButton.MinHeight" Value="0"/>
|
||||
</VisualState.Setters>
|
||||
<Storyboard Completed="OnLayoutStateChanged"/>
|
||||
<Storyboard Completed="OnLayoutVisualStateCompleted"/>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<!-- Results display specific -->
|
||||
@@ -534,8 +525,6 @@
|
||||
<VisualState.Setters>
|
||||
<Setter Target="RowResult.MinHeight" Value="54"/>
|
||||
<Setter Target="RowResult.Height" Value="72*"/>
|
||||
<Setter Target="AlwaysOnTopResults.FontSize" Value="40"/>
|
||||
<Setter Target="AlwaysOnTopResults.Style" Value="{StaticResource AlwaysOnTopStyleM}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="MinAlwaysOnTop">
|
||||
@@ -546,7 +535,8 @@
|
||||
<Setter Target="RowResult.MinHeight" Value="20"/>
|
||||
<Setter Target="RowResult.Height" Value="72*"/>
|
||||
<Setter Target="AlwaysOnTopResults.FontSize" Value="18"/>
|
||||
<Setter Target="AlwaysOnTopResults.Style" Value="{StaticResource AlwaysOnTopStyleS}"/>
|
||||
<Setter Target="AlwaysOnTopResults.ScrollButtonsWidth" Value="14"/>
|
||||
<Setter Target="AlwaysOnTopResults.ScrollButtonsFontSize" Value="12"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
@@ -637,10 +627,15 @@
|
||||
Grid.Row="2"
|
||||
Margin="6,0,6,0"
|
||||
HorizontalContentAlignment="Right"
|
||||
Style="{StaticResource AOTResultsStyle}"
|
||||
FontSize="40"
|
||||
AutomationProperties.AutomationId="CalculatorAlwaysOnTopResults"
|
||||
AutomationProperties.HeadingLevel="Level1"
|
||||
AutomationProperties.Name="{x:Bind Model.CalculationResultAutomationName, Mode=OneWay}"
|
||||
IsActive="True"
|
||||
ScrollButtonsFontSize="28"
|
||||
ScrollButtonsPlacement="Above"
|
||||
ScrollButtonsWidth="28"
|
||||
TokensUpdated="{x:Bind Model.AreAlwaysOnTopResultsUpdated, Mode=OneWay}"
|
||||
UseSystemFocusVisuals="True"
|
||||
Visibility="{x:Bind Model.IsAlwaysOnTop, Mode=OneWay}"/>
|
||||
@@ -648,47 +643,46 @@
|
||||
<!-- Programmer display panel controls -->
|
||||
<local:CalculatorProgrammerOperators x:Name="ProgrammerOperators"
|
||||
Grid.Row="3"
|
||||
x:Load="False"
|
||||
IsEnabled="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
TabIndex="6"
|
||||
Visibility="{x:Bind Model.IsProgrammer, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
<local:CalculatorProgrammerDisplayPanel x:Name="ProgrammerDisplayPanel"
|
||||
Grid.Row="4"
|
||||
x:Load="False"
|
||||
IsEnabled="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
TabIndex="7"
|
||||
Visibility="{x:Bind Model.IsProgrammer, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsProgrammer, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
<Grid x:Name="HistoryButtonParent" Visibility="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanToVisibilityNegationConverter}, Mode=OneWay}">
|
||||
<Button x:Name="HistoryButton"
|
||||
x:Uid="HistoryButton"
|
||||
Grid.Row="0"
|
||||
Style="{StaticResource HistoryButtonStyle}"
|
||||
AutomationProperties.AutomationId="HistoryButton"
|
||||
Command="{x:Bind HistoryButtonPressed, Mode=OneTime}"
|
||||
Content=""
|
||||
ExitDisplayModeOnAccessKeyInvoked="False"
|
||||
IsEnabled="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}"
|
||||
TabIndex="2">
|
||||
<FlyoutBase.AttachedFlyout>
|
||||
<Flyout x:Name="HistoryFlyout"
|
||||
AutomationProperties.AutomationId="HistoryFlyout"
|
||||
Closed="HistoryFlyout_Closed"
|
||||
FlyoutPresenterStyle="{StaticResource HistoryFlyoutStyle}"
|
||||
Opened="HistoryFlyout_Opened"
|
||||
Placement="Full"/>
|
||||
</FlyoutBase.AttachedFlyout>
|
||||
</Button>
|
||||
</Grid>
|
||||
<Button x:Name="HistoryButton"
|
||||
x:Uid="HistoryButton"
|
||||
Grid.Row="0"
|
||||
Style="{StaticResource HistoryButtonStyle}"
|
||||
AutomationProperties.AutomationId="HistoryButton"
|
||||
Command="{x:Bind HistoryButtonPressed, Mode=OneTime}"
|
||||
Content=""
|
||||
ExitDisplayModeOnAccessKeyInvoked="False"
|
||||
TabIndex="2"
|
||||
Visibility="{x:Bind local:Calculator.ShouldDisplayHistoryButton(Model.IsAlwaysOnTop, Model.IsProgrammer, DockPanel.Visibility), Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}">
|
||||
<FlyoutBase.AttachedFlyout>
|
||||
<Flyout x:Name="HistoryFlyout"
|
||||
AutomationProperties.AutomationId="HistoryFlyout"
|
||||
Closed="HistoryFlyout_Closed"
|
||||
FlyoutPresenterStyle="{StaticResource HistoryFlyoutStyle}"
|
||||
Opened="HistoryFlyout_Opened"
|
||||
Placement="Full"/>
|
||||
</FlyoutBase.AttachedFlyout>
|
||||
</Button>
|
||||
|
||||
<!-- Scientific angle buttons -->
|
||||
<local:CalculatorScientificAngleButtons x:Name="ScientificAngleButtons"
|
||||
Grid.Row="3"
|
||||
x:Load="False"
|
||||
IsEnabled="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
TabIndex="6"
|
||||
Visibility="{x:Bind Model.IsScientific, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
<!-- Memory panel controls -->
|
||||
<Grid x:Name="MemoryPanel"
|
||||
@@ -767,8 +761,8 @@
|
||||
Click="ToggleMemoryFlyout"
|
||||
Content="M0,9.46968e-006L1.96199,9.46968e-006L4.17099,5.59502C4.33899,6.02501 4.44899,6.34502 4.5,6.55602L4.52899,6.55602C4.67299,6.11501 4.791,5.78701 4.87999,5.57201L7.12999,9.46968e-006L9.023,9.46968e-006L9.023,8.402L7.64,8.402L7.64,2.96501C7.64,2.519 7.668,1.97401 7.722,1.33L7.69899,1.33C7.613,1.697 7.53699,1.96101 7.46999,2.12102L4.96199,8.402L4.002,8.402L1.48799,2.16801C1.418,1.98399 1.34299,1.705 1.265,1.33L1.24199,1.33C1.273,1.666 1.28899,2.21501 1.28899,2.976L1.28899,8.402L0,8.402zM10.5,0L15.5,0L12.99,2.5z"
|
||||
ExitDisplayModeOnAccessKeyInvoked="False"
|
||||
IsEnabled="{x:Bind Model.IsMemoryEmpty, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}"
|
||||
TabIndex="15">
|
||||
TabIndex="15"
|
||||
IsEnabled="{x:Bind Model.IsMemoryEmpty, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}">
|
||||
<FlyoutBase.AttachedFlyout>
|
||||
<Flyout x:Name="MemoryFlyout"
|
||||
x:Uid="MemoryFlyout"
|
||||
@@ -1093,10 +1087,10 @@
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
Opacity="0"
|
||||
IsEnabled="False"
|
||||
IsTabStop="False"
|
||||
Template="{StaticResource PreviousTemplate}"
|
||||
UseSystemFocusVisuals="False"/>
|
||||
UseSystemFocusVisuals="False"
|
||||
IsEnabled="False"/>
|
||||
<Button x:Name="NextButton"
|
||||
Grid.Column="1"
|
||||
Width="20"
|
||||
@@ -1106,10 +1100,10 @@
|
||||
VerticalAlignment="Top"
|
||||
Background="Transparent"
|
||||
Opacity="0"
|
||||
IsEnabled="False"
|
||||
IsTabStop="False"
|
||||
Template="{StaticResource NextTemplate}"
|
||||
UseSystemFocusVisuals="False"/>
|
||||
UseSystemFocusVisuals="False"
|
||||
IsEnabled="False"/>
|
||||
<ContentPresenter x:Name="RightHeaderPresenter"
|
||||
Grid.Column="2"
|
||||
HorizontalAlignment="Stretch"
|
||||
|
@@ -7,7 +7,6 @@
|
||||
#include "CalcViewModel/Common/TraceLogger.h"
|
||||
#include "CalcViewModel/Common/CopyPasteManager.h"
|
||||
#include "CalcViewModel/StandardCalculatorViewModel.h"
|
||||
#include "CalcViewModel/ViewState.h"
|
||||
#include "CalcViewModel/Common/LocalizationSettings.h"
|
||||
#include "Memory.xaml.h"
|
||||
#include "HistoryList.xaml.h"
|
||||
@@ -59,8 +58,8 @@ Calculator::Calculator()
|
||||
|
||||
m_displayFlyout = static_cast<MenuFlyout ^>(Resources->Lookup(L"DisplayContextMenu"));
|
||||
auto resLoader = AppResourceProvider::GetInstance();
|
||||
CopyMenuItem->Text = resLoader.GetResourceString(L"copyMenuItem");
|
||||
PasteMenuItem->Text = resLoader.GetResourceString(L"pasteMenuItem");
|
||||
CopyMenuItem->Text = resLoader->GetResourceString(L"copyMenuItem");
|
||||
PasteMenuItem->Text = resLoader->GetResourceString(L"pasteMenuItem");
|
||||
|
||||
this->SizeChanged += ref new SizeChangedEventHandler(this, &Calculator::Calculator_SizeChanged);
|
||||
}
|
||||
@@ -68,10 +67,10 @@ Calculator::Calculator()
|
||||
void Calculator::LoadResourceStrings()
|
||||
{
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
m_openMemoryFlyoutAutomationName = resProvider.GetResourceString(L"MemoryButton_Open");
|
||||
m_closeMemoryFlyoutAutomationName = resProvider.GetResourceString(L"MemoryButton_Close");
|
||||
m_openHistoryFlyoutAutomationName = resProvider.GetResourceString(L"HistoryButton_Open");
|
||||
m_closeHistoryFlyoutAutomationName = resProvider.GetResourceString(L"HistoryButton_Close");
|
||||
m_openMemoryFlyoutAutomationName = resProvider->GetResourceString(L"MemoryButton_Open");
|
||||
m_closeMemoryFlyoutAutomationName = resProvider->GetResourceString(L"MemoryButton_Close");
|
||||
m_openHistoryFlyoutAutomationName = resProvider->GetResourceString(L"HistoryButton_Open");
|
||||
m_closeHistoryFlyoutAutomationName = resProvider->GetResourceString(L"HistoryButton_Close");
|
||||
AutomationProperties::SetName(MemoryButton, m_openMemoryFlyoutAutomationName);
|
||||
AutomationProperties::SetName(HistoryButton, m_openHistoryFlyoutAutomationName);
|
||||
}
|
||||
@@ -123,9 +122,9 @@ void Calculator::OnLoaded(_In_ Object ^, _In_ RoutedEventArgs ^)
|
||||
Model->HideMemoryClicked += ref new HideMemoryClickedHandler(this, &Calculator::OnHideMemoryClicked);
|
||||
|
||||
InitializeHistoryView(Model->HistoryVM);
|
||||
String ^ historyPaneName = AppResourceProvider::GetInstance().GetResourceString(L"HistoryPane");
|
||||
String ^ historyPaneName = AppResourceProvider::GetInstance()->GetResourceString(L"HistoryPane");
|
||||
HistoryFlyout->FlyoutPresenterStyle->Setters->Append(ref new Setter(AutomationProperties::NameProperty, historyPaneName));
|
||||
String ^ memoryPaneName = AppResourceProvider::GetInstance().GetResourceString(L"MemoryPane");
|
||||
String ^ memoryPaneName = AppResourceProvider::GetInstance()->GetResourceString(L"MemoryPane");
|
||||
MemoryFlyout->FlyoutPresenterStyle->Setters->Append(ref new Setter(AutomationProperties::NameProperty, memoryPaneName));
|
||||
|
||||
if (Windows::Foundation::Metadata::ApiInformation::IsEventPresent(L"Windows.UI.Xaml.Controls.Primitives.FlyoutBase", L"Closing"))
|
||||
@@ -138,7 +137,7 @@ void Calculator::OnLoaded(_In_ Object ^, _In_ RoutedEventArgs ^)
|
||||
WeakReference weakThis(this);
|
||||
this->Dispatcher->RunAsync(
|
||||
CoreDispatcherPriority::Normal, ref new DispatchedHandler([weakThis]() {
|
||||
if (TraceLogger::GetInstance().IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
|
||||
if (TraceLogger::GetInstance()->IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
|
||||
{
|
||||
auto refThis = weakThis.Resolve<Calculator>();
|
||||
if (refThis != nullptr)
|
||||
@@ -149,24 +148,21 @@ void Calculator::OnLoaded(_In_ Object ^, _In_ RoutedEventArgs ^)
|
||||
}));
|
||||
}
|
||||
|
||||
std::wstring Calculator::GetCurrentLayoutState()
|
||||
Platform::String ^ Calculator::GetCurrentLayoutState()
|
||||
{
|
||||
std::wstring state;
|
||||
|
||||
if (IsProgrammer)
|
||||
{
|
||||
state = L"Programmer";
|
||||
return L"Programmer";
|
||||
}
|
||||
else if (IsScientific)
|
||||
{
|
||||
state = L"Scientific";
|
||||
return L"Scientific";
|
||||
}
|
||||
else
|
||||
{
|
||||
state = L"Standard";
|
||||
return L"Standard";
|
||||
}
|
||||
|
||||
return state;
|
||||
}
|
||||
|
||||
void Calculator::UpdateViewState()
|
||||
@@ -209,7 +205,7 @@ void Calculator::AnimateCalculator(bool resultAnimate)
|
||||
// We are forcing the animation here
|
||||
// It's because if last animation was in standard, then go to unit converter, then comes back to standard
|
||||
// The state for the calculator does not change and the animation would not get run.
|
||||
this->OnStoryboardCompleted(nullptr, nullptr);
|
||||
this->OnModeVisualStateCompleted(nullptr, nullptr);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -239,7 +235,7 @@ void Calculator::OnContextCanceled(UIElement ^ sender, RoutedEventArgs ^ e)
|
||||
m_displayFlyout->Hide();
|
||||
}
|
||||
|
||||
void Calculator::OnLayoutStateChanged(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
void Calculator::OnLayoutVisualStateCompleted(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
{
|
||||
UpdatePanelViewState();
|
||||
}
|
||||
@@ -286,29 +282,23 @@ void Calculator::OnIsAlwaysOnTopPropertyChanged(bool /*oldValue*/, bool newValue
|
||||
{
|
||||
if (newValue)
|
||||
{
|
||||
VisualStateManager::GoToState(this, L"AlwaysOnTop", false);
|
||||
VisualStateManager::GoToState(this, L"DisplayModeAlwaysOnTop", false);
|
||||
AlwaysOnTopResults->UpdateScrollButtons();
|
||||
}
|
||||
else
|
||||
{
|
||||
VisualStateManager::GoToState(this, L"Normal", false);
|
||||
if (Model->IsInError)
|
||||
{
|
||||
VisualStateManager::GoToState(this, L"ErrorLayout", false);
|
||||
}
|
||||
else
|
||||
VisualStateManager::GoToState(this, L"DisplayModeNormal", false);
|
||||
if (!Model->IsInError)
|
||||
{
|
||||
EnableMemoryControls(true);
|
||||
}
|
||||
Results->UpdateTextState();
|
||||
}
|
||||
|
||||
Model->IsMemoryEmpty = (Model->MemorizedNumbers->Size == 0) || IsAlwaysOnTop;
|
||||
|
||||
AlwaysOnTopResults->UpdateScrollButtons();
|
||||
Results->UpdateTextState();
|
||||
|
||||
UpdateViewState();
|
||||
UpdatePanelViewState();
|
||||
SetDefaultFocus();
|
||||
}
|
||||
|
||||
void Calculator::OnIsInErrorPropertyChanged()
|
||||
@@ -336,7 +326,7 @@ void Calculator::OnIsInErrorPropertyChanged()
|
||||
|
||||
// Once the storyboard that rearranges the buttons completed,
|
||||
// We do the animation based on the Mode or Orientation change.
|
||||
void Calculator::OnStoryboardCompleted(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
void Calculator::OnModeVisualStateCompleted(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
{
|
||||
m_isLastAnimatedInScientific = IsScientific;
|
||||
m_isLastAnimatedInProgrammer = IsProgrammer;
|
||||
@@ -378,7 +368,7 @@ void Calculator::EnsureProgrammer()
|
||||
}
|
||||
|
||||
OpsPanel->EnsureProgrammerRadixOps();
|
||||
ProgrammerOperators->SetRadixButton(Model->GetCurrentRadixType());
|
||||
ProgrammerOperators->SetRadixButton(Model->CurrentRadixType);
|
||||
}
|
||||
|
||||
void Calculator::OnCalcPropertyChanged(_In_ Object ^ sender, _In_ PropertyChangedEventArgs ^ e)
|
||||
@@ -402,13 +392,11 @@ void Calculator::UpdatePanelViewState()
|
||||
|
||||
void Calculator::UpdateHistoryState()
|
||||
{
|
||||
String ^ viewState = App::GetAppViewState();
|
||||
if (viewState == ViewState::DockedView)
|
||||
if (DockPanel->Visibility == ::Visibility::Visible)
|
||||
{
|
||||
// docked view
|
||||
CloseHistoryFlyout();
|
||||
SetChildAsHistory();
|
||||
HistoryButton->Visibility = ::Visibility::Collapsed;
|
||||
|
||||
if (!IsProgrammer && m_IsLastFlyoutHistory)
|
||||
{
|
||||
@@ -416,7 +404,8 @@ void Calculator::UpdateHistoryState()
|
||||
}
|
||||
}
|
||||
else
|
||||
{ // flyout view
|
||||
{
|
||||
// flyout view
|
||||
DockHistoryHolder->Child = nullptr;
|
||||
if (!IsProgrammer)
|
||||
{
|
||||
@@ -440,8 +429,7 @@ void Calculator::UpdateMemoryState()
|
||||
ClearMemoryButton->IsEnabled = false;
|
||||
}
|
||||
|
||||
String ^ viewState = App::GetAppViewState();
|
||||
if (viewState == ViewState::DockedView)
|
||||
if (DockPanel->Visibility == ::Visibility::Visible)
|
||||
{
|
||||
CloseMemoryFlyout();
|
||||
SetChildAsMemory();
|
||||
@@ -482,13 +470,7 @@ void Calculator::OnHideHistoryClicked()
|
||||
|
||||
void Calculator::OnHistoryItemClicked(_In_ HistoryItemViewModel ^ e)
|
||||
{
|
||||
unsigned int tokenSize;
|
||||
assert(e->GetTokens() != nullptr);
|
||||
e->GetTokens()->GetSize(&tokenSize);
|
||||
Model->SetHistoryExpressionDisplay(e->GetTokens(), e->GetCommands());
|
||||
Model->SetExpressionDisplay(e->GetTokens(), e->GetCommands());
|
||||
Model->SetPrimaryDisplay(e->Result->Data(), false);
|
||||
Model->IsFToEEnabled = false;
|
||||
Model->SelectHistoryItem(e);
|
||||
|
||||
CloseHistoryFlyout();
|
||||
this->Focus(::FocusState::Programmatic);
|
||||
@@ -554,38 +536,39 @@ void Calculator::SetDefaultFocus()
|
||||
|
||||
void Calculator::ToggleHistoryFlyout(Object ^ /*parameter*/)
|
||||
{
|
||||
String ^ viewState = App::GetAppViewState();
|
||||
// If app starts correctly in snap mode and shortcut is used for history then we need to load history if not yet initialized.
|
||||
if (viewState != ViewState::DockedView)
|
||||
if (Model->IsProgrammer || DockPanel->Visibility == ::Visibility::Visible)
|
||||
{
|
||||
if (m_fIsHistoryFlyoutOpen)
|
||||
{
|
||||
HistoryFlyout->Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
HistoryFlyout->Content = m_historyList;
|
||||
m_historyList->RowHeight = NumpadPanel->ActualHeight;
|
||||
FlyoutBase::ShowAttachedFlyout(HistoryButton);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_fIsHistoryFlyoutOpen)
|
||||
{
|
||||
HistoryFlyout->Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
HistoryFlyout->Content = m_historyList;
|
||||
m_historyList->RowHeight = NumpadPanel->ActualHeight;
|
||||
FlyoutBase::ShowAttachedFlyout(HistoryButton);
|
||||
}
|
||||
}
|
||||
|
||||
void Calculator::ToggleMemoryFlyout()
|
||||
{
|
||||
String ^ viewState = App::GetAppViewState();
|
||||
if (viewState != ViewState::DockedView)
|
||||
if (DockPanel->Visibility == ::Visibility::Visible)
|
||||
{
|
||||
if (m_fIsMemoryFlyoutOpen)
|
||||
{
|
||||
MemoryFlyout->Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
MemoryFlyout->Content = GetMemory();
|
||||
m_memory->RowHeight = NumpadPanel->ActualHeight;
|
||||
FlyoutBase::ShowAttachedFlyout(MemoryButton);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_fIsMemoryFlyoutOpen)
|
||||
{
|
||||
MemoryFlyout->Hide();
|
||||
}
|
||||
else
|
||||
{
|
||||
MemoryFlyout->Content = GetMemory();
|
||||
m_memory->RowHeight = NumpadPanel->ActualHeight;
|
||||
FlyoutBase::ShowAttachedFlyout(MemoryButton);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -624,7 +607,7 @@ Memory ^ Calculator::GetMemory()
|
||||
if (m_memory == nullptr)
|
||||
{
|
||||
m_memory = ref new Memory();
|
||||
VisualStateManager::GoToState(m_memory, ref new String(GetCurrentLayoutState().c_str()), true /*useTransitions*/);
|
||||
VisualStateManager::GoToState(m_memory, GetCurrentLayoutState(), true /*useTransitions*/);
|
||||
}
|
||||
|
||||
return m_memory;
|
||||
@@ -680,28 +663,6 @@ void Calculator::OnHistoryFlyOutTapped(_In_ Object ^ sender, _In_ TappedRoutedEv
|
||||
}
|
||||
}
|
||||
|
||||
bool Calculator::IsValidRegularExpression(std::wstring str)
|
||||
{
|
||||
bool result = false;
|
||||
std::wregex regexPatterns[3];
|
||||
regexPatterns[0] = L"[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}";
|
||||
regexPatterns[1] = L"[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}[e]{1}[+]{1}[0-9]{1,}";
|
||||
regexPatterns[2] = L"[-]{0,1}[0-9]{0,}[.]{0,1}[0-9]{0,}[e]{1}[-]{1}[0-9]{1,}";
|
||||
|
||||
const auto& localizer = LocalizationSettings::GetInstance();
|
||||
String ^ englishString = localizer.GetEnglishValueFromLocalizedDigits(str);
|
||||
|
||||
for (int i = 0; i < 3; ++i)
|
||||
{
|
||||
if (regex_match(englishString->Data(), regexPatterns[i]))
|
||||
{
|
||||
result = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void Calculator::DockPanelTapped(_In_ TappedRoutedEventArgs ^ e)
|
||||
{
|
||||
int index = DockPivot->SelectedIndex;
|
||||
@@ -719,7 +680,12 @@ void Calculator::UnregisterEventHandlers()
|
||||
ExpressionText->UnregisterEventHandlers();
|
||||
}
|
||||
|
||||
void Calculator::OnErrorLayoutCompleted(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
void Calculator::OnErrorVisualStateCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e)
|
||||
{
|
||||
SetDefaultFocus();
|
||||
}
|
||||
|
||||
void Calculator::OnDisplayVisualStateCompleted(_In_ Object ^ sender, _In_ Object ^ e)
|
||||
{
|
||||
SetDefaultFocus();
|
||||
}
|
||||
@@ -737,8 +703,7 @@ void Calculator::OnMemoryAccessKeyInvoked(_In_ UIElement ^ sender, _In_ AccessKe
|
||||
void CalculatorApp::Calculator::OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e)
|
||||
{
|
||||
auto mode = IsStandard ? ViewMode::Standard : IsScientific ? ViewMode::Scientific : ViewMode::Programmer;
|
||||
auto state = std::wstring(e->NewState->Name->Begin());
|
||||
TraceLogger::GetInstance().LogVisualStateChanged(mode, state, IsAlwaysOnTop);
|
||||
TraceLogger::GetInstance()->LogVisualStateChanged(mode, e->NewState->Name, IsAlwaysOnTop);
|
||||
}
|
||||
|
||||
void Calculator::Calculator_SizeChanged(Object ^ /*sender*/, SizeChangedEventArgs ^ /*e*/)
|
||||
@@ -748,3 +713,8 @@ void Calculator::Calculator_SizeChanged(Object ^ /*sender*/, SizeChangedEventArg
|
||||
AlwaysOnTopResults->UpdateScrollButtons();
|
||||
}
|
||||
}
|
||||
|
||||
::Visibility Calculator::ShouldDisplayHistoryButton(bool isAlwaysOnTop, bool isProgrammer, ::Visibility dockPanelVisibility)
|
||||
{
|
||||
return !isAlwaysOnTop && !isProgrammer && dockPanelVisibility == ::Visibility::Collapsed ? ::Visibility::Visible : ::Visibility::Collapsed;
|
||||
}
|
||||
|
@@ -11,6 +11,8 @@
|
||||
#include "Controls/CalculatorButton.h"
|
||||
#include "Controls/CalculationResult.h"
|
||||
#include "Controls/OverflowTextBlock.h"
|
||||
#include "Controls/OperatorPanelListView.h"
|
||||
#include "Controls/OperatorPanelButton.h"
|
||||
#include "Controls/EquationTextBox.h"
|
||||
#include "Controls/MathRichEditBox.h"
|
||||
#include "CalcViewModel/HistoryViewModel.h"
|
||||
@@ -21,7 +23,7 @@
|
||||
#include "Views/HistoryList.xaml.h"
|
||||
#include "Views/Memory.xaml.h"
|
||||
#include "Views/OperatorsPanel.xaml.h"
|
||||
#include "Views/GraphingCalculator/KeyGraphFeaturesPanel.xaml.h"
|
||||
#include "Views/StateTriggers/ControlSizeTrigger.h"
|
||||
|
||||
namespace CalculatorApp
|
||||
{
|
||||
@@ -71,6 +73,8 @@ public
|
||||
|
||||
void SetDefaultFocus();
|
||||
|
||||
// Methods used by native bindings
|
||||
static Windows::UI::Xaml::Visibility ShouldDisplayHistoryButton(bool isAlwaysOnTop, bool isProgrammer, Windows::UI::Xaml::Visibility dockPanelVisibility);
|
||||
private:
|
||||
void OnLoaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
|
||||
@@ -88,12 +92,14 @@ public
|
||||
void OnIsAlwaysOnTopPropertyChanged(bool oldValue, bool newValue);
|
||||
void OnIsInErrorPropertyChanged();
|
||||
void OnCalcPropertyChanged(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Data::PropertyChangedEventArgs ^ e);
|
||||
void OnStoryboardCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnLayoutStateChanged(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnLayoutVisualStateCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnModeVisualStateCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnErrorVisualStateCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnDisplayVisualStateCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void EnsureScientific();
|
||||
void EnsureProgrammer();
|
||||
void SetFontSizeResources();
|
||||
std::wstring GetCurrentLayoutState();
|
||||
Platform::String ^ GetCurrentLayoutState();
|
||||
void Calculator_SizeChanged(Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e);
|
||||
|
||||
private:
|
||||
@@ -139,11 +145,10 @@ public
|
||||
void EnableMemoryControls(bool enable);
|
||||
void OnMemoryFlyOutTapped(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e);
|
||||
void OnHistoryFlyOutTapped(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e);
|
||||
bool IsValidRegularExpression(std::wstring str);
|
||||
void DockPanelTapped(_In_ Windows::UI::Xaml::Input::TappedRoutedEventArgs ^ e);
|
||||
void OnErrorLayoutCompleted(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnHistoryAccessKeyInvoked(_In_ Windows::UI::Xaml::UIElement ^ sender, _In_ Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs ^ args);
|
||||
void OnMemoryAccessKeyInvoked(_In_ Windows::UI::Xaml::UIElement ^ sender, _In_ Windows::UI::Xaml::Input::AccessKeyInvokedEventArgs ^ args);
|
||||
void OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e);
|
||||
};
|
||||
|
||||
};
|
||||
}
|
||||
|
@@ -50,6 +50,7 @@ void CalculatorProgrammerBitFlipPanel::SubscribePropertyChanged()
|
||||
if (Model != nullptr)
|
||||
{
|
||||
m_propertyChangedToken = Model->PropertyChanged += ref new PropertyChangedEventHandler(this, &CalculatorProgrammerBitFlipPanel::OnPropertyChanged);
|
||||
m_currentValueBitLength = Model->ValueBitLength;
|
||||
UpdateCheckedStates(true);
|
||||
}
|
||||
}
|
||||
@@ -68,8 +69,10 @@ void CalculatorProgrammerBitFlipPanel::OnPropertyChanged(Object ^ sender, Proper
|
||||
if (e->PropertyName == StandardCalculatorViewModel::BinaryDigitsPropertyName)
|
||||
{
|
||||
UpdateCheckedStates(false);
|
||||
m_currentValueBitLength = Model->ValueBitLength;
|
||||
}
|
||||
else if (e->PropertyName == StandardCalculatorViewModel::IsBitFlipCheckedPropertyName
|
||||
else if (
|
||||
e->PropertyName == StandardCalculatorViewModel::IsBitFlipCheckedPropertyName
|
||||
|| e->PropertyName == StandardCalculatorViewModel::IsProgrammerPropertyName)
|
||||
{
|
||||
if (Model->IsBitFlipChecked && Model->IsProgrammer)
|
||||
@@ -190,14 +193,20 @@ void CalculatorProgrammerBitFlipPanel::UpdateCheckedStates(bool updateAutomation
|
||||
m_updatingCheckedStates = true;
|
||||
auto it = m_flipButtons.begin();
|
||||
int index = 0;
|
||||
bool mustUpdateTextOfMostSignificantDigits = m_currentValueBitLength != Model->ValueBitLength;
|
||||
int previousMSDPosition = GetIndexOfLastBit(m_currentValueBitLength);
|
||||
int newMSDPosition = GetIndexOfLastBit(Model->ValueBitLength);
|
||||
for (bool val : Model->BinaryDigits)
|
||||
{
|
||||
FlipButtons ^ flipButton = *it;
|
||||
if (updateAutomationPropertiesNames)
|
||||
{
|
||||
flipButton->SetValue(AutomationProperties::NameProperty, GenerateAutomationPropertiesName(index, flipButton->IsChecked->Value));
|
||||
}
|
||||
bool hasValueChanged = flipButton->IsChecked->Value != val;
|
||||
flipButton->IsChecked = val;
|
||||
if (updateAutomationPropertiesNames
|
||||
|| hasValueChanged
|
||||
|| (mustUpdateTextOfMostSignificantDigits && (index == previousMSDPosition || index == newMSDPosition)))
|
||||
{
|
||||
flipButton->SetValue(AutomationProperties::NameProperty, GenerateAutomationPropertiesName(index, val));
|
||||
}
|
||||
++it;
|
||||
++index;
|
||||
}
|
||||
@@ -215,29 +224,53 @@ void CalculatorProgrammerBitFlipPanel::UpdateAutomationPropertiesNames()
|
||||
}
|
||||
|
||||
bool CalculatorProgrammerBitFlipPanel::ShouldEnableBit(BitLength length, int index)
|
||||
{
|
||||
return index <= GetIndexOfLastBit(length);
|
||||
}
|
||||
|
||||
int CalculatorProgrammerBitFlipPanel::GetIndexOfLastBit(BitLength length) const
|
||||
{
|
||||
switch (length)
|
||||
{
|
||||
case BitLength::BitLengthQWord:
|
||||
return index <= 63;
|
||||
return 63;
|
||||
case BitLength::BitLengthDWord:
|
||||
return index <= 31;
|
||||
return 31;
|
||||
case BitLength::BitLengthWord:
|
||||
return index <= 15;
|
||||
return 15;
|
||||
case BitLength::BitLengthByte:
|
||||
return index <= 7;
|
||||
return 7;
|
||||
}
|
||||
return false;
|
||||
return -1;
|
||||
}
|
||||
|
||||
String ^ CalculatorProgrammerBitFlipPanel::GenerateAutomationPropertiesName(int position, bool value) const
|
||||
String ^ CalculatorProgrammerBitFlipPanel::GenerateAutomationPropertiesName(int position, bool value)
|
||||
{
|
||||
auto resourceLoader = AppResourceProvider::GetInstance();
|
||||
String ^ automationNameTemplate = resourceLoader->GetResourceString(L"BitFlipItemAutomationName");
|
||||
String ^ bitPosition;
|
||||
if (position == 0)
|
||||
{
|
||||
bitPosition = resourceLoader->GetResourceString(L"LeastSignificantBit");
|
||||
}
|
||||
else
|
||||
{
|
||||
int lastPosition = -1;
|
||||
if (Model != nullptr)
|
||||
{
|
||||
lastPosition = GetIndexOfLastBit(Model->ValueBitLength);
|
||||
}
|
||||
|
||||
String ^ indexName = resourceLoader.GetResourceString(ref new Platform::String(to_wstring(position).c_str()));
|
||||
String ^ automationNameTemplate = resourceLoader.GetResourceString(L"BitFlipItemAutomationName");
|
||||
String ^ bitPositionTemplate = resourceLoader.GetResourceString(L"BitPosition");
|
||||
|
||||
wstring bitPosition = LocalizationStringUtil::GetLocalizedString(bitPositionTemplate->Data(), indexName->Data());
|
||||
return ref new String(LocalizationStringUtil::GetLocalizedString(automationNameTemplate->Data(), bitPosition.c_str(), value ? L"1" : L"0").c_str());
|
||||
if (position == lastPosition)
|
||||
{
|
||||
bitPosition = resourceLoader->GetResourceString(L"MostSignificantBit");
|
||||
}
|
||||
else
|
||||
{
|
||||
String ^ indexName = resourceLoader->GetResourceString(ref new Platform::String(to_wstring(position).c_str()));
|
||||
String ^ bitPositionTemplate = resourceLoader->GetResourceString(L"BitPosition");
|
||||
bitPosition = LocalizationStringUtil::GetLocalizedString(bitPositionTemplate, indexName);
|
||||
}
|
||||
}
|
||||
return LocalizationStringUtil::GetLocalizedString(automationNameTemplate, bitPosition, value ? L"1" : L"0");
|
||||
}
|
||||
|
@@ -22,7 +22,7 @@ namespace CalculatorApp
|
||||
bool ShouldEnableBit(CalculatorApp::Common::BitLength length, int index);
|
||||
|
||||
property CalculatorApp::ViewModel::StandardCalculatorViewModel
|
||||
^ Model { CalculatorApp::ViewModel::StandardCalculatorViewModel ^ get(); }
|
||||
^ Model { CalculatorApp::ViewModel::StandardCalculatorViewModel ^ get(); }
|
||||
|
||||
private : void OnLoaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnUnloaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
@@ -37,12 +37,14 @@ namespace CalculatorApp
|
||||
|
||||
private:
|
||||
Windows::Foundation::EventRegistrationToken m_propertyChangedToken;
|
||||
Platform::String ^ GenerateAutomationPropertiesName(int position, bool value) const;
|
||||
Platform::String ^ GenerateAutomationPropertiesName(int position, bool value);
|
||||
void UpdateCheckedStates(bool updateAutomationPropertiesNames);
|
||||
void UpdateAutomationPropertiesNames();
|
||||
int GetIndexOfLastBit(CalculatorApp::Common::BitLength length) const;
|
||||
|
||||
static const unsigned int s_numBits = 64;
|
||||
std::array<CalculatorApp::Controls::FlipButtons ^, s_numBits> m_flipButtons;
|
||||
bool m_updatingCheckedStates;
|
||||
CalculatorApp::Common::BitLength m_currentValueBitLength;
|
||||
};
|
||||
}
|
||||
|
@@ -33,65 +33,65 @@ CalculatorProgrammerOperators::CalculatorProgrammerOperators()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
CopyMenuItem->Text = AppResourceProvider::GetInstance().GetResourceString(L"copyMenuItem");
|
||||
CopyMenuItem->Text = AppResourceProvider::GetInstance()->GetResourceString(L"copyMenuItem");
|
||||
}
|
||||
|
||||
void CalculatorProgrammerOperators::HexButtonChecked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
TraceLogger::GetInstance().UpdateButtonUsage(NumbersAndOperatorsEnum::HexButton, ViewMode::Programmer);
|
||||
TraceLogger::GetInstance()->UpdateButtonUsage(NumbersAndOperatorsEnum::HexButton, ViewMode::Programmer);
|
||||
if (Model)
|
||||
{
|
||||
Model->SwitchProgrammerModeBase(RADIX_TYPE::HEX_RADIX);
|
||||
Model->SwitchProgrammerModeBase(NumberBase::HexBase);
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorProgrammerOperators::DecButtonChecked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
TraceLogger::GetInstance().UpdateButtonUsage(NumbersAndOperatorsEnum::DecButton, ViewMode::Programmer);
|
||||
TraceLogger::GetInstance()->UpdateButtonUsage(NumbersAndOperatorsEnum::DecButton, ViewMode::Programmer);
|
||||
if (Model)
|
||||
{
|
||||
Model->SwitchProgrammerModeBase(RADIX_TYPE::DEC_RADIX);
|
||||
Model->SwitchProgrammerModeBase(NumberBase::DecBase);
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorProgrammerOperators::OctButtonChecked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
TraceLogger::GetInstance().UpdateButtonUsage(NumbersAndOperatorsEnum::OctButton, ViewMode::Programmer);
|
||||
TraceLogger::GetInstance()->UpdateButtonUsage(NumbersAndOperatorsEnum::OctButton, ViewMode::Programmer);
|
||||
if (Model)
|
||||
{
|
||||
Model->SwitchProgrammerModeBase(RADIX_TYPE::OCT_RADIX);
|
||||
Model->SwitchProgrammerModeBase(NumberBase::OctBase);
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorProgrammerOperators::BinButtonChecked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
TraceLogger::GetInstance().UpdateButtonUsage(NumbersAndOperatorsEnum::BinButton, ViewMode::Programmer);
|
||||
TraceLogger::GetInstance()->UpdateButtonUsage(NumbersAndOperatorsEnum::BinButton, ViewMode::Programmer);
|
||||
if (Model)
|
||||
{
|
||||
Model->SwitchProgrammerModeBase(RADIX_TYPE::BIN_RADIX);
|
||||
Model->SwitchProgrammerModeBase(NumberBase::BinBase);
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorProgrammerOperators::SetRadixButton(RADIX_TYPE radixType)
|
||||
void CalculatorProgrammerOperators::SetRadixButton(NumberBase numberBase)
|
||||
{
|
||||
switch (radixType)
|
||||
switch (numberBase)
|
||||
{
|
||||
case RADIX_TYPE::DEC_RADIX:
|
||||
case NumberBase::DecBase:
|
||||
{
|
||||
DecimalButton->IsChecked = true;
|
||||
break;
|
||||
}
|
||||
case RADIX_TYPE::HEX_RADIX:
|
||||
case NumberBase::HexBase:
|
||||
{
|
||||
HexButton->IsChecked = true;
|
||||
break;
|
||||
}
|
||||
case RADIX_TYPE::OCT_RADIX:
|
||||
case NumberBase::OctBase:
|
||||
{
|
||||
OctButton->IsChecked = true;
|
||||
break;
|
||||
}
|
||||
case RADIX_TYPE::BIN_RADIX:
|
||||
case NumberBase::BinBase:
|
||||
{
|
||||
BinaryButton->IsChecked = true;
|
||||
break;
|
||||
|
@@ -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
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "Views/CalculatorProgrammerOperators.g.h"
|
||||
#include "Controls/RadixButton.h"
|
||||
#include "CalcViewModel/StandardCalculatorViewModel.h"
|
||||
#include "CalcViewModel/Common/NumberBase.h"
|
||||
|
||||
namespace CalculatorApp
|
||||
{
|
||||
@@ -24,7 +25,7 @@ namespace CalculatorApp
|
||||
|
||||
DEPENDENCY_PROPERTY(_In_ Windows::UI::Xaml::Style ^, SymbolButtonStyle);
|
||||
|
||||
internal : void SetRadixButton(RADIX_TYPE radixType);
|
||||
internal : void SetRadixButton(CalculatorApp::Common::NumberBase radixType);
|
||||
|
||||
private:
|
||||
void DecButtonChecked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
|
@@ -1,20 +1,28 @@
|
||||
<UserControl x:Class="CalculatorApp.CalculatorProgrammerRadixOperators"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:Windows10version1803="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractNotPresent(Windows.Foundation.UniversalApiContract, 7)"
|
||||
xmlns:Windows10version1809="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract, 7)"
|
||||
xmlns:common="using:CalculatorApp.Common"
|
||||
xmlns:controls="using:CalculatorApp.Controls"
|
||||
xmlns:converters="using:CalculatorApp.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:CalculatorApp"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
|
||||
x:Name="ControlRoot"
|
||||
d:DesignHeight="395"
|
||||
d:DesignWidth="315"
|
||||
Loaded="OnLoaded"
|
||||
Unloaded="OnUnloaded"
|
||||
XYFocusKeyboardNavigation="Enabled"
|
||||
mc:Ignorable="d">
|
||||
<UserControl.Resources>
|
||||
<converters:BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter"/>
|
||||
<converters:BooleanToVisibilityNegationConverter x:Key="BooleanToVisibilityNegationConverter"/>
|
||||
</UserControl.Resources>
|
||||
|
||||
<Grid x:Name="ProgRadixOps">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition x:Name="OperatorPanelRow" Height="Auto"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
@@ -29,7 +37,6 @@
|
||||
<ColumnDefinition x:Name="C2" Width="1*"/>
|
||||
<ColumnDefinition x:Name="C3" Width="1*"/>
|
||||
<ColumnDefinition x:Name="C4" Width="1*"/>
|
||||
<ColumnDefinition x:Name="C5" Width="1*"/>
|
||||
<ColumnDefinition x:Name="GutterRight" Width="0"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
|
||||
@@ -47,7 +54,6 @@
|
||||
<Setter Target="NotButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="AndButton.IsEnabled" Value="False"/>
|
||||
|
||||
<Setter Target="ShiftButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="ModButton.IsEnabled" Value="False"/>
|
||||
|
||||
<Setter Target="DivideButton.IsEnabled" Value="False"/>
|
||||
@@ -58,180 +64,489 @@
|
||||
<Setter Target="OpenParenthesisButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="CloseParenthesisButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="NegateButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="BitShiftButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="BitwiseButton.IsEnabled" Value="False"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup>
|
||||
<VisualState x:Name="Portrait768x1366">
|
||||
<VisualState x:Name="Large">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="1366" MinWindowWidth="768"/>
|
||||
<triggers:ControlSizeTrigger MinWidth="1053"
|
||||
MinHeight="729"
|
||||
Source="{x:Bind ProgRadixOps}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="AButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="BButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="CButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="DButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="EButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
<Setter Target="FButton.Style" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
|
||||
<Setter Target="ModButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="OpenParenthesisButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="CloseParenthesisButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
|
||||
<Setter Target="AndButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="OrButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="XorButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="NandButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="NorButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RolButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RorButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RolCarryButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RorCarryButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="LshButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RshButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="LshLogicalButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="RshLogicalButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="NotButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
|
||||
<Setter Target="OperatorPanelRow.MinHeight" Value="{StaticResource OperatorPanelButtonRowSizeLarge}"/>
|
||||
|
||||
<Setter Target="BitwiseButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeLarge}"/>
|
||||
<Setter Target="BitwiseButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeLarge}"/>
|
||||
<Setter Target="BitwiseButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeLarge}"/>
|
||||
|
||||
<Setter Target="BitShiftButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeLarge}"/>
|
||||
<Setter Target="BitShiftButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeLarge}"/>
|
||||
<Setter Target="BitShiftButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeLarge}"/>
|
||||
|
||||
<Setter Target="BitwiseGrid.MinWidth" Value="387"/>
|
||||
<Setter Target="BitwiseGrid.MinHeight" Value="192"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Medium">
|
||||
<VisualState.StateTriggers>
|
||||
<triggers:ControlSizeTrigger MinWidth="630"
|
||||
MinHeight="437"
|
||||
Source="{x:Bind ProgRadixOps}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="AButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="BButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="CButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="DButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="EButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
<Setter Target="FButton.Style" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
|
||||
<Setter Target="ModButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="OpenParenthesisButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="CloseParenthesisButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="AndButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="OrButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XorButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NandButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NorButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RolButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RorButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RolCarryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RorCarryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="LshButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RshButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="LshLogicalButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="RshLogicalButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NotButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="OperatorPanelRow.MinHeight" Value="{StaticResource OperatorPanelButtonRowSizeMedium}"/>
|
||||
|
||||
<Setter Target="BitwiseButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeMedium}"/>
|
||||
<Setter Target="BitwiseButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeMedium}"/>
|
||||
<Setter Target="BitwiseButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeMedium}"/>
|
||||
|
||||
<Setter Target="BitShiftButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeMedium}"/>
|
||||
<Setter Target="BitShiftButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeMedium}"/>
|
||||
<Setter Target="BitShiftButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeMedium}"/>
|
||||
|
||||
<Setter Target="BitwiseGrid.MinWidth" Value="416"/>
|
||||
<Setter Target="BitwiseGrid.MinHeight" Value="144"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Small">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="{StaticResource AppMinWindowHeight}" MinWindowWidth="{StaticResource AppMinWindowWidth}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle18}"/>
|
||||
<Setter Target="AButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
<Setter Target="BButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
<Setter Target="CButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
<Setter Target="DButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
<Setter Target="EButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
<Setter Target="FButton.Style" Value="{StaticResource NumericButtonStyle14}"/>
|
||||
|
||||
<Setter Target="ModButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="OpenParenthesisButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="CloseParenthesisButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="AButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="BButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="CButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="DButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="EButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="FButton.FontSize" Value="{StaticResource TitleFontSize}"/>
|
||||
<Setter Target="AndButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="OrButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="XorButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NandButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NorButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RolButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RorButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RolCarryButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RorCarryButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="LshButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RshButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="LshLogicalButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="RshLogicalButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NotButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="FullLayout">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="768" MinWindowWidth="1024"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="MinSizeLayout">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="{StaticResource AppMinWindowHeight}" MinWindowWidth="{StaticResource AppMinWindowWidth}"/>
|
||||
</VisualState.StateTriggers>
|
||||
</VisualState>
|
||||
<VisualState x:Name="DefaultLayout">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="0" MinWindowWidth="0"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="OpenParenthesisButton.FontSize" Value="12"/>
|
||||
<Setter Target="OpenParenthesisButton.Padding" Value="0"/>
|
||||
<Setter Target="CloseParenthesisButton.FontSize" Value="12"/>
|
||||
<Setter Target="CloseParenthesisButton.Padding" Value="0"/>
|
||||
<Setter Target="OperatorPanelRow.MinHeight" Value="{StaticResource OperatorPanelButtonRowSizeSmall}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="AButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="BButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="CButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="DButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="EButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="FButton.Style" Value="{StaticResource NumericButtonStyle12}"/>
|
||||
<Setter Target="BitwiseButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeSmall}"/>
|
||||
<Setter Target="BitwiseButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeSmall}"/>
|
||||
<Setter Target="BitwiseButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeSmall}"/>
|
||||
|
||||
<Setter Target="ShiftButton.Style" Value="{StaticResource CaptionToggleButtonSmallStyle}"/>
|
||||
<Setter Target="BitShiftButton.ChevronFontSize" Value="{ThemeResource OperatorPanelChevronFontSizeSmall}"/>
|
||||
<Setter Target="BitShiftButton.GlyphFontSize" Value="{ThemeResource OperatorPanelGlyphFontSizeSmall}"/>
|
||||
<Setter Target="BitShiftButton.FontSize" Value="{ThemeResource OperatorPanelFontSizeSmall}"/>
|
||||
|
||||
<Setter Target="BitwiseGrid.MinWidth" Value="194"/>
|
||||
<Setter Target="BitwiseGrid.MinHeight" Value="96"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<controls:OperatorPanelListView x:Uid="ProgrammerOperatorPanel"
|
||||
Grid.ColumnSpan="6"
|
||||
Background="{ThemeResource AppOperatorPanelBackground}"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
|
||||
<controls:OperatorPanelButton x:Name="BitwiseButton"
|
||||
x:Uid="bitwiseButton"
|
||||
Style="{StaticResource OperatorPanelButtonStyle}"
|
||||
AutomationProperties.AutomationId="bitwiseButton"
|
||||
Glyph="">
|
||||
<controls:OperatorPanelButton.FlyoutMenu>
|
||||
<Flyout x:Name="BitwiseFlyout"
|
||||
Windows10version1803:Placement="Bottom"
|
||||
Windows10version1809:AreOpenCloseAnimationsEnabled="False"
|
||||
Windows10version1809:Placement="BottomEdgeAlignedLeft"
|
||||
FlyoutPresenterStyle="{ThemeResource OperatorPanelFlyoutStyle}">
|
||||
<Grid x:Name="BitwiseGrid"
|
||||
MinWidth="258"
|
||||
MinHeight="96"
|
||||
XYFocusKeyboardNavigation="Enabled">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="1*"/>
|
||||
<RowDefinition Height="1*"/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
<ColumnDefinition Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<!--
|
||||
Because of the way we handle keyboard shortcuts, the IsEnabled property must be bound to a button outside the flyout.
|
||||
This is because the content from within the Flyout do not inherit the IsEnabled property of the flyout parent,
|
||||
causing the shortcut keys to be used when the control would normally be disabled.
|
||||
-->
|
||||
<controls:CalculatorButton x:Name="AndButton"
|
||||
x:Uid="andButton"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="andButton"
|
||||
ButtonId="And"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="AND"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="OrButton"
|
||||
x:Uid="orButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="orButton"
|
||||
ButtonId="Or"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="OR"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="NotButton"
|
||||
x:Uid="notButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="notButton"
|
||||
ButtonId="Not"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="NOT"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="XorButton"
|
||||
x:Uid="xorButton"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="xorButton"
|
||||
ButtonId="Xor"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="XOR"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="NandButton"
|
||||
x:Uid="nandButton"
|
||||
Grid.Row="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="nandButton"
|
||||
ButtonId="Nand"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="NAND"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="NorButton"
|
||||
x:Uid="norButton"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="norButton"
|
||||
ButtonId="Nor"
|
||||
Click="FlyoutButton_Clicked"
|
||||
Command="{x:Bind Model.ButtonPressed}"
|
||||
Content="NOR"
|
||||
IsEnabled="{x:Bind BitwiseButton.IsEnabled, Mode=OneWay}"/>
|
||||
</Grid>
|
||||
</Flyout>
|
||||
</controls:OperatorPanelButton.FlyoutMenu>
|
||||
</controls:OperatorPanelButton>
|
||||
<controls:OperatorPanelButton x:Name="BitShiftButton"
|
||||
x:Uid="bitShiftButton"
|
||||
Style="{StaticResource OperatorPanelButtonStyle}"
|
||||
AutomationProperties.AutomationId="bitShiftButton"
|
||||
Glyph="">
|
||||
<controls:OperatorPanelButton.FlyoutMenu>
|
||||
<Flyout x:Name="BitShiftFlyout"
|
||||
Windows10version1809:AreOpenCloseAnimationsEnabled="False"
|
||||
FlyoutPresenterStyle="{ThemeResource OperatorPanelFlyoutStyle}"
|
||||
Placement="Bottom">
|
||||
<StackPanel MaxWidth="192" Padding="12">
|
||||
<RadioButton x:Name="ArithmeticShiftButton"
|
||||
x:Uid="arithmeticShiftButton"
|
||||
AutomationProperties.AutomationId="arithmeticShiftButton"
|
||||
Checked="BitshiftFlyout_Checked"
|
||||
IsChecked="True"/>
|
||||
<RadioButton x:Name="LogicalShiftButton"
|
||||
x:Uid="logicalShiftButton"
|
||||
AutomationProperties.AutomationId="logicalShiftButton"
|
||||
Checked="BitshiftFlyout_Checked"/>
|
||||
<RadioButton x:Name="RotateCircularButton"
|
||||
x:Uid="rotateCircularButton"
|
||||
AutomationProperties.AutomationId="rotateCircularButton"
|
||||
Checked="BitshiftFlyout_Checked"/>
|
||||
<RadioButton x:Name="RotateCarryShiftButton"
|
||||
x:Uid="rotateCarryShiftButton"
|
||||
AutomationProperties.AutomationId="rotateCarryShiftButton"
|
||||
Checked="BitshiftFlyout_Checked"/>
|
||||
</StackPanel>
|
||||
</Flyout>
|
||||
</controls:OperatorPanelButton.FlyoutMenu>
|
||||
</controls:OperatorPanelButton>
|
||||
</controls:OperatorPanelListView>
|
||||
|
||||
<Grid x:Uid="ProgrammerOperators"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="6"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="2"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="RolButton"
|
||||
x:Uid="rolButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="rolButton"
|
||||
ButtonId="Rol"
|
||||
Content="RoL"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
<controls:CalculatorButton x:Name="RorButton"
|
||||
x:Uid="rorButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="rorButton"
|
||||
ButtonId="Ror"
|
||||
Content="RoR"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="RolCarryButton"
|
||||
x:Uid="rolCarryButton"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="rolButton"
|
||||
ButtonId="RolC"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="RorCarryButton"
|
||||
x:Uid="rorCarryButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="rorCarryButton"
|
||||
ButtonId="RorC"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="LshButton"
|
||||
x:Uid="lshButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="lshButton"
|
||||
ButtonId="Lsh"
|
||||
Content="Lsh"/>
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="RshButton"
|
||||
x:Uid="rshButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="rshButton"
|
||||
ButtonId="Rsh"
|
||||
Content="Rsh"/>
|
||||
<controls:CalculatorButton x:Name="OrButton"
|
||||
x:Uid="orButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
Content=""/>
|
||||
|
||||
<controls:CalculatorButton x:Name="LshLogicalButton"
|
||||
x:Uid="LshLogicalButton"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="orButton"
|
||||
ButtonId="Or"
|
||||
Content="Or"/>
|
||||
<controls:CalculatorButton x:Name="XorButton"
|
||||
x:Uid="xorButton"
|
||||
Grid.Column="3"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="lshLogicalButton"
|
||||
ButtonId="Lsh"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
<controls:CalculatorButton x:Name="RshLogicalButton"
|
||||
x:Uid="rshLogicalButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="xorButton"
|
||||
ButtonId="Xor"
|
||||
Content="Xor"/>
|
||||
<controls:CalculatorButton x:Name="NotButton"
|
||||
x:Uid="notButton"
|
||||
Grid.Column="4"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="notButton"
|
||||
ButtonId="Not"
|
||||
Content="Not"/>
|
||||
<controls:CalculatorButton x:Name="AndButton"
|
||||
x:Uid="andButton"
|
||||
Grid.Column="5"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="andButton"
|
||||
ButtonId="And"
|
||||
Content="And"/>
|
||||
x:DeferLoadStrategy="Lazy"
|
||||
AutomationProperties.AutomationId="rshLogicalButton"
|
||||
ButtonId="RshL"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
</Grid>
|
||||
|
||||
<ToggleButton x:Name="ShiftButton"
|
||||
x:Uid="shiftButton"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="Stretch"
|
||||
VerticalAlignment="Stretch"
|
||||
Style="{StaticResource CaptionToggleButtonStyle}"
|
||||
FontFamily="{StaticResource CalculatorFontFamily}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="shiftButton"
|
||||
Checked="Shift_Clicked"
|
||||
Content=""
|
||||
Unchecked="Shift_Clicked"/>
|
||||
<Grid x:Uid="DisplayControls"
|
||||
Grid.Row="1"
|
||||
Grid.Column="4"
|
||||
Grid.ColumnSpan="2"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="ClearButton"
|
||||
x:Uid="clearButton"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="clearButton"
|
||||
ButtonId="Clear"
|
||||
Content="C"
|
||||
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="ClearEntryButton"
|
||||
x:Uid="clearEntryButton"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="clearEntryButton"
|
||||
ButtonId="ClearEntry"
|
||||
Content="CE"
|
||||
Visibility="{x:Bind Model.IsInputEmpty, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="BackSpaceButton"
|
||||
x:Uid="backSpaceButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="backSpaceButton"
|
||||
ButtonId="Backspace"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<controls:CalculatorButton x:Name="OpenParenthesisButton"
|
||||
x:Uid="openParenthesisButton"
|
||||
Grid.Row="2"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource ParenthesisCalcButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="openParenthesisButton"
|
||||
ButtonId="OpenParenthesis"
|
||||
Content="("
|
||||
GotFocus="OpenParenthesisButton_GotFocus"
|
||||
Tag="{x:Bind ParenthesisCountToString(Model.OpenParenthesisCount), Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="CloseParenthesisButton"
|
||||
x:Uid="closeParenthesisButton"
|
||||
Grid.Row="2"
|
||||
Grid.Column="3"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="closeParenthesisButton"
|
||||
ButtonId="CloseParenthesis"
|
||||
Content=")"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="ModButton"
|
||||
x:Uid="modButton"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.Row="2"
|
||||
Grid.Column="4"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="modButton"
|
||||
ButtonId="Mod"
|
||||
Content="Mod"/>
|
||||
Content="%"/>
|
||||
|
||||
<Grid x:Uid="StandardOperators"
|
||||
Grid.Row="1"
|
||||
Grid.Row="2"
|
||||
Grid.RowSpan="5"
|
||||
Grid.Column="6"
|
||||
Grid.Column="5"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition/>
|
||||
@@ -243,86 +558,52 @@
|
||||
<controls:CalculatorButton x:Name="DivideButton"
|
||||
x:Uid="divideButton"
|
||||
Grid.Row="0"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="divideButton"
|
||||
ButtonId="Divide"
|
||||
Content=""/>
|
||||
|
||||
<controls:CalculatorButton x:Name="MultiplyButton"
|
||||
x:Uid="multiplyButton"
|
||||
Grid.Row="1"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="multiplyButton"
|
||||
ButtonId="Multiply"
|
||||
Content=""/>
|
||||
|
||||
<controls:CalculatorButton x:Name="MinusButton"
|
||||
x:Uid="minusButton"
|
||||
Grid.Row="2"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="minusButton"
|
||||
ButtonId="Subtract"
|
||||
Content=""/>
|
||||
|
||||
<controls:CalculatorButton x:Name="PlusButton"
|
||||
x:Uid="plusButton"
|
||||
Grid.Row="3"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="plusButton"
|
||||
ButtonId="Add"
|
||||
Content=""/>
|
||||
|
||||
<controls:CalculatorButton x:Name="EqualButton"
|
||||
x:Uid="equalButton"
|
||||
Grid.Row="4"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource AccentEmphasizedCalcButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="equalButton"
|
||||
ButtonId="Equals"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Uid="DisplayControls"
|
||||
Grid.Row="1"
|
||||
Grid.Column="3"
|
||||
Grid.ColumnSpan="3"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="ClearEntryButton"
|
||||
x:Uid="clearEntryButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AutomationId="clearEntryButton"
|
||||
ButtonId="ClearEntry"
|
||||
Content="CE"/>
|
||||
<controls:CalculatorButton x:Name="ClearButton"
|
||||
x:Uid="clearButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AutomationId="clearButton"
|
||||
ButtonId="Clear"
|
||||
Content="C"/>
|
||||
<controls:CalculatorButton x:Name="BackSpaceButton"
|
||||
x:Uid="backSpaceButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="12"
|
||||
AutomationProperties.AutomationId="backSpaceButton"
|
||||
ButtonId="Backspace"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Uid="NumberPad"
|
||||
Grid.Row="2"
|
||||
Grid.RowSpan="4"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="6"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="5"
|
||||
AutomationProperties.AutomationId="NumberPad"
|
||||
@@ -332,6 +613,8 @@
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
<RowDefinition/>
|
||||
</Grid.RowDefinitions>
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
@@ -340,12 +623,6 @@
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<local:NumberPad x:Name="NumberPad"
|
||||
Grid.RowSpan="4"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="3"
|
||||
ButtonStyle="{StaticResource NumericButtonStyle18}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="AButton"
|
||||
x:Uid="aButton"
|
||||
Grid.Row="0"
|
||||
@@ -355,79 +632,73 @@
|
||||
ButtonId="A"
|
||||
Content="A"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="BButton"
|
||||
x:Uid="bButton"
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource NumericButtonStyle12}"
|
||||
AutomationProperties.AutomationId="bButton"
|
||||
ButtonId="B"
|
||||
Content="B"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="CButton"
|
||||
x:Uid="cButton"
|
||||
Grid.Row="1"
|
||||
Grid.Row="2"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource NumericButtonStyle12}"
|
||||
AutomationProperties.AutomationId="cButton"
|
||||
ButtonId="C"
|
||||
Content="C"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="DButton"
|
||||
x:Uid="dButton"
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Grid.Row="3"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource NumericButtonStyle12}"
|
||||
AutomationProperties.AutomationId="dButton"
|
||||
ButtonId="D"
|
||||
Content="D"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="EButton"
|
||||
x:Uid="eButton"
|
||||
Grid.Row="2"
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource NumericButtonStyle12}"
|
||||
AutomationProperties.AutomationId="eButton"
|
||||
ButtonId="E"
|
||||
Content="E"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<controls:CalculatorButton x:Name="FButton"
|
||||
x:Uid="fButton"
|
||||
Grid.Row="2"
|
||||
Grid.Column="1"
|
||||
Grid.Row="5"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource NumericButtonStyle12}"
|
||||
AutomationProperties.AutomationId="fButton"
|
||||
ButtonId="F"
|
||||
Content="F"
|
||||
IsEnabled="{x:Bind Model.AreHEXButtonsEnabled, Mode=OneWay}"/>
|
||||
|
||||
<local:NumberPad x:Name="NumberPad"
|
||||
Grid.Row="2"
|
||||
Grid.RowSpan="4"
|
||||
Grid.Column="1"
|
||||
Grid.ColumnSpan="3"
|
||||
ButtonStyle="{StaticResource NumericButtonStyle18}"
|
||||
CurrentRadixType="{x:Bind Model.CurrentRadixType, Mode=OneWay}"/>
|
||||
</Grid>
|
||||
|
||||
<controls:CalculatorButton x:Name="OpenParenthesisButton"
|
||||
x:Uid="openParenthesisButton"
|
||||
Grid.Row="5"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource ParenthesisCalcButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="openParenthesisButton"
|
||||
ButtonId="OpenParenthesis"
|
||||
Content="("
|
||||
GotFocus="OpenParenthesisButton_GotFocus"
|
||||
Tag="{x:Bind ParenthesisCountToString(Model.OpenParenthesisCount), Mode=OneWay}"/>
|
||||
<controls:CalculatorButton x:Name="CloseParenthesisButton"
|
||||
x:Uid="closeParenthesisButton"
|
||||
Grid.Row="5"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="closeParenthesisButton"
|
||||
ButtonId="CloseParenthesis"
|
||||
Content=")"/>
|
||||
<controls:CalculatorButton x:Name="NegateButton"
|
||||
x:Uid="negateButton"
|
||||
Grid.Row="5"
|
||||
Grid.Column="3"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
Grid.Row="6"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
|
||||
FontSize="12"
|
||||
FontWeight="Normal"
|
||||
AutomationProperties.AutomationId="negateButton"
|
||||
ButtonId="Negate"
|
||||
Content=""/>
|
||||
|
@@ -29,47 +29,92 @@ CalculatorProgrammerRadixOperators::CalculatorProgrammerRadixOperators()
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
void CalculatorProgrammerRadixOperators::OnLoaded(Object ^, RoutedEventArgs ^)
|
||||
void CalculatorProgrammerRadixOperators::FlyoutButton_Clicked(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
m_progModeRadixChangeToken = Model->ProgModeRadixChange +=
|
||||
ref new ProgModeRadixChangeHandler(this, &CalculatorProgrammerRadixOperators::ProgModeRadixChange);
|
||||
}
|
||||
void CalculatorProgrammerRadixOperators::OnUnloaded(Object ^, RoutedEventArgs ^)
|
||||
{
|
||||
Model->ProgModeRadixChange -= m_progModeRadixChangeToken;
|
||||
this->BitwiseFlyout->Hide();
|
||||
}
|
||||
|
||||
void CalculatorProgrammerRadixOperators::Shift_Clicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
||||
void CalculatorProgrammerRadixOperators::checkDefaultBitShift()
|
||||
{
|
||||
bool isShiftChecked = static_cast<ToggleButton ^>(sender)->IsChecked->Value;
|
||||
auto scvm = safe_cast<StandardCalculatorViewModel ^>(this->DataContext);
|
||||
scvm->IsShiftProgrammerChecked = isShiftChecked;
|
||||
this->ArithmeticShiftButton->IsChecked = true;
|
||||
}
|
||||
|
||||
void CalculatorProgrammerRadixOperators::BitshiftFlyout_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
||||
{
|
||||
// Load deferred load buttons
|
||||
if (RolButton == nullptr)
|
||||
{
|
||||
FindName("RolButton");
|
||||
FindName("RorButton");
|
||||
FindName("RolCarryButton");
|
||||
FindName("RorCarryButton");
|
||||
FindName("LshLogicalButton");
|
||||
FindName("RshLogicalButton");
|
||||
}
|
||||
|
||||
if (isShiftChecked)
|
||||
// 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.
|
||||
if (RolButton == nullptr || RorButton == nullptr || RolCarryButton == nullptr || RorCarryButton == nullptr || LshLogicalButton == nullptr
|
||||
|| RshLogicalButton == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
CollapseBitshiftButtons();
|
||||
|
||||
auto radioButton = static_cast<RadioButton^>(sender);
|
||||
|
||||
if (radioButton == ArithmeticShiftButton)
|
||||
{
|
||||
LshButton->Visibility = ::Visibility::Visible;
|
||||
RshButton->Visibility = ::Visibility::Visible;
|
||||
LshButton->IsEnabled = true;
|
||||
RshButton->IsEnabled = true;
|
||||
}
|
||||
else if (radioButton == LogicalShiftButton)
|
||||
{
|
||||
LshLogicalButton->Visibility = ::Visibility::Visible;
|
||||
RshLogicalButton->Visibility = ::Visibility::Visible;
|
||||
LshLogicalButton->IsEnabled = true;
|
||||
RshLogicalButton->IsEnabled = true;
|
||||
}
|
||||
else if (radioButton == RotateCircularButton)
|
||||
{
|
||||
RolButton->Visibility = ::Visibility::Visible;
|
||||
RorButton->Visibility = ::Visibility::Visible;
|
||||
LshButton->Visibility = ::Visibility::Collapsed;
|
||||
RshButton->Visibility = ::Visibility::Collapsed;
|
||||
RolButton->IsEnabled = true;
|
||||
RorButton->IsEnabled = true;
|
||||
}
|
||||
else
|
||||
else if (radioButton == RotateCarryShiftButton)
|
||||
{
|
||||
RolButton->Visibility = ::Visibility::Collapsed;
|
||||
RorButton->Visibility = ::Visibility::Collapsed;
|
||||
LshButton->Visibility = ::Visibility::Visible;
|
||||
RshButton->Visibility = ::Visibility::Visible;
|
||||
RolCarryButton->Visibility = ::Visibility::Visible;
|
||||
RorCarryButton->Visibility = ::Visibility::Visible;
|
||||
RolCarryButton->IsEnabled = true;
|
||||
RorCarryButton->IsEnabled = true;
|
||||
}
|
||||
|
||||
this->BitShiftFlyout->Hide();
|
||||
}
|
||||
|
||||
void CalculatorProgrammerRadixOperators::ProgModeRadixChange()
|
||||
void CalculatorProgrammerRadixOperators::CollapseBitshiftButtons()
|
||||
{
|
||||
NumberPad->ProgModeRadixChange();
|
||||
RolButton->Visibility = ::Visibility::Collapsed;
|
||||
RorButton->Visibility = ::Visibility::Collapsed;
|
||||
RolCarryButton->Visibility = ::Visibility::Collapsed;
|
||||
RorCarryButton->Visibility = ::Visibility::Collapsed;
|
||||
LshButton->Visibility = ::Visibility::Collapsed;
|
||||
RshButton->Visibility = ::Visibility::Collapsed;
|
||||
LshLogicalButton->Visibility = ::Visibility::Collapsed;
|
||||
RshLogicalButton->Visibility = ::Visibility::Collapsed;
|
||||
|
||||
// We need to set the collapsed buttons to disabled so that the KeyboardShortcutManager can skip the keybinds for the disabled buttons
|
||||
RolButton->IsEnabled = false;
|
||||
RorButton->IsEnabled = false;
|
||||
RolCarryButton->IsEnabled = false;
|
||||
RorCarryButton->IsEnabled = false;
|
||||
LshButton->IsEnabled = false;
|
||||
RshButton->IsEnabled = false;
|
||||
LshLogicalButton->IsEnabled = false;
|
||||
RshLogicalButton->IsEnabled = false;
|
||||
}
|
||||
|
||||
bool CalculatorProgrammerRadixOperators::IsErrorVisualState::get()
|
||||
|
@@ -30,14 +30,14 @@ namespace CalculatorApp
|
||||
|
||||
DEPENDENCY_PROPERTY_OWNER(CalculatorProgrammerRadixOperators);
|
||||
|
||||
void checkDefaultBitShift();
|
||||
|
||||
private:
|
||||
void Shift_Clicked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnLoaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnUnloaded(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void ProgModeRadixChange();
|
||||
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();
|
||||
|
||||
bool m_isErrorVisualState;
|
||||
Windows::Foundation::EventRegistrationToken m_progModeRadixChangeToken;
|
||||
void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
};
|
||||
}
|
||||
|
@@ -47,8 +47,6 @@
|
||||
<Setter Target="DegreeButton.Style" Value="{StaticResource CaptionButtonSmallStyle}"/>
|
||||
<Setter Target="RadianButton.Style" Value="{StaticResource CaptionButtonSmallStyle}"/>
|
||||
<Setter Target="GradsButton.Style" Value="{StaticResource CaptionButtonSmallStyle}"/>
|
||||
|
||||
<Setter Target="HyperbolicButton.Style" Value="{StaticResource CaptionToggleButtonSmallStyle}"/>
|
||||
<Setter Target="FtoeButton.Style" Value="{StaticResource CaptionToggleButtonSmallStyle}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
@@ -60,7 +58,6 @@
|
||||
<Setter Target="DegreeButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="RadianButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="GradsButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="HyperbolicButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="FtoeButton.IsEnabled" Value="False"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
@@ -89,20 +86,9 @@
|
||||
CommandParameter="2"
|
||||
Content="GRAD"
|
||||
Visibility="Collapsed"/>
|
||||
<ToggleButton x:Name="HyperbolicButton"
|
||||
x:Uid="hyperbolicButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource CaptionToggleButtonStyle}"
|
||||
Background="{ThemeResource SystemControlBackgroundTransparentBrush}"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AutomationId="hyperbolicButton"
|
||||
Checked="HypButton_Toggled"
|
||||
Content="HYP"
|
||||
IsChecked="{Binding IsHyperbolicChecked, Mode=TwoWay}"
|
||||
Unchecked="HypButton_Toggled"/>
|
||||
<ToggleButton x:Name="FtoeButton"
|
||||
x:Uid="ftoeButton"
|
||||
Grid.Column="2"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource CaptionToggleButtonStyle}"
|
||||
Background="{ThemeResource SystemControlBackgroundTransparentBrush}"
|
||||
FontWeight="SemiBold"
|
||||
|
@@ -35,10 +35,6 @@ CalculatorScientificAngleButtons::CalculatorScientificAngleButtons()
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
void CalculatorScientificAngleButtons::HypButton_Toggled(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
}
|
||||
|
||||
void CalculatorScientificAngleButtons::FToEButton_Toggled(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
auto viewModel = safe_cast<StandardCalculatorViewModel ^>(this->DataContext);
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
//
|
||||
@@ -35,7 +35,6 @@ namespace CalculatorApp
|
||||
private:
|
||||
void OnAngleButtonPressed(_In_ Platform::Object ^ commandParameter);
|
||||
void FToEButton_Toggled(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void HypButton_Toggled(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
|
||||
bool m_isErrorVisualState;
|
||||
};
|
||||
|
File diff suppressed because it is too large
Load Diff
@@ -9,6 +9,7 @@
|
||||
#include "pch.h"
|
||||
#include "CalculatorScientificOperators.xaml.h"
|
||||
#include "CalcViewModel/Common/KeyboardShortcutManager.h"
|
||||
#include "CalcViewModel/Common/TraceLogger.h"
|
||||
#include "Controls/CalculatorButton.h"
|
||||
#include "CalcViewModel/StandardCalculatorViewModel.h"
|
||||
|
||||
@@ -20,6 +21,8 @@ using namespace std;
|
||||
using namespace Platform;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::Foundation::Collections;
|
||||
using namespace Windows::UI::Core;
|
||||
using namespace Windows::UI::ViewManagement;
|
||||
using namespace Windows::UI::Xaml;
|
||||
using namespace Windows::UI::Xaml::Controls;
|
||||
using namespace Windows::UI::Xaml::Controls::Primitives;
|
||||
@@ -27,30 +30,15 @@ using namespace Windows::UI::Xaml::Data;
|
||||
using namespace Windows::UI::Xaml::Input;
|
||||
using namespace Windows::UI::Xaml::Media;
|
||||
using namespace Windows::UI::Xaml::Navigation;
|
||||
using namespace Windows::UI::Core;
|
||||
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorScientificOperators, IsErrorVisualState);
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(CalculatorScientificOperators, IsWideLayout);
|
||||
|
||||
CalculatorScientificOperators::CalculatorScientificOperators()
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
ExpButton->SetValue(Common::KeyboardShortcutManager::VirtualKeyProperty, Common::MyVirtualKey::E);
|
||||
Common::KeyboardShortcutManager::ShiftButtonChecked(false);
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::ShortLayout_Completed(_In_ Platform::Object ^ /*sender*/, _In_ Platform::Object ^ /*e*/)
|
||||
{
|
||||
IsWideLayout = false;
|
||||
SetOperatorRowVisibility();
|
||||
Common::KeyboardShortcutManager::ShiftButtonChecked(Model->IsShiftChecked);
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::WideLayout_Completed(_In_ Platform::Object ^ /*sender*/, _In_ Platform::Object ^ /*e*/)
|
||||
{
|
||||
IsWideLayout = true;
|
||||
SetOperatorRowVisibility();
|
||||
Common::KeyboardShortcutManager::ShiftButtonChecked(Model->IsShiftChecked);
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::OnIsErrorVisualStatePropertyChanged(bool /*oldValue*/, bool newValue)
|
||||
@@ -60,31 +48,75 @@ void CalculatorScientificOperators::OnIsErrorVisualStatePropertyChanged(bool /*o
|
||||
NumberPad->IsErrorVisualState = newValue;
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::shiftButton_Check(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
void CalculatorScientificOperators::ShiftButton_Check(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
bool isChecked = ShiftButton->IsChecked->Value;
|
||||
Model->IsShiftChecked = isChecked;
|
||||
Common::KeyboardShortcutManager::ShiftButtonChecked(isChecked);
|
||||
SetOperatorRowVisibility();
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::shiftButton_IsEnabledChanged(
|
||||
void CalculatorScientificOperators::ShiftButton_Uncheck(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
ShiftButton->IsChecked = false;
|
||||
SetOperatorRowVisibility();
|
||||
ShiftButton->Focus(::FocusState::Programmatic);
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::TrigFlyoutShift_Toggle(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
SetTrigRowVisibility();
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::TrigFlyoutHyp_Toggle(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
SetTrigRowVisibility();
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::FlyoutButton_Clicked(_In_ Platform::Object ^ /*sender*/, _In_ Windows::UI::Xaml::RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
this->HypButton->IsChecked = false;
|
||||
this->TrigShiftButton->IsChecked = false;
|
||||
this->Trigflyout->Hide();
|
||||
this->FuncFlyout->Hide();
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::ShiftButton_IsEnabledChanged(
|
||||
_In_ Platform::Object ^ /*sender*/,
|
||||
_In_ Windows::UI::Xaml::DependencyPropertyChangedEventArgs ^ /*e*/)
|
||||
{
|
||||
SetOperatorRowVisibility();
|
||||
Common::KeyboardShortcutManager::ShiftButtonChecked(ShiftButton->IsEnabled && ShiftButton->IsChecked->Value);
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::SetTrigRowVisibility()
|
||||
{
|
||||
bool isShiftChecked = TrigShiftButton->IsChecked->Value;
|
||||
bool isHypeChecked = HypButton->IsChecked->Value;
|
||||
|
||||
InverseHyperbolicTrigFunctions->Visibility = ::Visibility::Collapsed;
|
||||
InverseTrigFunctions->Visibility = ::Visibility::Collapsed;
|
||||
HyperbolicTrigFunctions->Visibility = ::Visibility::Collapsed;
|
||||
TrigFunctions->Visibility = ::Visibility::Collapsed;
|
||||
|
||||
if (isShiftChecked && isHypeChecked)
|
||||
{
|
||||
InverseHyperbolicTrigFunctions->Visibility = ::Visibility::Visible;
|
||||
}
|
||||
else if (isShiftChecked && !isHypeChecked)
|
||||
{
|
||||
InverseTrigFunctions->Visibility = ::Visibility::Visible;
|
||||
}
|
||||
else if (!isShiftChecked && isHypeChecked)
|
||||
{
|
||||
HyperbolicTrigFunctions->Visibility = ::Visibility::Visible;
|
||||
}
|
||||
else
|
||||
{
|
||||
TrigFunctions->Visibility = ::Visibility::Visible;
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::SetOperatorRowVisibility()
|
||||
{
|
||||
::Visibility rowVis, invRowVis;
|
||||
if (IsWideLayout)
|
||||
{
|
||||
rowVis = ::Visibility::Visible;
|
||||
invRowVis = ::Visibility::Visible;
|
||||
}
|
||||
else if (ShiftButton->IsChecked->Value)
|
||||
if (ShiftButton->IsChecked->Value)
|
||||
{
|
||||
rowVis = ::Visibility::Collapsed;
|
||||
invRowVis = ::Visibility::Visible;
|
||||
@@ -96,9 +128,7 @@ void CalculatorScientificOperators::SetOperatorRowVisibility()
|
||||
}
|
||||
|
||||
Row1->Visibility = rowVis;
|
||||
Row2->Visibility = rowVis;
|
||||
InvRow1->Visibility = invRowVis;
|
||||
InvRow2->Visibility = invRowVis;
|
||||
}
|
||||
|
||||
void CalculatorScientificOperators::OpenParenthesisButton_GotFocus(Object ^ sender, RoutedEventArgs ^ e)
|
||||
|
@@ -29,21 +29,19 @@ namespace CalculatorApp
|
||||
|
||||
DEPENDENCY_PROPERTY_OWNER(CalculatorScientificOperators);
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(bool, IsErrorVisualState, false);
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(bool, IsWideLayout, false);
|
||||
|
||||
bool IsShiftEnabled(bool isWideLayout, bool isErrorState)
|
||||
{
|
||||
return !(isWideLayout || isErrorState);
|
||||
}
|
||||
void OpenParenthesisButton_GotFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
Platform::String ^ ParenthesisCountToString(unsigned int count);
|
||||
|
||||
private:
|
||||
void ShortLayout_Completed(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void WideLayout_Completed(_In_ Platform::Object ^ sender, _In_ Platform::Object ^ e);
|
||||
void OnIsErrorVisualStatePropertyChanged(bool oldValue, bool newValue);
|
||||
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 ShiftButton_Check(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void ShiftButton_Uncheck(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void TrigFlyoutShift_Toggle(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void TrigFlyoutHyp_Toggle(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void FlyoutButton_Clicked(_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 SetTrigRowVisibility();
|
||||
};
|
||||
}
|
||||
|
@@ -6,7 +6,9 @@
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:local="using:CalculatorApp"
|
||||
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
|
||||
xmlns:triggers="using:CalculatorApp.Views.StateTriggers"
|
||||
x:Name="ControlRoot"
|
||||
XYFocusKeyboardNavigation="Enabled"
|
||||
mc:Ignorable="d">
|
||||
|
||||
<Grid x:Name="Root">
|
||||
@@ -36,7 +38,6 @@
|
||||
<Setter Target="PercentButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="SquareRootButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="XPower2Button.IsEnabled" Value="False"/>
|
||||
<Setter Target="XPower3Button.IsEnabled" Value="False"/>
|
||||
<Setter Target="InvertButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="DivideButton.IsEnabled" Value="False"/>
|
||||
<Setter Target="MultiplyButton.IsEnabled" Value="False"/>
|
||||
@@ -47,37 +48,77 @@
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup>
|
||||
<VisualState x:Name="NormalFontSize">
|
||||
<VisualState x:Name="Large">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="440" MinWindowWidth="0"/>
|
||||
<triggers:ControlSizeTrigger MinWidth="780"
|
||||
MinHeight="814"
|
||||
Source="{x:Bind Root}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="SquareRootButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="XPower2Button.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="InvertButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="NegateButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="ClearEntryButton.Style" Value="{StaticResource OperatorButtonStyle}"/>
|
||||
<Setter Target="ClearButton.Style" Value="{StaticResource OperatorButtonStyle}"/>
|
||||
<Setter Target="BackSpaceButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="DivideButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="MultiplyButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="MinusButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="PlusButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="EqualButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcButtonCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle38}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Medium">
|
||||
<VisualState.StateTriggers>
|
||||
<triggers:ControlSizeTrigger MinWidth="468"
|
||||
MinHeight="500"
|
||||
Source="{x:Bind Root}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="SmallFontSize">
|
||||
<VisualState x:Name="Small">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="260" MinWindowWidth="0"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle18}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="TinyFontSize">
|
||||
<VisualState x:Name="Tiny">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="0" MinWindowWidth="0"/>
|
||||
</VisualState.StateTriggers>
|
||||
@@ -101,239 +142,81 @@
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup>
|
||||
<VisualState x:Name="Portrait768x1366">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="1366" MinWindowWidth="768"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower3Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle46}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Landscape13InchLaptop">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="768" MinWindowWidth="1366"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="C0.Width" Value="1*"/>
|
||||
<Setter Target="R0.Height" Value="0"/>
|
||||
|
||||
<Setter Target="StandardFunctions.(Grid.Row)" Value="1"/>
|
||||
<Setter Target="StandardFunctions.(Grid.Column)" Value="1"/>
|
||||
<Setter Target="StandardFunctions.(Grid.RowSpan)" Value="5"/>
|
||||
<Setter Target="StandardFunctions.(Grid.ColumnSpan)" Value="1"/>
|
||||
<Setter Target="FnR1.Height" Value="1*"/>
|
||||
<Setter Target="FnR2.Height" Value="1*"/>
|
||||
<Setter Target="FnR3.Height" Value="1*"/>
|
||||
<Setter Target="FnR4.Height" Value="1*"/>
|
||||
<Setter Target="FnC1.Width" Value="0"/>
|
||||
<Setter Target="FnC2.Width" Value="0"/>
|
||||
<Setter Target="FnC3.Width" Value="0"/>
|
||||
|
||||
<Setter Target="SquareRootButton.(Grid.Row)" Value="1"/>
|
||||
<Setter Target="SquareRootButton.(Grid.Column)" Value="0"/>
|
||||
<Setter Target="XPower2Button.(Grid.Row)" Value="2"/>
|
||||
<Setter Target="XPower2Button.(Grid.Column)" Value="0"/>
|
||||
<Setter Target="XPower3Button.Visibility" Value="Visible"/>
|
||||
<Setter Target="InvertButton.(Grid.Row)" Value="4"/>
|
||||
<Setter Target="InvertButton.(Grid.Column)" Value="0"/>
|
||||
|
||||
<Setter Target="NegateButton.(Grid.Row)" Value="5"/>
|
||||
<Setter Target="NegateButton.(Grid.Column)" Value="2"/>
|
||||
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle34}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Landscape8InchTab">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="640" MinWindowWidth="1024"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="C0.Width" Value="1*"/>
|
||||
<Setter Target="R0.Height" Value="0"/>
|
||||
|
||||
<Setter Target="StandardFunctions.(Grid.Row)" Value="1"/>
|
||||
<Setter Target="StandardFunctions.(Grid.Column)" Value="1"/>
|
||||
<Setter Target="StandardFunctions.(Grid.RowSpan)" Value="5"/>
|
||||
<Setter Target="StandardFunctions.(Grid.ColumnSpan)" Value="1"/>
|
||||
<Setter Target="FnR1.Height" Value="1*"/>
|
||||
<Setter Target="FnR2.Height" Value="1*"/>
|
||||
<Setter Target="FnR3.Height" Value="1*"/>
|
||||
<Setter Target="FnR4.Height" Value="1*"/>
|
||||
<Setter Target="FnC1.Width" Value="0"/>
|
||||
<Setter Target="FnC2.Width" Value="0"/>
|
||||
<Setter Target="FnC3.Width" Value="0"/>
|
||||
|
||||
<Setter Target="SquareRootButton.(Grid.Row)" Value="1"/>
|
||||
<Setter Target="SquareRootButton.(Grid.Column)" Value="0"/>
|
||||
<Setter Target="XPower2Button.(Grid.Row)" Value="2"/>
|
||||
<Setter Target="XPower2Button.(Grid.Column)" Value="0"/>
|
||||
<Setter Target="XPower3Button.Visibility" Value="Visible"/>
|
||||
<Setter Target="InvertButton.(Grid.Row)" Value="4"/>
|
||||
<Setter Target="InvertButton.(Grid.Column)" Value="0"/>
|
||||
|
||||
<Setter Target="NegateButton.(Grid.Row)" Value="5"/>
|
||||
<Setter Target="NegateButton.(Grid.Column)" Value="2"/>
|
||||
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower3Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle28}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Portrait8InchTab">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="1024" MinWindowWidth="640"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower3Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle28}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Portrait6InchPhone">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="854" MinWindowWidth="480"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSizeLarge}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle34}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Portrait5InchPhone">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="640" MinWindowWidth="360"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="SquareRootButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="XPower2Button.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="InvertButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="NegateButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearEntryButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="ClearButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="BackSpaceButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="DivideButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MultiplyButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="MinusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="PlusButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
<Setter Target="EqualButton.FontSize" Value="{StaticResource CalcStandardOperatorCaptionSize}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle28}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="MinSizeLayout">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="{StaticResource AppMinWindowHeight}" MinWindowWidth="{StaticResource AppMinWindowWidth}"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="PercentButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="SquareRootButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="XPower2Button.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="InvertButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="NegateButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="ClearEntryButton.Style" Value="{StaticResource OperatorButtonStyle}"/>
|
||||
<Setter Target="ClearButton.Style" Value="{StaticResource OperatorButtonStyle}"/>
|
||||
<Setter Target="BackSpaceButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="DivideButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="MultiplyButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="MinusButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="PlusButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
<Setter Target="EqualButton.Style" Value="{StaticResource SymbolOperatorButtonStyle}"/>
|
||||
|
||||
<Setter Target="NumberPad.ButtonStyle" Value="{StaticResource NumericButtonStyle24}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="ShowStandardFunctions">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="394" MinWindowWidth="0"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="R0.Height" Value="1*"/>
|
||||
<Setter Target="R1.Height" Value="1*"/>
|
||||
<Setter Target="StandardFunctions.Visibility" Value="Visible"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="DefaultLayout">
|
||||
<VisualState x:Name="HideStandardFunctions">
|
||||
<VisualState.StateTriggers>
|
||||
<AdaptiveTrigger MinWindowHeight="0" MinWindowWidth="0"/>
|
||||
</VisualState.StateTriggers>
|
||||
<VisualState.Setters>
|
||||
<Setter Target="R0.Height" Value="0*"/>
|
||||
<Setter Target="R1.Height" Value="0*"/>
|
||||
<Setter Target="StandardFunctions.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="PercentButton.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="PercentColumn.Width" Value="0"/>
|
||||
<Setter Target="DisplayControls.Column" Value="1"/>
|
||||
<Setter Target="DisplayControls.ColumnSpan" Value="4"/>
|
||||
<Setter Target="StandardOperators.Row" Value="0"/>
|
||||
<Setter Target="StandardOperators.RowSpan" Value="6"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<Grid x:Name="DisplayControls"
|
||||
x:Uid="DisplayControls"
|
||||
Grid.Row="0"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="4"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition x:Name="PercentColumn"/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="PercentButton"
|
||||
x:Uid="percentButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="percentButton"
|
||||
ButtonId="Percent"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="ClearEntryButton"
|
||||
x:Uid="clearEntryButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="clearEntryButton"
|
||||
ButtonId="ClearEntry"
|
||||
Content="CE"/>
|
||||
<controls:CalculatorButton x:Name="ClearButton"
|
||||
x:Uid="clearButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="clearButton"
|
||||
ButtonId="Clear"
|
||||
Content="C"/>
|
||||
<controls:CalculatorButton x:Name="BackSpaceButton"
|
||||
x:Uid="backSpaceButton"
|
||||
Grid.Column="3"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="backSpaceButton"
|
||||
ButtonId="Backspace"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Name="StandardFunctions"
|
||||
x:Uid="StandardFunctions"
|
||||
Grid.Row="0"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="4"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
@@ -350,45 +233,28 @@
|
||||
<ColumnDefinition x:Name="FnC2" Width="1*"/>
|
||||
<ColumnDefinition x:Name="FnC3" Width="1*"/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="PercentButton"
|
||||
x:Uid="percentButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="percentButton"
|
||||
ButtonId="Percent"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="SquareRootButton"
|
||||
x:Uid="squareRootButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="squareRootButton"
|
||||
ButtonId="Sqrt"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="XPower2Button"
|
||||
x:Uid="xpower2Button"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="xpower2Button"
|
||||
ButtonId="XPower2"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="XPower3Button"
|
||||
x:Uid="xpower3Button"
|
||||
Grid.Row="3"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="xpower3Button"
|
||||
ButtonId="Cube"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
<controls:CalculatorButton x:Name="InvertButton"
|
||||
x:Uid="invertButton"
|
||||
Grid.Column="3"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="invertButton"
|
||||
ButtonId="Invert"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="XPower2Button"
|
||||
x:Uid="xpower2Button"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="18"
|
||||
AutomationProperties.AutomationId="xpower2Button"
|
||||
ButtonId="XPower2"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="SquareRootButton"
|
||||
x:Uid="squareRootButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="squareRootButton"
|
||||
ButtonId="Sqrt"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Name="StandardOperators"
|
||||
@@ -407,77 +273,40 @@
|
||||
<controls:CalculatorButton x:Name="DivideButton"
|
||||
x:Uid="divideButton"
|
||||
Grid.Row="0"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="divideButton"
|
||||
ButtonId="Divide"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="MultiplyButton"
|
||||
x:Uid="multiplyButton"
|
||||
Grid.Row="1"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="multiplyButton"
|
||||
ButtonId="Multiply"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="MinusButton"
|
||||
x:Uid="minusButton"
|
||||
Grid.Row="2"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="minusButton"
|
||||
ButtonId="Subtract"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="PlusButton"
|
||||
x:Uid="plusButton"
|
||||
Grid.Row="3"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
AutomationProperties.AutomationId="plusButton"
|
||||
ButtonId="Add"
|
||||
Content=""/>
|
||||
<controls:CalculatorButton x:Name="EqualButton"
|
||||
x:Uid="equalButton"
|
||||
Grid.Row="4"
|
||||
Style="{StaticResource AccentCalcButtonStyle}"
|
||||
Style="{StaticResource AccentEmphasizedCalcButtonStyle}"
|
||||
AutomationProperties.AutomationId="equalButton"
|
||||
ButtonId="Equals"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<Grid x:Name="DisplayControls"
|
||||
x:Uid="DisplayControls"
|
||||
Grid.Row="1"
|
||||
Grid.Column="2"
|
||||
Grid.ColumnSpan="3"
|
||||
AutomationProperties.HeadingLevel="Level1">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
<ColumnDefinition/>
|
||||
</Grid.ColumnDefinitions>
|
||||
<controls:CalculatorButton x:Name="ClearEntryButton"
|
||||
x:Uid="clearEntryButton"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="clearEntryButton"
|
||||
ButtonId="ClearEntry"
|
||||
Content="CE"/>
|
||||
<controls:CalculatorButton x:Name="ClearButton"
|
||||
x:Uid="clearButton"
|
||||
Grid.Column="1"
|
||||
Style="{StaticResource OperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="clearButton"
|
||||
ButtonId="Clear"
|
||||
Content="C"/>
|
||||
<controls:CalculatorButton x:Name="BackSpaceButton"
|
||||
x:Uid="backSpaceButton"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
FontSize="16"
|
||||
AutomationProperties.AutomationId="backSpaceButton"
|
||||
ButtonId="Backspace"
|
||||
Content=""/>
|
||||
</Grid>
|
||||
|
||||
<local:NumberPad x:Name="NumberPad"
|
||||
x:Uid="NumberPad"
|
||||
Grid.Row="2"
|
||||
@@ -491,7 +320,8 @@
|
||||
x:Uid="negateButton"
|
||||
Grid.Row="5"
|
||||
Grid.Column="2"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
|
||||
FontWeight="Normal"
|
||||
AutomationProperties.AutomationId="negateButton"
|
||||
ButtonId="Negate"
|
||||
Content=""/>
|
||||
|
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "pch.h"
|
||||
#include "CalculatorStandardOperators.xaml.h"
|
||||
#include "Controls/CalculatorButton.h"
|
||||
|
||||
using namespace CalculatorApp;
|
||||
|
||||
|
@@ -92,7 +92,7 @@ DateCalculator::DateCalculator()
|
||||
DateDiff_FromDate->PlaceholderText = placeholderText;
|
||||
DateDiff_ToDate->PlaceholderText = placeholderText;
|
||||
|
||||
CopyMenuItem->Text = AppResourceProvider::GetInstance().GetResourceString(L"copyMenuItem");
|
||||
CopyMenuItem->Text = AppResourceProvider::GetInstance()->GetResourceString(L"copyMenuItem");
|
||||
m_dateCalcOptionChangedEventToken = DateCalculationOption->SelectionChanged +=
|
||||
ref new SelectionChangedEventHandler(this, &DateCalculator::DateCalcOption_Changed);
|
||||
}
|
||||
@@ -103,7 +103,7 @@ void DateCalculator::FromDate_DateChanged(_In_ CalendarDatePicker ^ sender, _In_
|
||||
{
|
||||
auto dateCalcViewModel = safe_cast<DateCalculatorViewModel ^>(this->DataContext);
|
||||
dateCalcViewModel->FromDate = e->NewDate->Value;
|
||||
TraceLogger::GetInstance().LogDateCalculationModeUsed(false /* AddSubtractMode */);
|
||||
TraceLogger::GetInstance()->LogDateCalculationModeUsed(false /* AddSubtractMode */);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -117,7 +117,7 @@ void DateCalculator::ToDate_DateChanged(_In_ CalendarDatePicker ^ sender, _In_ C
|
||||
{
|
||||
auto dateCalcViewModel = safe_cast<DateCalculatorViewModel ^>(this->DataContext);
|
||||
dateCalcViewModel->ToDate = e->NewDate->Value;
|
||||
TraceLogger::GetInstance().LogDateCalculationModeUsed(false /* AddSubtractMode */);
|
||||
TraceLogger::GetInstance()->LogDateCalculationModeUsed(false /* AddSubtractMode */);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -131,7 +131,7 @@ void DateCalculator::AddSubtract_DateChanged(_In_ CalendarDatePicker ^ sender, _
|
||||
{
|
||||
auto dateCalcViewModel = safe_cast<DateCalculatorViewModel ^>(this->DataContext);
|
||||
dateCalcViewModel->StartDate = e->NewDate->Value;
|
||||
TraceLogger::GetInstance().LogDateCalculationModeUsed(true /* AddSubtractMode */);
|
||||
TraceLogger::GetInstance()->LogDateCalculationModeUsed(true /* AddSubtractMode */);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -145,7 +145,7 @@ void CalculatorApp::DateCalculator::OffsetValue_Changed(_In_ Platform::Object ^
|
||||
// do not log diagnostics for no-ops and initialization of combo boxes
|
||||
if (dateCalcViewModel->DaysOffset != 0 || dateCalcViewModel->MonthsOffset != 0 || dateCalcViewModel->YearsOffset != 0)
|
||||
{
|
||||
TraceLogger::GetInstance().LogDateCalculationModeUsed(true /* AddSubtractMode */);
|
||||
TraceLogger::GetInstance()->LogDateCalculationModeUsed(true /* AddSubtractMode */);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -237,6 +237,5 @@ void DateCalculator::AddSubtractOption_Checked(_In_ Object ^ sender, _In_ Routed
|
||||
|
||||
void CalculatorApp::DateCalculator::OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e)
|
||||
{
|
||||
auto state = std::wstring(e->NewState->Name->Begin());
|
||||
TraceLogger::GetInstance().LogVisualStateChanged(ViewMode::Date, state);
|
||||
TraceLogger::GetInstance()->LogVisualStateChanged(ViewMode::Date, e->NewState->Name, false);
|
||||
}
|
||||
|
@@ -314,6 +314,15 @@
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="AccentCalcButtonStyle"
|
||||
BasedOn="{StaticResource SymbolOperatorButtonStyle}"
|
||||
TargetType="controls:CalculatorButton">
|
||||
<Setter Property="HoverBackground" Value="{ThemeResource AppControlHighlightAccentRevealBackgroundBrush}"/>
|
||||
<Setter Property="HoverForeground" Value="{ThemeResource SystemControlHighlightAltAltHighBrush}"/>
|
||||
<Setter Property="PressBackground" Value="{ThemeResource AppControlBackgroundListAccentHighRevealBackgroundBrush}"/>
|
||||
<Setter Property="PressForeground" Value="{ThemeResource SystemControlHighlightAltAltHighBrush}"/>
|
||||
</Style>
|
||||
|
||||
<converters:BooleanToVisibilityConverter x:Name="BooleanToVisibilityConverter"/>
|
||||
<converters:BooleanToVisibilityNegationConverter x:Name="BooleanToVisibilityNegationConverter"/>
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
@@ -700,10 +709,10 @@
|
||||
<!-- Ideally the KeyGraphFeaturesPanel should be a frame so that navigation to and from the panel could be handled nicely -->
|
||||
<local:KeyGraphFeaturesPanel x:Name="KeyGraphFeaturesControl"
|
||||
Grid.RowSpan="2"
|
||||
x:Load="{x:Bind IsKeyGraphFeaturesVisible, Mode=OneWay}"
|
||||
KeyGraphFeaturesClosed="OnKeyGraphFeaturesClosed"
|
||||
ViewModel="{x:Bind EquationInputAreaControl.EquationVM, Mode=OneWay}"
|
||||
Visibility="{x:Bind IsKeyGraphFeaturesVisible, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind IsKeyGraphFeaturesVisible, Mode=OneWay}"
|
||||
x:Load="{x:Bind IsKeyGraphFeaturesVisible, Mode=OneWay}"/>
|
||||
|
||||
<!-- This control should be within a grid that limits the hight to keep the sticky footer functionality from breaking -->
|
||||
<local:EquationInputArea x:Name="EquationInputAreaControl"
|
||||
|
@@ -58,7 +58,7 @@ GraphingCalculator::GraphingCalculator()
|
||||
|
||||
auto toolTip = ref new ToolTip();
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
toolTip->Content = ActiveTracingOn ? resProvider.GetResourceString(L"disableTracingButtonToolTip") : resProvider.GetResourceString(L"enableTracingButtonToolTip");
|
||||
toolTip->Content = ActiveTracingOn ? resProvider->GetResourceString(L"disableTracingButtonToolTip") : resProvider->GetResourceString(L"enableTracingButtonToolTip");
|
||||
ToolTipService::SetToolTip(ActiveTracing, toolTip);
|
||||
|
||||
DataTransferManager ^ dataTransferManager = DataTransferManager::GetForCurrentView();
|
||||
@@ -253,7 +253,7 @@ void GraphingCalculator::OnDataRequested(DataTransferManager ^ sender, DataReque
|
||||
}
|
||||
catch (Exception ^ ex)
|
||||
{
|
||||
TraceLogger::GetInstance().LogPlatformException(ViewMode::Graphing, __FUNCTIONW__, ex);
|
||||
TraceLogger::GetInstance()->LogPlatformException(ViewMode::Graphing, __FUNCTIONW__, ex);
|
||||
|
||||
// Something went wrong, notify the user.
|
||||
|
||||
@@ -349,7 +349,7 @@ void GraphingCalculator::OnActiveTracingClick(Object ^ sender, RoutedEventArgs ^
|
||||
|
||||
auto toolTip = ref new ToolTip();
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
toolTip->Content = ActiveTracingOn ? resProvider.GetResourceString(L"disableTracingButtonToolTip") : resProvider.GetResourceString(L"enableTracingButtonToolTip");
|
||||
toolTip->Content = ActiveTracingOn ? resProvider->GetResourceString(L"disableTracingButtonToolTip") : resProvider->GetResourceString(L"enableTracingButtonToolTip");
|
||||
ToolTipService::SetToolTip(ActiveTracing, toolTip);
|
||||
}
|
||||
|
||||
@@ -397,11 +397,11 @@ Platform::String ^ GraphingCalculator::GetInfoForSwitchModeToggleButton(bool isC
|
||||
{
|
||||
if (isChecked)
|
||||
{
|
||||
return AppResourceProvider::GetInstance().GetResourceString(L"GraphSwitchToGraphMode");
|
||||
return AppResourceProvider::GetInstance()->GetResourceString(L"GraphSwitchToGraphMode");
|
||||
}
|
||||
else
|
||||
{
|
||||
return AppResourceProvider::GetInstance().GetResourceString(L"GraphSwitchToEquationMode");
|
||||
return AppResourceProvider::GetInstance()->GetResourceString(L"GraphSwitchToEquationMode");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -411,11 +411,11 @@ void GraphingCalculator::SwitchModeToggleButton_Checked(Platform::Object ^ sende
|
||||
String ^ announcementText;
|
||||
if (SwitchModeToggleButton->IsChecked->Value)
|
||||
{
|
||||
announcementText = AppResourceProvider::GetInstance().GetResourceString(L"GraphSwitchedToEquationModeAnnouncement");
|
||||
announcementText = AppResourceProvider::GetInstance()->GetResourceString(L"GraphSwitchedToEquationModeAnnouncement");
|
||||
}
|
||||
else
|
||||
{
|
||||
announcementText = AppResourceProvider::GetInstance().GetResourceString(L"GraphSwitchedToGraphModeAnnouncement");
|
||||
announcementText = AppResourceProvider::GetInstance()->GetResourceString(L"GraphSwitchedToGraphModeAnnouncement");
|
||||
}
|
||||
|
||||
auto announcement = CalculatorAnnouncement::GetGraphModeChangedAnnouncement(announcementText);
|
||||
|
@@ -7,6 +7,7 @@
|
||||
#include "CalcViewModel\GraphingCalculator\EquationViewModel.h"
|
||||
#include "Controls/MathRichEditBox.h"
|
||||
#include "Controls/EquationTextBox.h"
|
||||
#include "TemplateSelectors/KeyGraphFeaturesTemplateSelector.h"
|
||||
|
||||
namespace CalculatorApp
|
||||
{
|
||||
|
@@ -50,6 +50,9 @@
|
||||
</muxc:SwipeItems>
|
||||
|
||||
<MenuFlyout x:Name="HistoryContextMenu">
|
||||
<MenuFlyoutItem x:Uid="CopyHistoryMenuItem"
|
||||
Click="OnCopyMenuItemClicked"
|
||||
Icon="Copy"/>
|
||||
<MenuFlyoutItem x:Uid="DeleteHistoryMenuItem"
|
||||
Click="OnDeleteMenuItemClicked"
|
||||
Icon="Delete"/>
|
||||
|
@@ -8,6 +8,7 @@
|
||||
|
||||
#include "pch.h"
|
||||
#include "HistoryList.xaml.h"
|
||||
#include "CalcViewModel/Common/CopyPasteManager.h"
|
||||
#include "CalcViewModel/Common/LocalizationService.h"
|
||||
|
||||
using namespace CalculatorApp;
|
||||
@@ -52,6 +53,16 @@ void HistoryList::ListView_ItemClick(_In_ Object ^ sender, _In_ ItemClickEventAr
|
||||
}
|
||||
}
|
||||
|
||||
void HistoryList::OnCopyMenuItemClicked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
auto listViewItem = HistoryContextMenu->Target;
|
||||
auto itemViewModel = dynamic_cast<HistoryItemViewModel ^>(HistoryListView->ItemFromContainer(listViewItem));
|
||||
if (itemViewModel != nullptr)
|
||||
{
|
||||
CopyPasteManager::CopyToClipboard(itemViewModel->Result);
|
||||
}
|
||||
}
|
||||
|
||||
void HistoryList::OnDeleteMenuItemClicked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
auto listViewItem = HistoryContextMenu->Target;
|
||||
|
@@ -34,6 +34,7 @@ namespace CalculatorApp
|
||||
Windows::Foundation::Rect m_visibleBounds;
|
||||
Windows::Foundation::Rect m_coreBounds;
|
||||
void ListView_ItemClick(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::Controls::ItemClickEventArgs ^ e);
|
||||
void OnCopyMenuItemClicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnDeleteMenuItemClicked(_In_ Platform::Object ^ sender, _In_ Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnDeleteSwipeInvoked(_In_ Microsoft::UI::Xaml::Controls::SwipeItem ^ sender, _In_ Microsoft::UI::Xaml::Controls::SwipeItemInvokedEventArgs ^ e);
|
||||
};
|
||||
|
@@ -86,8 +86,9 @@
|
||||
Command="{x:Bind Model.PasteCommand}"/>
|
||||
</StackPanel>
|
||||
|
||||
<local:TitleBar Grid.Row="0" IsAlwaysOnTopMode="{x:Bind Model.IsAlwaysOnTop, Mode=OneWay}"
|
||||
AlwaysOnTopClick="TitleBarAlwaysOnTopButtonClick"/>
|
||||
<local:TitleBar Grid.Row="0"
|
||||
AlwaysOnTopClick="TitleBarAlwaysOnTopButtonClick"
|
||||
IsAlwaysOnTopMode="{x:Bind Model.IsAlwaysOnTop, Mode=OneWay}"/>
|
||||
|
||||
<Grid Grid.Row="1">
|
||||
<Border x:Name="CalcHolder">
|
||||
@@ -98,7 +99,7 @@
|
||||
</Border>
|
||||
<Border x:Name="GraphingCalcHolder">
|
||||
<!-- PLACEHOLDER!!!! This is where the graphing calculator goes when it is delay loaded -->
|
||||
</Border>
|
||||
</Border>
|
||||
<Border x:Name="ConverterHolder">
|
||||
<!-- PLACEHOLDER!!!! This is where the converter goes when it is delay loaded -->
|
||||
</Border>
|
||||
@@ -111,7 +112,6 @@
|
||||
DataContext="{x:Bind Model}"
|
||||
ExpandedModeThresholdWidth="Infinity"
|
||||
IsBackButtonVisible="Collapsed"
|
||||
IsEnabled="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}"
|
||||
IsPaneToggleButtonVisible="{x:Bind Model.IsAlwaysOnTop, Converter={StaticResource BooleanNegationConverter}, Mode=OneWay}"
|
||||
IsSettingsVisible="False"
|
||||
ItemInvoked="OnNavItemInvoked"
|
||||
@@ -129,9 +129,9 @@
|
||||
<StackPanel HorizontalAlignment="Stretch" Orientation="Vertical">
|
||||
<muxc:NavigationViewList x:Name="NavFooter"
|
||||
Width="{x:Bind NavView.OpenPaneLength, Mode=Oneway}"
|
||||
x:Load="False"
|
||||
IsItemClickEnabled="True"
|
||||
ItemClick="OnAboutButtonClick">
|
||||
ItemClick="OnAboutButtonClick"
|
||||
x:Load="False">
|
||||
<muxc:NavigationViewList.ItemContainerTransitions>
|
||||
<!-- Remove EntranceThemeTransition which is a default transition for NavigationViewList -->
|
||||
<TransitionCollection/>
|
||||
@@ -181,7 +181,11 @@
|
||||
AutomationProperties.AutomationId="NormalAlwaysOnTopButton"
|
||||
Click="AlwaysOnTopButtonClick"
|
||||
Content=""
|
||||
Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.DisplayNormalAlwaysOnTopOption, Mode=OneWay}">
|
||||
<Button.KeyboardAccelerators>
|
||||
<KeyboardAccelerator Key="Up" Modifiers="Menu"/>
|
||||
</Button.KeyboardAccelerators>
|
||||
</Button>
|
||||
</Grid>
|
||||
</muxc:NavigationView>
|
||||
</Grid>
|
||||
|
@@ -10,6 +10,7 @@
|
||||
#include "CalcViewModel/Common/AppResourceProvider.h"
|
||||
#include "Views/Memory.xaml.h"
|
||||
#include "Converters/BooleanToVisibilityConverter.h"
|
||||
#include "CalcViewModel/Common/LocalizationStringUtil.h"
|
||||
#include "Common/AppLifecycleLogger.h"
|
||||
using namespace CalculatorApp;
|
||||
using namespace CalculatorApp::Common;
|
||||
@@ -266,7 +267,7 @@ void MainPage::OnPageLoaded(_In_ Object ^, _In_ RoutedEventArgs ^ args)
|
||||
// Delay load things later when we get a chance.
|
||||
this->Dispatcher->RunAsync(
|
||||
CoreDispatcherPriority::Normal, ref new DispatchedHandler([]() {
|
||||
if (TraceLogger::GetInstance().IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
|
||||
if (TraceLogger::GetInstance()->IsWindowIdInLog(ApplicationView::GetApplicationViewIdForWindow(CoreWindow::GetForCurrentThread())))
|
||||
{
|
||||
AppLifecycleLogger::GetInstance().LaunchUIResponsive();
|
||||
AppLifecycleLogger::GetInstance().LaunchVisibleComplete();
|
||||
@@ -417,7 +418,7 @@ void MainPage::OnNavPaneOpening(_In_ MUXC::NavigationView ^ sender, _In_ Object
|
||||
void MainPage::OnNavPaneOpened(_In_ MUXC::NavigationView ^ sender, _In_ Object ^ args)
|
||||
{
|
||||
KeyboardShortcutManager::HonorShortcuts(false);
|
||||
TraceLogger::GetInstance().LogNavBarOpened();
|
||||
TraceLogger::GetInstance()->LogNavBarOpened();
|
||||
}
|
||||
|
||||
void MainPage::OnNavPaneClosed(_In_ MUXC::NavigationView ^ sender, _In_ Object ^ args)
|
||||
@@ -537,25 +538,20 @@ void MainPage::SetHeaderAutomationName()
|
||||
String ^ name;
|
||||
if (NavCategory::IsDateCalculatorViewMode(mode))
|
||||
{
|
||||
name = resProvider.GetResourceString(L"HeaderAutomationName_Date");
|
||||
name = resProvider->GetResourceString(L"HeaderAutomationName_Date");
|
||||
}
|
||||
else
|
||||
{
|
||||
wstring full;
|
||||
String ^ full;
|
||||
if (NavCategory::IsCalculatorViewMode(mode) || NavCategory::IsGraphingCalculatorViewMode(mode))
|
||||
{
|
||||
full = resProvider.GetResourceString(L"HeaderAutomationName_Calculator")->Data();
|
||||
full = resProvider->GetResourceString(L"HeaderAutomationName_Calculator");
|
||||
}
|
||||
else if (NavCategory::IsConverterViewMode(mode))
|
||||
{
|
||||
full = resProvider.GetResourceString(L"HeaderAutomationName_Converter")->Data();
|
||||
full = resProvider->GetResourceString(L"HeaderAutomationName_Converter");
|
||||
}
|
||||
|
||||
string::size_type found = full.find(L"%1");
|
||||
wstring strMode = m_model->CategoryName->Data();
|
||||
full = full.replace(found, 2, strMode);
|
||||
|
||||
name = ref new String(full.c_str());
|
||||
name = LocalizationStringUtil::GetLocalizedString(full, m_model->CategoryName);
|
||||
}
|
||||
|
||||
AutomationProperties::SetName(Header, name);
|
||||
|
@@ -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
|
||||
@@ -80,9 +80,9 @@ public
|
||||
void AnnounceCategoryName();
|
||||
|
||||
CalculatorApp::Calculator ^ m_calculator;
|
||||
GraphingCalculator^ m_graphingCalculator;
|
||||
CalculatorApp::UnitConverter ^ m_converter;
|
||||
CalculatorApp::DateCalculator ^ m_dateCalculator;
|
||||
CalculatorApp::GraphingCalculator^ m_graphingCalculator;
|
||||
Windows::Foundation::EventRegistrationToken m_windowSizeEventToken;
|
||||
CalculatorApp::ViewModel::ApplicationViewModel ^ m_model;
|
||||
Windows::Foundation::EventRegistrationToken m_accessibilitySettingsToken;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
<UserControl x:Class="CalculatorApp.NumberPad"
|
||||
<UserControl x:Class="CalculatorApp.NumberPad"
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:common="using:CalculatorApp.Common"
|
||||
@@ -112,7 +112,6 @@
|
||||
Grid.Row="3"
|
||||
Grid.Column="2"
|
||||
Style="{Binding ElementName=ControlRoot, Path=ButtonStyle}"
|
||||
Background="{ThemeResource AppBackgroundAltMediumLowBrush}"
|
||||
common:KeyboardShortcutManager.Character="."
|
||||
AutomationProperties.AutomationId="decimalSeparatorButton"
|
||||
ButtonId="Decimal"
|
||||
|
@@ -30,6 +30,7 @@ using namespace CalculatorApp::Common;
|
||||
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
|
||||
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, ButtonStyle);
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(NumberPad, CurrentRadixType);
|
||||
|
||||
NumberPad::NumberPad()
|
||||
: m_isErrorVisualState(false)
|
||||
@@ -51,7 +52,7 @@ NumberPad::NumberPad()
|
||||
this->Num9Button->Content = localizationSettings.GetDigitSymbolFromEnUsDigit('9');
|
||||
}
|
||||
|
||||
void NumberPad::ProgModeRadixChange()
|
||||
void NumberPad::OnCurrentRadixTypePropertyChanged(NumberBase /* oldValue */, NumberBase newValue)
|
||||
{
|
||||
Num0Button->IsEnabled = true;
|
||||
Num1Button->IsEnabled = true;
|
||||
@@ -64,10 +65,7 @@ void NumberPad::ProgModeRadixChange()
|
||||
Num8Button->IsEnabled = true;
|
||||
Num9Button->IsEnabled = true;
|
||||
|
||||
auto vm = safe_cast<StandardCalculatorViewModel ^>(this->DataContext);
|
||||
RADIX_TYPE radixType = vm->GetCurrentRadixType();
|
||||
|
||||
if (radixType == RADIX_TYPE::BIN_RADIX)
|
||||
if (newValue == NumberBase::BinBase)
|
||||
{
|
||||
Num2Button->IsEnabled = false;
|
||||
Num3Button->IsEnabled = false;
|
||||
@@ -78,7 +76,7 @@ void NumberPad::ProgModeRadixChange()
|
||||
Num8Button->IsEnabled = false;
|
||||
Num9Button->IsEnabled = false;
|
||||
}
|
||||
else if (radixType == RADIX_TYPE::OCT_RADIX)
|
||||
else if (newValue == NumberBase::OctBase)
|
||||
{
|
||||
Num8Button->IsEnabled = false;
|
||||
Num9Button->IsEnabled = false;
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
//
|
||||
@@ -10,6 +10,8 @@
|
||||
|
||||
#include "Views/NumberPad.g.h"
|
||||
#include "CalcViewModel/Common/KeyboardShortcutManager.h"
|
||||
#include "CalcViewModel/Common/NumberBase.h"
|
||||
#include "CalcManager/Header Files/RadixType.h"
|
||||
|
||||
namespace CalculatorApp
|
||||
{
|
||||
@@ -20,6 +22,7 @@ namespace CalculatorApp
|
||||
DEPENDENCY_PROPERTY_OWNER(NumberPad);
|
||||
|
||||
DEPENDENCY_PROPERTY(Windows::UI::Xaml::Style ^, ButtonStyle);
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT_AND_CALLBACK(CalculatorApp::Common::NumberBase, CurrentRadixType, CalculatorApp::Common::NumberBase::DecBase);
|
||||
|
||||
property bool IsErrorVisualState
|
||||
{
|
||||
@@ -27,9 +30,10 @@ namespace CalculatorApp
|
||||
void set(bool value);
|
||||
}
|
||||
|
||||
void ProgModeRadixChange();
|
||||
|
||||
private:
|
||||
void OnCurrentRadixTypePropertyChanged(CalculatorApp::Common::NumberBase oldValue, CalculatorApp::Common::NumberBase newValue);
|
||||
|
||||
|
||||
bool m_isErrorVisualState;
|
||||
};
|
||||
}
|
||||
|
@@ -10,24 +10,26 @@
|
||||
mc:Ignorable="d">
|
||||
<Grid>
|
||||
<local:CalculatorStandardOperators x:Name="StandardOperators"
|
||||
x:Load="{x:Bind Model.IsStandard, Mode=OneWay}"
|
||||
TabIndex="17"
|
||||
IsEnabled="{x:Bind Model.IsStandard, Mode=OneWay}"
|
||||
TabIndex="17"/>
|
||||
x:Load="{x:Bind Model.IsStandard, Mode=OneWay}"/>
|
||||
|
||||
<local:CalculatorScientificOperators x:Name="ScientificOperators"
|
||||
x:Load="False"
|
||||
IsEnabled="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
TabIndex="16"
|
||||
Visibility="{x:Bind Model.IsScientific, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsScientific, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
<local:CalculatorProgrammerBitFlipPanel x:Name="BitFlipPanel"
|
||||
x:Load="False"
|
||||
Visibility="{x:Bind Model.IsBinaryBitFlippingEnabled, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.IsBinaryBitFlippingEnabled, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.IsBinaryBitFlippingEnabled, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
<local:CalculatorProgrammerRadixOperators x:Name="ProgrammerRadixOperators"
|
||||
x:Load="False"
|
||||
TabIndex="16"
|
||||
Visibility="{x:Bind Model.AreProgrammerRadixOperatorsEnabled, Mode=OneWay}"/>
|
||||
Visibility="{x:Bind Model.AreProgrammerRadixOperatorsEnabled, Mode=OneWay}"
|
||||
IsEnabled="{x:Bind Model.AreProgrammerRadixOperatorsEnabled, Mode=OneWay}"
|
||||
x:Load="False"/>
|
||||
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include "pch.h"
|
||||
@@ -71,6 +71,11 @@ void OperatorsPanel::EnsureProgrammerRadixOps()
|
||||
{
|
||||
this->FindName(L"ProgrammerRadixOperators");
|
||||
}
|
||||
|
||||
if (ProgrammerRadixOperators)
|
||||
{
|
||||
ProgrammerRadixOperators->checkDefaultBitShift();
|
||||
}
|
||||
}
|
||||
|
||||
void OperatorsPanel::EnsureProgrammerBitFlipPanel()
|
||||
|
72
src/Calculator/Views/StateTriggers/ControlSizeTrigger.cpp
Normal file
72
src/Calculator/Views/StateTriggers/ControlSizeTrigger.cpp
Normal file
@@ -0,0 +1,72 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#include "pch.h"
|
||||
#include "ControlSizeTrigger.h"
|
||||
|
||||
using namespace CalculatorApp::Views::StateTriggers;
|
||||
using namespace Platform;
|
||||
using namespace Windows::Foundation;
|
||||
using namespace Windows::UI::Xaml;
|
||||
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, Source);
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, MinHeight);
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(ControlSizeTrigger, MinWidth);
|
||||
|
||||
ControlSizeTrigger::ControlSizeTrigger()
|
||||
{
|
||||
SetActive(false);
|
||||
}
|
||||
|
||||
ControlSizeTrigger::~ControlSizeTrigger()
|
||||
{
|
||||
UnregisterSizeChanged(Source);
|
||||
}
|
||||
|
||||
void ControlSizeTrigger::OnSourcePropertyChanged(FrameworkElement ^ oldValue, FrameworkElement ^ newValue)
|
||||
{
|
||||
UnregisterSizeChanged(oldValue);
|
||||
RegisterSizeChanged(newValue);
|
||||
}
|
||||
|
||||
void ControlSizeTrigger::RegisterSizeChanged(FrameworkElement ^ element)
|
||||
{
|
||||
if (element == nullptr)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (element != Source)
|
||||
{
|
||||
UnregisterSizeChanged(Source);
|
||||
}
|
||||
|
||||
m_sizeChangedToken = element->SizeChanged += ref new SizeChangedEventHandler(this, &ControlSizeTrigger::OnSizeChanged);
|
||||
UpdateIsActive(element->RenderSize);
|
||||
}
|
||||
|
||||
void ControlSizeTrigger::UnregisterSizeChanged(FrameworkElement ^ element)
|
||||
{
|
||||
if (element != nullptr && m_sizeChangedToken.Value != 0)
|
||||
{
|
||||
element->SizeChanged -= m_sizeChangedToken;
|
||||
m_sizeChangedToken.Value = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void ControlSizeTrigger::OnSizeChanged(Object ^ sender, SizeChangedEventArgs ^ e)
|
||||
{
|
||||
UpdateIsActive(e->NewSize);
|
||||
}
|
||||
|
||||
void ControlSizeTrigger::UpdateIsActive(Size sourceSize)
|
||||
{
|
||||
if (MinHeight >= 0)
|
||||
{
|
||||
SetActive(sourceSize.Height >= MinHeight && (MinWidth < 0 || sourceSize.Width >= MinWidth));
|
||||
}
|
||||
else
|
||||
{
|
||||
SetActive(MinWidth >= 0 && sourceSize.Width >= MinWidth);
|
||||
}
|
||||
}
|
37
src/Calculator/Views/StateTriggers/ControlSizeTrigger.h
Normal file
37
src/Calculator/Views/StateTriggers/ControlSizeTrigger.h
Normal file
@@ -0,0 +1,37 @@
|
||||
// Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
// Licensed under the MIT License.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "CalcViewModel/Common/Utils.h"
|
||||
|
||||
namespace CalculatorApp::Views::StateTriggers
|
||||
{
|
||||
public ref class ControlSizeTrigger sealed : public Windows::UI::Xaml::StateTriggerBase
|
||||
{
|
||||
public:
|
||||
ControlSizeTrigger();
|
||||
|
||||
DEPENDENCY_PROPERTY_OWNER(ControlSizeTrigger);
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_CALLBACK(Windows::UI::Xaml::FrameworkElement^, Source);
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinHeight, -1);
|
||||
|
||||
DEPENDENCY_PROPERTY_WITH_DEFAULT(double, MinWidth, -1);
|
||||
|
||||
private:
|
||||
~ControlSizeTrigger();
|
||||
|
||||
void OnSourcePropertyChanged(Windows::UI::Xaml::FrameworkElement^ oldValue, Windows::UI::Xaml::FrameworkElement^ newValue);
|
||||
|
||||
void RegisterSizeChanged(Windows::UI::Xaml::FrameworkElement^ element);
|
||||
void UnregisterSizeChanged(Windows::UI::Xaml::FrameworkElement^ element);
|
||||
void OnSizeChanged(Platform::Object^ sender, Windows::UI::Xaml::SizeChangedEventArgs^ e);
|
||||
|
||||
void UpdateIsActive(Windows::Foundation::Size sourceSize);
|
||||
|
||||
private:
|
||||
Windows::Foundation::EventRegistrationToken m_sizeChangedToken;
|
||||
};
|
||||
}
|
@@ -54,6 +54,10 @@
|
||||
AutomationProperties.AutomationId="ExitAlwaysOnTopButton"
|
||||
Click="AlwaysOnTopButton_Click"
|
||||
Content=""
|
||||
Visibility="Collapsed"/>
|
||||
Visibility="Collapsed">
|
||||
<Button.KeyboardAccelerators>
|
||||
<KeyboardAccelerator Modifiers="Menu" Key="Down"/>
|
||||
</Button.KeyboardAccelerators>
|
||||
</Button>
|
||||
</Grid>
|
||||
</UserControl>
|
||||
|
@@ -37,9 +37,9 @@ namespace CalculatorApp
|
||||
Loaded += ref new RoutedEventHandler(this, &TitleBar::OnLoaded);
|
||||
Unloaded += ref new RoutedEventHandler(this, &TitleBar::OnUnloaded);
|
||||
#ifdef IS_STORE_BUILD
|
||||
AppName->Text = AppResourceProvider::GetInstance().GetResourceString(L"AppName");
|
||||
AppName->Text = AppResourceProvider::GetInstance()->GetResourceString(L"AppName");
|
||||
#else
|
||||
AppName->Text = AppResourceProvider::GetInstance().GetResourceString(L"DevAppName");
|
||||
AppName->Text = AppResourceProvider::GetInstance()->GetResourceString(L"DevAppName");
|
||||
#endif // IS_STORE_BUILD
|
||||
}
|
||||
|
||||
|
@@ -260,14 +260,6 @@
|
||||
</DoubleAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
|
||||
<Storyboard x:Name="TimestampFadeInAnimation">
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="CurrencyTimestampTextBlock"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
</Storyboard>
|
||||
|
||||
<MenuFlyout x:Key="CalculationResultContextMenu">
|
||||
<MenuFlyoutItem x:Name="CopyMenuItem"
|
||||
x:Uid="CopyMenuItem"
|
||||
@@ -448,14 +440,85 @@
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
<VisualStateGroup x:Name="CurrencyLoadingStates">
|
||||
<VisualStateGroup.Transitions>
|
||||
<VisualTransition From="CurrencyLoadingState" To="CurrencyLoadedState">
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Units1" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Value1Container" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Units2" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="Value2Container" Storyboard.TargetProperty="Visibility">
|
||||
<DiscreteObjectKeyFrame KeyTime="0:0:0" Value="Visible"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="CurrencyRatioEqualityBlock"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="CurrencyTimestampTextBlock"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="Units1"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="Value1Container"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="Units2"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
<DoubleAnimation Duration="0:0:1"
|
||||
From="0"
|
||||
Storyboard.TargetName="Value2Container"
|
||||
Storyboard.TargetProperty="Opacity"
|
||||
To="1"/>
|
||||
</Storyboard>
|
||||
</VisualTransition>
|
||||
</VisualStateGroup.Transitions>
|
||||
<VisualState x:Name="CurrencyLoadingState">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CurrencyRatioEqualityBlock.Opacity" Value="0"/>
|
||||
<Setter Target="CurrencyTimestampTextBlock.Opacity" Value="0"/>
|
||||
<Setter Target="CurrencyLoadingGrid.Visibility" Value="Visible"/>
|
||||
<Setter Target="Units1.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="Value1Container.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="Units2.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="Value2Container.Visibility" Value="Collapsed"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="CurrencyLoadedState">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="CurrencyRatioEqualityBlock.Opacity" Value="1"/>
|
||||
<Setter Target="CurrencyTimestampTextBlock.Opacity" Value="1"/>
|
||||
<Setter Target="CurrencyLoadingGrid.Visibility" Value="Collapsed"/>
|
||||
<Setter Target="Units1.Visibility" Value="Visible"/>
|
||||
<Setter Target="Value1Container.Visibility" Value="Visible"/>
|
||||
<Setter Target="Units2.Visibility" Value="Visible"/>
|
||||
<Setter Target="Value2Container.Visibility" Value="Visible"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
|
||||
<Grid x:Name="CurrencyLoadingGrid"
|
||||
Grid.Row="1"
|
||||
Grid.RowSpan="5"
|
||||
Grid.Column="0"
|
||||
Grid.ColumnSpan="4"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityConverter}}">
|
||||
Grid.ColumnSpan="4">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="10*"/>
|
||||
<RowDefinition Height="7*"/>
|
||||
@@ -475,8 +538,7 @@
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
|
||||
Style="{ThemeResource ValueContainerStyle}"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}">
|
||||
Style="{ThemeResource ValueContainerStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
@@ -520,15 +582,13 @@
|
||||
ItemTemplate="{StaticResource UnitTemplate}"
|
||||
ItemsSource="{Binding Units, Converter={StaticResource AlwaysSelectedConverter}}"
|
||||
SelectedItem="{Binding Unit1, Mode=TwoWay, Converter={StaticResource ValidSelectedItemConverter}}"
|
||||
TabIndex="2"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
|
||||
TabIndex="2"/>
|
||||
|
||||
<Grid x:Name="Value2Container"
|
||||
Grid.Row="3"
|
||||
Grid.Column="1"
|
||||
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
|
||||
Style="{ThemeResource ValueContainerStyle}"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}">
|
||||
Style="{ThemeResource ValueContainerStyle}">
|
||||
<Grid.ColumnDefinitions>
|
||||
<ColumnDefinition Width="Auto"/>
|
||||
<ColumnDefinition Width="*"/>
|
||||
@@ -572,8 +632,7 @@
|
||||
ItemTemplate="{StaticResource UnitTemplate}"
|
||||
ItemsSource="{Binding Units, Converter={StaticResource AlwaysSelectedConverter}}"
|
||||
SelectedItem="{Binding Unit2, Mode=TwoWay, Converter={StaticResource ValidSelectedItemConverter}}"
|
||||
TabIndex="4"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}"/>
|
||||
TabIndex="4"/>
|
||||
|
||||
<StackPanel x:Name="SupplementaryResultsPanelInGrid"
|
||||
Grid.Row="5"
|
||||
@@ -583,8 +642,7 @@
|
||||
HorizontalAlignment="{x:Bind FlowDirectionHorizontalAlignment}"
|
||||
VerticalAlignment="Top"
|
||||
FlowDirection="{x:Bind LayoutDirection}"
|
||||
SizeChanged="SupplementaryResultsPanelInGrid_SizeChanged"
|
||||
Visibility="{x:Bind Model.IsCurrencyLoadingVisible, Mode=OneWay, Converter={StaticResource BooleanToVisibilityNegationConverter}}">
|
||||
SizeChanged="SupplementaryResultsPanelInGrid_SizeChanged">
|
||||
<local:SupplementaryResults x:Name="SupplementaryResults"
|
||||
HorizontalAlignment="Left"
|
||||
VerticalAlignment="Center"
|
||||
@@ -644,7 +702,8 @@
|
||||
Grid.Column="1"
|
||||
Margin="3,0,3,3"
|
||||
FlowDirection="LeftToRight"
|
||||
RenderTransformOrigin="0.5,0.5">
|
||||
RenderTransformOrigin="0.5,0.5"
|
||||
XYFocusKeyboardNavigation="Enabled">
|
||||
<Grid.RenderTransform>
|
||||
<CompositeTransform/>
|
||||
</Grid.RenderTransform>
|
||||
@@ -703,7 +762,7 @@
|
||||
x:Uid="converterNegateButton"
|
||||
Grid.Row="4"
|
||||
Grid.Column="0"
|
||||
Style="{StaticResource SymbolOperatorButtonStyle}"
|
||||
Style="{StaticResource SymbolOperatorKeypadButtonStyle}"
|
||||
FontSize="16"
|
||||
ButtonId="Negate"
|
||||
Content=""
|
||||
|
@@ -40,8 +40,6 @@ using namespace Windows::UI::Xaml::Media;
|
||||
using namespace Windows::UI::Xaml::Navigation;
|
||||
using namespace Windows::UI::ViewManagement;
|
||||
|
||||
// The User Control item template is documented at https://go.microsoft.com/fwlink/?LinkId=234236
|
||||
|
||||
// Calculate number of 100-nanosecond intervals in 500 milliseconds.
|
||||
// There are 10,000 intervals in 1 ms.
|
||||
static const long long DURATION_500_MS = 10000 * 500;
|
||||
@@ -66,14 +64,14 @@ UnitConverter::UnitConverter()
|
||||
m_isAnimationEnabled = userSettings->AnimationsEnabled;
|
||||
|
||||
auto resLoader = AppResourceProvider::GetInstance();
|
||||
m_chargesMayApplyText = resLoader.GetResourceString(L"DataChargesMayApply");
|
||||
m_failedToRefreshText = resLoader.GetResourceString(L"FailedToRefresh");
|
||||
m_chargesMayApplyText = resLoader->GetResourceString(L"DataChargesMayApply");
|
||||
m_failedToRefreshText = resLoader->GetResourceString(L"FailedToRefresh");
|
||||
|
||||
InitializeOfflineStatusTextBlock();
|
||||
|
||||
m_resultsFlyout = static_cast<MenuFlyout ^>(Resources->Lookup(L"CalculationResultContextMenu"));
|
||||
CopyMenuItem->Text = resLoader.GetResourceString(L"copyMenuItem");
|
||||
PasteMenuItem->Text = resLoader.GetResourceString(L"pasteMenuItem");
|
||||
CopyMenuItem->Text = resLoader->GetResourceString(L"copyMenuItem");
|
||||
PasteMenuItem->Text = resLoader->GetResourceString(L"pasteMenuItem");
|
||||
}
|
||||
|
||||
void UnitConverter::OnPropertyChanged(_In_ Object ^ sender, _In_ PropertyChangedEventArgs ^ e)
|
||||
@@ -165,7 +163,7 @@ void UnitConverter::SetFailedToRefreshStatus()
|
||||
void UnitConverter::InitializeOfflineStatusTextBlock()
|
||||
{
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
std::wstring offlineStatusHyperlinkText = static_cast<String ^>(resProvider.GetResourceString(L"OfflineStatusHyperlinkText"))->Data();
|
||||
std::wstring offlineStatusHyperlinkText = resProvider->GetResourceString(L"OfflineStatusHyperlinkText")->Data();
|
||||
|
||||
// The resource string has the 'NetworkSettings' hyperlink wrapped with '%HL%'.
|
||||
// Break the string and assign pieces appropriately.
|
||||
@@ -245,9 +243,9 @@ void UnitConverter::OnCopyMenuItemClicked(_In_ Object ^ sender, _In_ RoutedEvent
|
||||
|
||||
void UnitConverter::OnPasteMenuItemClicked(_In_ Object ^ sender, _In_ RoutedEventArgs ^ e)
|
||||
{
|
||||
CopyPasteManager::GetStringToPaste(Model->Mode, CategoryGroupType::Converter).then([this](String ^ pastedString) {
|
||||
Model->OnPaste(pastedString);
|
||||
});
|
||||
auto that(this);
|
||||
create_task(CopyPasteManager::GetStringToPaste(Model->Mode, CategoryGroupType::Converter, NumberBase::Unknown, BitLength::BitLengthUnknown))
|
||||
.then([that](String ^ pastedString) { that->Model->OnPaste(pastedString); });
|
||||
}
|
||||
|
||||
void UnitConverter::AnimateConverter()
|
||||
@@ -291,12 +289,17 @@ void UnitConverter::SetDefaultFocus()
|
||||
|
||||
void UnitConverter::CurrencyRefreshButton_Click(_In_ Object ^ /*sender*/, _In_ RoutedEventArgs ^ /*e*/)
|
||||
{
|
||||
if (Model->NetworkBehavior == NetworkAccessBehavior::OptIn)
|
||||
// If IsCurrencyLoadingVisible is true that means CurrencyRefreshButton_Click was recently called
|
||||
// and is still executing. In this case there is no reason to process the click.
|
||||
if (!Model->IsCurrencyLoadingVisible)
|
||||
{
|
||||
m_meteredConnectionOverride = true;
|
||||
}
|
||||
if (Model->NetworkBehavior == NetworkAccessBehavior::OptIn)
|
||||
{
|
||||
m_meteredConnectionOverride = true;
|
||||
}
|
||||
|
||||
Model->RefreshCurrencyRatios();
|
||||
Model->RefreshCurrencyRatios();
|
||||
}
|
||||
}
|
||||
|
||||
void UnitConverter::OnDataContextChanged(_In_ FrameworkElement ^ sender, _In_ DataContextChangedEventArgs ^ args)
|
||||
@@ -320,15 +323,16 @@ void UnitConverter::OnIsDisplayVisibleChanged()
|
||||
{
|
||||
if (Model->IsCurrencyLoadingVisible)
|
||||
{
|
||||
VisualStateManager::GoToState(this, L"CurrencyLoadingState", false);
|
||||
StartProgressRingWithDelay();
|
||||
}
|
||||
else
|
||||
{
|
||||
HideProgressRing();
|
||||
|
||||
if (m_isAnimationEnabled && Model->IsCurrencyCurrentCategory && !Model->CurrencyTimestamp->IsEmpty())
|
||||
if (Model->IsCurrencyCurrentCategory && !Model->CurrencyTimestamp->IsEmpty())
|
||||
{
|
||||
TimestampFadeInAnimation->Begin();
|
||||
VisualStateManager::GoToState(this, L"CurrencyLoadedState", m_isAnimationEnabled);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -373,6 +377,5 @@ void CalculatorApp::UnitConverter::SupplementaryResultsPanelInGrid_SizeChanged(P
|
||||
void CalculatorApp::UnitConverter::OnVisualStateChanged(Platform::Object ^ sender, Windows::UI::Xaml::VisualStateChangedEventArgs ^ e)
|
||||
{
|
||||
auto mode = NavCategory::Deserialize(Model->CurrentCategory->GetModelCategory().id);
|
||||
auto state = std::wstring(e->NewState->Name->Begin());
|
||||
TraceLogger::GetInstance().LogVisualStateChanged(mode, state);
|
||||
TraceLogger::GetInstance()->LogVisualStateChanged(mode, e->NewState->Name, false);
|
||||
}
|
||||
|
Reference in New Issue
Block a user