Merge pull request #73 from nventive/dev/yogu/currency.fix.missing.issues

Add decimal button on NumPad for all platform + Add workaround for WASM Currency API calls
This commit is contained in:
Yohan Guérin 2019-05-27 20:37:20 -04:00 committed by GitHub
commit 8b449d6a15
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
8 changed files with 976 additions and 960 deletions

View file

@ -17,8 +17,8 @@ namespace CalculatorApp.DataLoaders
string m_responseLanguage; string m_responseLanguage;
string m_sourceCurrencyCode; string m_sourceCurrencyCode;
static string sc_MetadataUriLocalizeFor = "https://go.microsoft.com/fwlink/?linkid=2041093&localizeFor="; static string sc_MetadataUriLocalizeFor = "https://cors-anywhere.herokuapp.com/https://go.microsoft.com/fwlink/?linkid=2041093&localizeFor=";
static string sc_RatiosUriRelativeTo = "https://go.microsoft.com/fwlink/?linkid=2041339&localCurrency="; static string sc_RatiosUriRelativeTo = "https://cors-anywhere.herokuapp.com/https://go.microsoft.com/fwlink/?linkid=2041339&localCurrency=";
public CurrencyHttpClient() public CurrencyHttpClient()
{ {
@ -26,30 +26,20 @@ namespace CalculatorApp.DataLoaders
m_responseLanguage = "en-US"; m_responseLanguage = "en-US";
} }
public void SetSourceCurrencyCode(String sourceCurrencyCode) public void SetSourceCurrencyCode(string sourceCurrencyCode)
{ {
m_sourceCurrencyCode = sourceCurrencyCode; m_sourceCurrencyCode = sourceCurrencyCode;
} }
public void SetResponseLanguage(String responseLanguage) public void SetResponseLanguage(string responseLanguage)
{ {
m_responseLanguage = responseLanguage; m_responseLanguage = responseLanguage;
} }
public Task<String> GetCurrencyMetadata() public async Task<string> GetCurrencyMetadata() => await ExecuteRequestAsync(sc_MetadataUriLocalizeFor + m_responseLanguage);
{
string uri = sc_MetadataUriLocalizeFor + m_responseLanguage;
var metadataUri = new Uri(uri);
return m_client.GetStringAsync(metadataUri); public async Task<string> GetCurrencyRatios() => await ExecuteRequestAsync(sc_RatiosUriRelativeTo + m_sourceCurrencyCode);
}
public Task<String> GetCurrencyRatios() private async Task<string> ExecuteRequestAsync(string url) => await m_client.GetStringAsync(new Uri(url));
{
string uri = sc_RatiosUriRelativeTo + m_sourceCurrencyCode;
var ratiosUri = new Uri(uri);
return m_client.GetStringAsync(ratiosUri);
}
} }
} }

View file

@ -480,6 +480,15 @@
Value="{StaticResource CalcOperatorCaptionSize}" /> Value="{StaticResource CalcOperatorCaptionSize}" />
</Style> </Style>
<Style x:Key="DecimalButtonStyle"
BasedOn="{StaticResource OperatorButtonStyle}"
TargetType="Controls:CalculatorButton">
<Setter Property="FontWeight"
Value="Bold" />
<Setter Property="FontSize"
Value="24" />
</Style>
<Style x:Key="SymbolOperatorButtonStyle" <Style x:Key="SymbolOperatorButtonStyle"
BasedOn="{StaticResource OperatorButtonStyle}" BasedOn="{StaticResource OperatorButtonStyle}"
TargetType="Controls:CalculatorButton"> TargetType="Controls:CalculatorButton">

View file

@ -424,7 +424,8 @@
Grid.RowSpan="4" Grid.RowSpan="4"
Grid.Column="2" Grid.Column="2"
Grid.ColumnSpan="3" Grid.ColumnSpan="3"
ButtonStyle="{StaticResource NumericButtonStyle18}" /> ButtonStyle="{StaticResource NumericButtonStyle18}"
DecimalButtonStyle="{StaticResource DecimalButtonStyle}" />
<controls:CalculatorButton x:Name="aButton" <controls:CalculatorButton x:Name="aButton"
x:Uid="aButton" x:Uid="aButton"

View file

@ -1034,6 +1034,7 @@
Grid.Column="6" Grid.Column="6"
Grid.ColumnSpan="3" Grid.ColumnSpan="3"
AutomationProperties.HeadingLevel="Level1" AutomationProperties.HeadingLevel="Level1"
ButtonStyle="{StaticResource NumericButtonStyle24}" /> ButtonStyle="{StaticResource NumericButtonStyle24}"
DecimalButtonStyle="{StaticResource DecimalButtonStyle}" />
</Grid> </Grid>
</UserControl> </UserControl>

View file

@ -605,7 +605,8 @@
Grid.Column="2" Grid.Column="2"
Grid.ColumnSpan="3" Grid.ColumnSpan="3"
AutomationProperties.HeadingLevel="Level1" AutomationProperties.HeadingLevel="Level1"
ButtonStyle="{StaticResource NumericButtonStyle24}" /> ButtonStyle="{StaticResource NumericButtonStyle24}"
DecimalButtonStyle="{StaticResource DecimalButtonStyle}" />
<controls:CalculatorButton x:Name="negateButton" <controls:CalculatorButton x:Name="negateButton"
x:Uid="negateButton" x:Uid="negateButton"

View file

@ -118,10 +118,9 @@
--> -->
<controls:CalculatorButton x:Name="decimalSeparatorButton" <controls:CalculatorButton x:Name="decimalSeparatorButton"
x:Uid="decimalSeparatorButton" x:Uid="decimalSeparatorButton"
Grid.Row="4" Grid.Row="3"
Grid.Column="2" Grid.Column="2"
Style="{Binding ElementName=ControlRoot, Path=ButtonStyle}" Style="{x:Bind Path=DecimalButtonStyle, Mode=OneWay}"
Background="{ThemeResource AppBackgroundAltMediumLowBrush}"
AutomationProperties.AutomationId="decimalSeparatorButton" AutomationProperties.AutomationId="decimalSeparatorButton"
ButtonId="Decimal" ButtonId="Decimal"
IsEnabled="{Binding IsDecimalEnabled}" /> IsEnabled="{Binding IsDecimalEnabled}" />

View file

@ -22,6 +22,7 @@ namespace CalculatorApp
{ {
public sealed partial class NumberPad : UserControl public sealed partial class NumberPad : UserControl
{ {
#region ButtonStyle
public Style ButtonStyle public Style ButtonStyle
{ {
get { return (Style)GetValue(ButtonStyleProperty); } get { return (Style)GetValue(ButtonStyleProperty); }
@ -30,7 +31,20 @@ namespace CalculatorApp
// Using a DependencyProperty as the backing store for ButtonStyle. This enables animation, styling, binding, etc... // Using a DependencyProperty as the backing store for ButtonStyle. This enables animation, styling, binding, etc...
public static readonly DependencyProperty ButtonStyleProperty = public static readonly DependencyProperty ButtonStyleProperty =
DependencyProperty.Register("ButtonStyle", typeof(Style), typeof(NumberPad), new PropertyMetadata(null)); DependencyProperty.Register(nameof(ButtonStyle), typeof(Style), typeof(NumberPad), new PropertyMetadata(null));
#endregion
#region DecimalButtonStyle
public Style DecimalButtonStyle
{
get { return (Style)GetValue(DecimalButtonStyleProperty); }
set { SetValue(DecimalButtonStyleProperty, value); }
}
public static readonly DependencyProperty DecimalButtonStyleProperty =
DependencyProperty.Register(nameof(DecimalButtonStyle), typeof(Style), typeof(NumberPad), new PropertyMetadata(null));
#endregion
private bool m_isErrorVisualState; private bool m_isErrorVisualState;
public NumberPad() public NumberPad()

View file

@ -857,6 +857,7 @@
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
AutomationProperties.HeadingLevel="Level1" AutomationProperties.HeadingLevel="Level1"
ButtonStyle="{StaticResource NumericButtonStyle24}" ButtonStyle="{StaticResource NumericButtonStyle24}"
DecimalButtonStyle="{StaticResource DecimalButtonStyle}"
TabIndex="10" TabIndex="10"
TabNavigation="Local"/> TabNavigation="Local"/>
<controls:CalculatorButton x:Name="ConverterNegateButton" <controls:CalculatorButton x:Name="ConverterNegateButton"