Redesign graph buttons + replace ActiveTracing button by a ToggleButton (#864)
* redesign graph buttons * fix high-contrast and focus
This commit is contained in:
parent
f593c621aa
commit
f282605bc6
@ -2,7 +2,6 @@
|
||||
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
|
||||
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
|
||||
xmlns:contract7Present="http://schemas.microsoft.com/winfx/2006/xaml/presentation?IsApiContractPresent(Windows.Foundation.UniversalApiContract,7)"
|
||||
xmlns:controls="using:CalculatorApp.Controls"
|
||||
xmlns:converters="using:CalculatorApp.Converters"
|
||||
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
|
||||
xmlns:graphControl="using:GraphControl"
|
||||
@ -15,64 +14,36 @@
|
||||
|
||||
<UserControl.Resources>
|
||||
<ResourceDictionary>
|
||||
|
||||
<converters:ItemSizeToVisibilityConverter x:Key="ItemSizeToVisibilityConverter"/>
|
||||
|
||||
<Style x:Key="GraphButtonStyle" TargetType="Button">
|
||||
<Style x:Key="GraphToggleButtonStyle" TargetType="ToggleButton">
|
||||
<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}"/>
|
||||
<Setter Property="Background" Value="{ThemeResource AppControlTransparentButtonBackgroundBrush}"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="BorderBrush" Value="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
<Setter Property="Margin" Value="-1"/>
|
||||
<Setter Property="Padding" Value="8"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="VerticalAlignment" Value="Stretch"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="FontSize" Value="{StaticResource CaptionFontSize}"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="Button">
|
||||
<ContentPresenter x:Name="ContentPresenter"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
HorizontalAlignment="{TemplateBinding HorizontalAlignment}"
|
||||
VerticalAlignment="{TemplateBinding VerticalAlignment}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
FontSize="{TemplateBinding FontSize}"
|
||||
FontWeight="SemiBold"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
ContentTransitions="{TemplateBinding ContentTransitions}">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="CommonStates">
|
||||
<VisualState x:Name="Normal"/>
|
||||
<VisualState x:Name="PointerOver">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentPresenter.Background" Value="{ThemeResource AppControlHoverButtonFaceBrush}"/>
|
||||
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource AppControlForegroundAccentBrush}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Pressed">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentPresenter.Background" Value="{ThemeResource AppControlPressedButtonFaceBrush}"/>
|
||||
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource AppControlForegroundAccentBrush}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
<VisualState x:Name="Disabled">
|
||||
<VisualState.Setters>
|
||||
<Setter Target="ContentPresenter.Foreground" Value="{ThemeResource SystemControlDisabledBaseLowBrush}"/>
|
||||
</VisualState.Setters>
|
||||
</VisualState>
|
||||
</VisualStateGroup>
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
</ContentPresenter>
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
<Setter Property="FontWeight" Value="Normal"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="GraphButtonStyle" TargetType="Button">
|
||||
<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}"/>
|
||||
<Setter Property="Background" Value="Transparent"/>
|
||||
<Setter Property="BorderBrush" Value="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Margin" Value="-1"/>
|
||||
<Setter Property="Padding" Value="8"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="VerticalAlignment" Value="Stretch"/>
|
||||
<Setter Property="HorizontalContentAlignment" Value="Center"/>
|
||||
<Setter Property="VerticalContentAlignment" Value="Center"/>
|
||||
<Setter Property="FontSize" Value="{StaticResource CaptionFontSize}"/>
|
||||
<Setter Property="FontWeight" Value="Normal"/>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="GraphRepeatButtonStyle" TargetType="RepeatButton">
|
||||
@ -80,7 +51,7 @@
|
||||
<Setter Property="Foreground" Value="{ThemeResource RepeatButtonForeground}"/>
|
||||
<Setter Property="BorderBrush" Value="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="Margin" Value="0"/>
|
||||
<Setter Property="Margin" Value="-1"/>
|
||||
<Setter Property="Padding" Value="0"/>
|
||||
<Setter Property="HorizontalAlignment" Value="Stretch"/>
|
||||
<Setter Property="VerticalAlignment" Value="Stretch"/>
|
||||
@ -93,78 +64,6 @@
|
||||
<Setter Property="FontSize" Value="{ThemeResource ControlContentThemeFontSize}"/>
|
||||
<Setter Property="UseSystemFocusVisuals" Value="{StaticResource UseSystemFocusVisuals}"/>
|
||||
<Setter Property="FocusVisualMargin" Value="-3"/>
|
||||
<Setter Property="Template">
|
||||
<Setter.Value>
|
||||
<ControlTemplate TargetType="RepeatButton">
|
||||
<ContentPresenter x:Name="ContentPresenter"
|
||||
Padding="{TemplateBinding Padding}"
|
||||
HorizontalContentAlignment="{TemplateBinding HorizontalContentAlignment}"
|
||||
VerticalContentAlignment="{TemplateBinding VerticalContentAlignment}"
|
||||
Background="{TemplateBinding Background}"
|
||||
BorderBrush="{TemplateBinding BorderBrush}"
|
||||
BorderThickness="{TemplateBinding BorderThickness}"
|
||||
AutomationProperties.AccessibilityView="Raw"
|
||||
Content="{TemplateBinding Content}"
|
||||
ContentTemplate="{TemplateBinding ContentTemplate}"
|
||||
ContentTransitions="{TemplateBinding ContentTransitions}"
|
||||
CornerRadius="{TemplateBinding CornerRadius}">
|
||||
<VisualStateManager.VisualStateGroups>
|
||||
<VisualStateGroup x:Name="CommonStates">
|
||||
<VisualState x:Name="Normal"/>
|
||||
|
||||
<VisualState x:Name="PointerOver">
|
||||
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlHoverButtonFaceBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlForegroundAccentBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="Pressed">
|
||||
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlHoverButtonFaceBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlForegroundTransparentRevealBorderBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlForegroundAccentBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
|
||||
<VisualState x:Name="Disabled">
|
||||
|
||||
<Storyboard>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Background">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource AppControlTransparentButtonBackgroundBrush}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="BorderBrush">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource RepeatButtonBorderBrushDisabled}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="ContentPresenter" Storyboard.TargetProperty="Foreground">
|
||||
<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource RepeatButtonForegroundDisabled}"/>
|
||||
</ObjectAnimationUsingKeyFrames>
|
||||
</Storyboard>
|
||||
</VisualState>
|
||||
|
||||
</VisualStateGroup>
|
||||
|
||||
</VisualStateManager.VisualStateGroups>
|
||||
</ContentPresenter>
|
||||
|
||||
</ControlTemplate>
|
||||
</Setter.Value>
|
||||
</Setter>
|
||||
</Style>
|
||||
|
||||
<Style x:Key="SwitchModeToggleButtonStyle" TargetType="ToggleButton">
|
||||
@ -321,14 +220,52 @@
|
||||
<Style x:Key="ThemedSwitchModeToggleButtonStyle"
|
||||
BasedOn="{StaticResource SwitchModeToggleButtonStyle}"
|
||||
TargetType="ToggleButton"/>
|
||||
<Style x:Key="GraphControlCommandPanel" TargetType="Border">
|
||||
<Setter Property="Background" Value="#80000000"/>
|
||||
<Setter Property="CornerRadius" Value="4"/>
|
||||
</Style>
|
||||
<Style x:Key="ThemedGraphRepeatButtonStyle"
|
||||
BasedOn="{StaticResource GraphRepeatButtonStyle}"
|
||||
TargetType="RepeatButton"/>
|
||||
<Style x:Key="ThemedGraphButtonStyle"
|
||||
BasedOn="{StaticResource GraphButtonStyle}"
|
||||
TargetType="Button"/>
|
||||
<Style x:Key="ThemedGraphToggleButtonStyle"
|
||||
BasedOn="{StaticResource GraphToggleButtonStyle}"
|
||||
TargetType="ToggleButton"/>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="Dark">
|
||||
<ResourceDictionary x:Key="Light">
|
||||
<Style x:Key="ThemedSwitchModeToggleButtonStyle"
|
||||
BasedOn="{StaticResource SwitchModeToggleButtonStyle}"
|
||||
TargetType="ToggleButton"/>
|
||||
<Style x:Key="GraphControlCommandPanel" TargetType="Border">
|
||||
<Setter Property="Background" Value="{StaticResource SystemControlAcrylicElementBrush}"/>
|
||||
<Setter Property="BorderBrush" Value="#e0e0e0"/>
|
||||
<Setter Property="BorderThickness" Value="1"/>
|
||||
<Setter Property="CornerRadius" Value="4"/>
|
||||
</Style>
|
||||
<Style x:Key="ThemedGraphRepeatButtonStyle"
|
||||
BasedOn="{StaticResource GraphRepeatButtonStyle}"
|
||||
TargetType="RepeatButton"/>
|
||||
<Style x:Key="ThemedGraphButtonStyle"
|
||||
BasedOn="{StaticResource GraphButtonStyle}"
|
||||
TargetType="Button"/>
|
||||
<Style x:Key="ThemedGraphToggleButtonStyle"
|
||||
BasedOn="{StaticResource GraphToggleButtonStyle}"
|
||||
TargetType="ToggleButton"/>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="HighContrast">
|
||||
<Style x:Key="ThemedSwitchModeToggleButtonStyle" TargetType="ToggleButton"/>
|
||||
<Style x:Key="GraphControlCommandPanel" TargetType="Border"/>
|
||||
<Style x:Key="ThemedGraphRepeatButtonStyle" TargetType="RepeatButton">
|
||||
<Setter Property="Margin" Value="1"/>
|
||||
</Style>
|
||||
<Style x:Key="ThemedGraphButtonStyle" TargetType="Button">
|
||||
<Setter Property="Margin" Value="1"/>
|
||||
</Style>
|
||||
<Style x:Key="ThemedGraphToggleButtonStyle" TargetType="ToggleButton">
|
||||
<Setter Property="Margin" Value="1"/>
|
||||
</Style>
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
</ResourceDictionary>
|
||||
@ -384,8 +321,36 @@
|
||||
<!-- Left portion of the screen -->
|
||||
<Grid x:Name="LeftGrid"
|
||||
Grid.Row="1"
|
||||
Padding="0,4,0,0"
|
||||
Visibility="{x:Bind ShouldDisplayPanel(IsSmallState, SwitchModeToggleButton.IsChecked.Value, x:True), Mode=OneWay}">
|
||||
<Grid Grid.Row="0" Margin="0,4,0,0">
|
||||
<Grid.Resources>
|
||||
<ResourceDictionary>
|
||||
<ResourceDictionary.ThemeDictionaries>
|
||||
<ResourceDictionary x:Key="Light">
|
||||
<SolidColorBrush x:Key="ButtonBackgroundPointerOver" Color="#10000000"/>
|
||||
<SolidColorBrush x:Key="ButtonBackgroundPressed" Color="#20000000"/>
|
||||
<SolidColorBrush x:Key="RepeatButtonBackgroundPointerOver" Color="#10000000"/>
|
||||
<SolidColorBrush x:Key="RepeatButtonBackgroundPressed" Color="#20000000"/>
|
||||
<CornerRadius x:Key="TopButtonCornerRadius">4,4,0,0</CornerRadius>
|
||||
<CornerRadius x:Key="BottomButtonCornerRadius">0,0,4,4</CornerRadius>
|
||||
<CornerRadius x:Key="LeftButtonCornerRadius">4,0,0,4</CornerRadius>
|
||||
<CornerRadius x:Key="RightButtonCornerRadius">0,4,4,0</CornerRadius>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="Dark">
|
||||
<CornerRadius x:Key="TopButtonCornerRadius">4,4,0,0</CornerRadius>
|
||||
<CornerRadius x:Key="BottomButtonCornerRadius">0,0,4,4</CornerRadius>
|
||||
<CornerRadius x:Key="LeftButtonCornerRadius">4,0,0,4</CornerRadius>
|
||||
<CornerRadius x:Key="RightButtonCornerRadius">0,4,4,0</CornerRadius>
|
||||
</ResourceDictionary>
|
||||
<ResourceDictionary x:Key="HighContrast">
|
||||
<CornerRadius x:Key="TopButtonCornerRadius">0</CornerRadius>
|
||||
<CornerRadius x:Key="BottomButtonCornerRadius">0</CornerRadius>
|
||||
<CornerRadius x:Key="LeftButtonCornerRadius">0</CornerRadius>
|
||||
<CornerRadius x:Key="RightButtonCornerRadius">0</CornerRadius>
|
||||
</ResourceDictionary>
|
||||
</ResourceDictionary.ThemeDictionaries>
|
||||
</ResourceDictionary>
|
||||
</Grid.Resources>
|
||||
<graphControl:Grapher Name="GraphingControl"
|
||||
ForceProportionalAxes="True"
|
||||
LosingFocus="GraphingControl_LosingFocus"
|
||||
@ -397,20 +362,22 @@
|
||||
</graphControl:Grapher.Background>
|
||||
</graphControl:Grapher>
|
||||
|
||||
<StackPanel Margin="0,12,12,0"
|
||||
<Border MinHeight="36"
|
||||
Margin="0,12,12,0"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Top"
|
||||
Orientation="Horizontal">
|
||||
Style="{ThemeResource GraphControlCommandPanel}"
|
||||
RequestedTheme="Light">
|
||||
<StackPanel Orientation="Horizontal">
|
||||
<!-- Temporary button until the final UI is created -->
|
||||
<Button x:Name="VariableEditing"
|
||||
x:Uid="variablesButton"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0,0,4,0"
|
||||
Style="{StaticResource GraphButtonStyle}"
|
||||
RequestedTheme="Light"
|
||||
MinWidth="40"
|
||||
Style="{ThemeResource ThemedGraphButtonStyle}"
|
||||
Visibility="{x:Bind local:GraphingCalculator.ManageEditVariablesButtonVisibility(ViewModel.Variables.Size), Mode=OneWay}">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="18"
|
||||
Glyph=""/>
|
||||
<Button.Flyout>
|
||||
<Flyout Placement="BottomEdgeAlignedLeft">
|
||||
<Flyout.FlyoutPresenterStyle>
|
||||
@ -574,95 +541,80 @@
|
||||
</Button.Flyout>
|
||||
</Button>
|
||||
|
||||
<Button x:Name="ActiveTracing"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0,0,4,0"
|
||||
Style="{StaticResource GraphButtonStyle}"
|
||||
Click="OnActiveTracingClick"
|
||||
RequestedTheme="Light">
|
||||
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}" Glyph=""/>
|
||||
</Button>
|
||||
<ToggleButton x:Name="ActiveTracing"
|
||||
MinWidth="40"
|
||||
Margin="0,-1"
|
||||
Style="{ThemeResource ThemedGraphToggleButtonStyle}"
|
||||
contract7Present:CornerRadius="{ThemeResource LeftButtonCornerRadius}"
|
||||
AutomationProperties.Name="{x:Bind local:GraphingCalculator.GetTracingLegend(GraphingControl.ActiveTracing), Mode=OneWay}"
|
||||
Checked="ActiveTracing_Checked"
|
||||
IsChecked="{x:Bind GraphingControl.ActiveTracing, Mode=TwoWay}"
|
||||
Unchecked="ActiveTracing_Unchecked">
|
||||
<ToolTipService.ToolTip>
|
||||
<ToolTip Content="{x:Bind ActiveTracing.(AutomationProperties.Name), Mode=OneWay}"/>
|
||||
</ToolTipService.ToolTip>
|
||||
<FontIcon FontFamily="{StaticResource CalculatorFontFamily}"
|
||||
FontSize="18"
|
||||
Glyph=""/>
|
||||
</ToggleButton>
|
||||
|
||||
<Button x:Name="Share"
|
||||
x:Uid="shareButton"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0"
|
||||
Style="{StaticResource GraphButtonStyle}"
|
||||
Click="OnShareClick"
|
||||
RequestedTheme="Light">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}" Glyph=""/>
|
||||
MinWidth="40"
|
||||
Style="{ThemeResource ThemedGraphButtonStyle}"
|
||||
contract7Present:CornerRadius="{ThemeResource RightButtonCornerRadius}"
|
||||
Click="OnShareClick">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="18"
|
||||
Glyph=""/>
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
<StackPanel Grid.Row="0"
|
||||
</Border>
|
||||
<Border MinWidth="36"
|
||||
Margin="0,0,12,12"
|
||||
HorizontalAlignment="Right"
|
||||
VerticalAlignment="Bottom"
|
||||
Orientation="Vertical">
|
||||
Style="{ThemeResource GraphControlCommandPanel}"
|
||||
RequestedTheme="Light">
|
||||
<StackPanel Orientation="Vertical">
|
||||
|
||||
<RepeatButton x:Uid="zoomInButton"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0,0,0,4"
|
||||
Style="{ThemeResource GraphRepeatButtonStyle}"
|
||||
MinHeight="40"
|
||||
HorizontalAlignment="Stretch"
|
||||
Style="{ThemeResource ThemedGraphRepeatButtonStyle}"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
contract7Present:CornerRadius="{ThemeResource TopButtonCornerRadius}"
|
||||
AutomationProperties.AutomationId="zoomInButton"
|
||||
Command="{x:Bind ZoomInButtonPressed, Mode=OneTime}"
|
||||
RequestedTheme="Light">
|
||||
<Grid>
|
||||
Command="{x:Bind ZoomInButtonPressed, Mode=OneTime}">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="26"
|
||||
FontWeight="ExtraLight"
|
||||
Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="16"
|
||||
FontSize="14"
|
||||
Glyph=""/>
|
||||
</Grid>
|
||||
</RepeatButton>
|
||||
|
||||
<RepeatButton x:Uid="zoomOutButton"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0,0,0,4"
|
||||
Style="{ThemeResource GraphRepeatButtonStyle}"
|
||||
MinHeight="40"
|
||||
HorizontalAlignment="Stretch"
|
||||
Style="{ThemeResource ThemedGraphRepeatButtonStyle}"
|
||||
FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
AutomationProperties.AutomationId="zoomOutButton"
|
||||
Command="{x:Bind ZoomOutButtonPressed, Mode=OneTime}"
|
||||
RequestedTheme="Light">
|
||||
<Grid>
|
||||
Command="{x:Bind ZoomOutButtonPressed, Mode=OneTime}">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="26"
|
||||
FontWeight="ExtraLight"
|
||||
Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="16"
|
||||
FontSize="14"
|
||||
Glyph=""/>
|
||||
</Grid>
|
||||
</RepeatButton>
|
||||
|
||||
<Button x:Uid="zoomResetButton"
|
||||
MinWidth="44"
|
||||
MinHeight="44"
|
||||
Margin="0,0,0,0"
|
||||
Style="{ThemeResource GraphButtonStyle}"
|
||||
MinHeight="40"
|
||||
Style="{ThemeResource ThemedGraphButtonStyle}"
|
||||
contract7Present:CornerRadius="{ThemeResource BottomButtonCornerRadius}"
|
||||
AutomationProperties.AutomationId="zoomResetButton"
|
||||
Command="{x:Bind ZoomResetButtonPressed, Mode=OneTime}"
|
||||
RequestedTheme="Light">
|
||||
<Grid>
|
||||
Command="{x:Bind ZoomResetButtonPressed, Mode=OneTime}">
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="26"
|
||||
FontWeight="ExtraLight"
|
||||
Glyph=""/>
|
||||
<FontIcon FontFamily="{StaticResource SymbolThemeFontFamily}"
|
||||
FontSize="16"
|
||||
FontSize="14"
|
||||
Glyph=""/>
|
||||
</Grid>
|
||||
|
||||
</Button>
|
||||
</StackPanel>
|
||||
|
||||
</Border>
|
||||
<Border x:Name="TraceValuePopup"
|
||||
Padding="{ThemeResource ToolTipBorderThemePadding}"
|
||||
HorizontalAlignment="Left"
|
||||
@ -684,8 +636,6 @@
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
</Grid>
|
||||
|
||||
<!-- Right portion of the screen -->
|
||||
<Grid x:Name="RightGrid"
|
||||
Grid.Row="1"
|
||||
|
@ -52,19 +52,11 @@ constexpr auto sc_ViewModelPropertyName = L"ViewModel";
|
||||
DEPENDENCY_PROPERTY_INITIALIZATION(GraphingCalculator, IsSmallState);
|
||||
|
||||
GraphingCalculator::GraphingCalculator()
|
||||
: ActiveTracingOn(false)
|
||||
{
|
||||
Equation::RegisterDependencyProperties();
|
||||
Grapher::RegisterDependencyProperties();
|
||||
InitializeComponent();
|
||||
|
||||
auto toolTip = ref new ToolTip();
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
auto tracingMessage = ActiveTracingOn ? resProvider->GetResourceString(L"disableTracingButtonToolTip") : resProvider->GetResourceString(L"enableTracingButtonToolTip");
|
||||
toolTip->Content = tracingMessage;
|
||||
ToolTipService::SetToolTip(ActiveTracing, toolTip);
|
||||
AutomationProperties::SetName(ActiveTracing, tracingMessage);
|
||||
|
||||
DataTransferManager ^ dataTransferManager = DataTransferManager::GetForCurrentView();
|
||||
|
||||
// Register the current control as a share source.
|
||||
@ -383,23 +375,39 @@ void GraphingCalculator::OnZoomResetCommand(Object ^ /* parameter */)
|
||||
GraphingControl->ResetGrid();
|
||||
}
|
||||
|
||||
void GraphingCalculator::OnActiveTracingClick(Object ^ sender, RoutedEventArgs ^ e)
|
||||
String ^ GraphingCalculator::GetTracingLegend(Platform::IBox<bool> ^ isTracing)
|
||||
{
|
||||
// The focus change to this button will have turned off the tracing if it was on
|
||||
ActiveTracingOn = !ActiveTracingOn;
|
||||
GraphingControl->ActiveTracing = ActiveTracingOn;
|
||||
|
||||
auto toolTip = ref new ToolTip();
|
||||
auto resProvider = AppResourceProvider::GetInstance();
|
||||
auto tracingMessage = ActiveTracingOn ? resProvider->GetResourceString(L"disableTracingButtonToolTip") : resProvider->GetResourceString(L"enableTracingButtonToolTip");
|
||||
toolTip->Content = tracingMessage;
|
||||
ToolTipService::SetToolTip(ActiveTracing, toolTip);
|
||||
AutomationProperties::SetName(ActiveTracing, tracingMessage);
|
||||
return isTracing != nullptr && isTracing->Value ? resProvider->GetResourceString(L"disableTracingButtonToolTip")
|
||||
: resProvider->GetResourceString(L"enableTracingButtonToolTip");
|
||||
}
|
||||
|
||||
void GraphingCalculator::GraphingControl_LostFocus(Object ^ sender, RoutedEventArgs ^ e)
|
||||
{
|
||||
// If the graph is losing focus while we are in active tracing we need to turn it off so we don't try to eat keys in other controls.
|
||||
if (GraphingControl->ActiveTracing)
|
||||
{
|
||||
if (ActiveTracing->Equals(FocusManager::GetFocusedElement()) && ActiveTracing->IsPressed)
|
||||
{
|
||||
m_ActiveTracingPointerCaptureLost = ActiveTracing->PointerCaptureLost +=
|
||||
ref new Windows::UI::Xaml::Input::PointerEventHandler(this, &CalculatorApp::GraphingCalculator::ActiveTracing_PointerCaptureLost);
|
||||
}
|
||||
else
|
||||
{
|
||||
GraphingControl->ActiveTracing = false;
|
||||
OnShowTracePopupChanged(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void CalculatorApp::GraphingCalculator::ActiveTracing_PointerCaptureLost(Platform::Object ^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs ^ e)
|
||||
{
|
||||
if (m_ActiveTracingPointerCaptureLost.Value != 0)
|
||||
{
|
||||
ActiveTracing->PointerCaptureLost -= m_ActiveTracingPointerCaptureLost;
|
||||
m_ActiveTracingPointerCaptureLost.Value = 0;
|
||||
}
|
||||
|
||||
if (GraphingControl->ActiveTracing)
|
||||
{
|
||||
GraphingControl->ActiveTracing = false;
|
||||
@ -487,11 +495,46 @@ void GraphingCalculator::PositionGraphPopup()
|
||||
}
|
||||
}
|
||||
|
||||
void GraphingCalculator::TraceValuePopup_SizeChanged(Platform::Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e)
|
||||
void GraphingCalculator::TraceValuePopup_SizeChanged(Object ^ sender, SizeChangedEventArgs ^ e)
|
||||
{
|
||||
PositionGraphPopup();
|
||||
}
|
||||
|
||||
::Visibility GraphingCalculator::ManageEditVariablesButtonVisibility(unsigned int numberOfVariables)
|
||||
{
|
||||
return numberOfVariables == 0 ? ::Visibility::Collapsed : ::Visibility::Visible;
|
||||
}
|
||||
|
||||
void CalculatorApp::GraphingCalculator::ActiveTracing_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
||||
{
|
||||
m_activeTracingKeyUpToken = Window::Current->CoreWindow->KeyUp +=
|
||||
ref new Windows::Foundation::TypedEventHandler<Windows::UI::Core::CoreWindow ^, Windows::UI::Core::KeyEventArgs ^>(
|
||||
this, &CalculatorApp::GraphingCalculator::ActiveTracing_KeyUp);
|
||||
|
||||
KeyboardShortcutManager::IgnoreEscape(false);
|
||||
}
|
||||
|
||||
void CalculatorApp::GraphingCalculator::ActiveTracing_Unchecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e)
|
||||
{
|
||||
if (m_ActiveTracingPointerCaptureLost.Value != 0)
|
||||
{
|
||||
ActiveTracing->PointerCaptureLost -= m_ActiveTracingPointerCaptureLost;
|
||||
m_ActiveTracingPointerCaptureLost.Value = 0;
|
||||
}
|
||||
|
||||
if (m_activeTracingKeyUpToken.Value != 0)
|
||||
{
|
||||
Window::Current->CoreWindow->KeyUp -= m_activeTracingKeyUpToken;
|
||||
m_activeTracingKeyUpToken.Value = 0;
|
||||
}
|
||||
KeyboardShortcutManager::HonorEscape();
|
||||
}
|
||||
|
||||
void CalculatorApp::GraphingCalculator::ActiveTracing_KeyUp(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::KeyEventArgs ^ args)
|
||||
{
|
||||
if (args->VirtualKey == VirtualKey::Escape)
|
||||
{
|
||||
GraphingControl->ActiveTracing = false;
|
||||
args->Handled = true;
|
||||
}
|
||||
}
|
||||
|
@ -36,6 +36,7 @@ public ref class GraphingCalculator sealed : public Windows::UI::Xaml::Data::INo
|
||||
static Windows::UI::Xaml::Visibility ShouldDisplayPanel(bool isSmallState, bool isEquationModeActivated, bool isGraphPanel);
|
||||
static Platform::String ^ GetInfoForSwitchModeToggleButton(bool isChecked);
|
||||
static Windows::UI::Xaml::Visibility ManageEditVariablesButtonVisibility(unsigned int numberOfVariables);
|
||||
static Platform::String ^ GetTracingLegend(Platform::IBox<bool> ^ isTracing);
|
||||
private:
|
||||
void GraphingCalculator_DataContextChanged(Windows::UI::Xaml::FrameworkElement ^ sender, Windows::UI::Xaml::DataContextChangedEventArgs ^ args);
|
||||
|
||||
@ -54,31 +55,35 @@ public ref class GraphingCalculator sealed : public Windows::UI::Xaml::Data::INo
|
||||
|
||||
double validateDouble(Platform::String ^ value, double defaultValue);
|
||||
|
||||
CalculatorApp::ViewModel::GraphingCalculatorViewModel ^ m_viewModel;
|
||||
|
||||
void OnShareClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
|
||||
void OnShowTracePopupChanged(bool newValue);
|
||||
void OnTracePointChanged(Windows::Foundation::Point newPoint);
|
||||
private:
|
||||
Windows::Foundation::EventRegistrationToken m_dataRequestedToken;
|
||||
Windows::Foundation::EventRegistrationToken m_vectorChangedToken;
|
||||
Windows::Foundation::EventRegistrationToken m_variableUpdatedToken;
|
||||
void OnDataRequested(
|
||||
Windows::ApplicationModel::DataTransfer::DataTransferManager ^ sender,
|
||||
Windows::ApplicationModel::DataTransfer::DataRequestedEventArgs ^ e);
|
||||
|
||||
void TextBoxGotFocus(Windows::UI::Xaml::Controls::TextBox ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnActiveTracingClick(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void GraphingControl_LostFocus(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void GraphingControl_LosingFocus(Windows::UI::Xaml::UIElement ^ sender, Windows::UI::Xaml::Input::LosingFocusEventArgs ^ args);
|
||||
void GraphingControl_VariablesUpdated(Platform::Object ^ sender, Object ^ args);
|
||||
void OnEquationKeyGraphFeaturesRequested(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void OnKeyGraphFeaturesClosed(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
bool ActiveTracingOn;
|
||||
void SwitchModeToggleButton_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void TraceValuePopup_SizeChanged(Platform::Object ^ sender, Windows::UI::Xaml::SizeChangedEventArgs ^ e);
|
||||
void PositionGraphPopup();
|
||||
void ActiveTracing_Checked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void ActiveTracing_Unchecked(Platform::Object ^ sender, Windows::UI::Xaml::RoutedEventArgs ^ e);
|
||||
void ActiveTracing_KeyUp(Windows::UI::Core::CoreWindow ^ sender, Windows::UI::Core::KeyEventArgs ^ args);
|
||||
void ActiveTracing_PointerCaptureLost(Platform::Object ^ sender, Windows::UI::Xaml::Input::PointerRoutedEventArgs ^ e);
|
||||
private:
|
||||
Windows::Foundation::EventRegistrationToken m_dataRequestedToken;
|
||||
Windows::Foundation::EventRegistrationToken m_vectorChangedToken;
|
||||
Windows::Foundation::EventRegistrationToken m_variableUpdatedToken;
|
||||
Windows::Foundation::EventRegistrationToken m_activeTracingKeyUpToken;
|
||||
Windows::Foundation::EventRegistrationToken m_ActiveTracingPointerCaptureLost;
|
||||
CalculatorApp::ViewModel::GraphingCalculatorViewModel ^ m_viewModel;
|
||||
};
|
||||
|
||||
}
|
||||
|
@ -18,11 +18,12 @@ public
|
||||
public
|
||||
delegate void TracingValueChangedEventHandler(Windows::Foundation::Point value);
|
||||
|
||||
[Windows::UI::Xaml::Markup::ContentPropertyAttribute(Name = L"Equations")] public ref class Grapher sealed : public Windows::UI::Xaml::Controls::Control
|
||||
[Windows::UI::Xaml::Markup::ContentPropertyAttribute(Name = L"Equations")] public ref class Grapher sealed : public Windows::UI::Xaml::Controls::Control, public Windows::UI::Xaml::Data::INotifyPropertyChanged
|
||||
{
|
||||
public:
|
||||
event TracingValueChangedEventHandler ^ TracingValueChangedEvent;
|
||||
event TracingChangedEventHandler ^ TracingChangedEvent;
|
||||
virtual event Windows::UI::Xaml::Data::PropertyChangedEventHandler ^ PropertyChanged;
|
||||
|
||||
public:
|
||||
Grapher();
|
||||
@ -93,17 +94,22 @@ public
|
||||
#pragma endregion
|
||||
|
||||
// Pass active tracing turned on or off down to the renderer
|
||||
|
||||
property bool ActiveTracing
|
||||
{
|
||||
bool get()
|
||||
{
|
||||
return m_renderMain->ActiveTracing;
|
||||
return m_renderMain != nullptr && m_renderMain->ActiveTracing;
|
||||
}
|
||||
|
||||
void set(bool value)
|
||||
{
|
||||
if (m_renderMain != nullptr && m_renderMain->ActiveTracing != value)
|
||||
{
|
||||
m_renderMain->ActiveTracing = value;
|
||||
UpdateTracingChanged();
|
||||
PropertyChanged(this, ref new Windows::UI::Xaml::Data::PropertyChangedEventArgs(L"ActiveTracing"));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user