private void ProcessMemoryKey(CalculatorButtonType buttonType) { decimal currentValue = CalculatorUtilities.ParseDecimal(DisplayText); switch (buttonType) { case CalculatorButtonType.MAdd: Memory += currentValue; break; case CalculatorButtonType.MC: Memory = decimal.Zero; break; case CalculatorButtonType.MR: DisplayText = Memory.ToString(); break; case CalculatorButtonType.MS: Memory = currentValue; break; case CalculatorButtonType.MSub: Memory -= currentValue; break; default: break; } m_showNewNumber = true; }
private static void OnCalculatorButtonTypeChanged(DependencyObject o, CalculatorButtonType oldValue, CalculatorButtonType newValue) { Button button = o as Button; button.CommandParameter = newValue; button.Content = CalculatorUtilities.GetCalculatorButtonContent(newValue); }
private void ProcessDigitKey(CalculatorButtonType buttonType) { if (_showNewNumber) { DisplayText = CalculatorUtilities.GetCalculatorButtonContent(buttonType); } else { DisplayText += CalculatorUtilities.GetCalculatorButtonContent(buttonType); } _showNewNumber = false; }
public static bool IsMemory(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.MAdd: case CalculatorButtonType.MC: case CalculatorButtonType.MR: case CalculatorButtonType.MS: case CalculatorButtonType.MSub: return(true); default: return(false); } }
private void ProcessCalculatorButton(CalculatorButtonType buttonType) { if (CalculatorUtilities.IsDigit(buttonType)) { ProcessDigitKey(buttonType); } else if ((CalculatorUtilities.IsMemory(buttonType))) { ProcessMemoryKey(buttonType); } else { ProcessOperationKey(buttonType); } }
public static bool IsDigit(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.Zero: case CalculatorButtonType.One: case CalculatorButtonType.Two: case CalculatorButtonType.Three: case CalculatorButtonType.Four: case CalculatorButtonType.Five: case CalculatorButtonType.Six: case CalculatorButtonType.Seven: case CalculatorButtonType.Eight: case CalculatorButtonType.Nine: case CalculatorButtonType.Decimal: return(true); default: return(false); } }
public static Button FindButtonByCalculatorButtonType(DependencyObject parent, CalculatorButtonType type) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); object buttonType = child.GetValue(Button.CommandParameterProperty); if (buttonType != null && (CalculatorButtonType)buttonType == type) { return child as Button; } else { var result = FindButtonByCalculatorButtonType(child, type); if (result != null) return result; } } return null; }
private void SimulateCalculatorButtonClick(CalculatorButtonType buttonType) { var button = CalculatorUtilities.FindButtonByCalculatorButtonType(_buttonPanel, buttonType); if (button != null) { VisualStateManager.GoToState(button, "Pressed", true); DispatcherTimer timer; if (_timers.ContainsKey(button)) { timer = _timers[button]; timer.Stop(); } else { timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds(100); timer.Tick += Timer_Tick; _timers.Add(button, timer); } timer.Start(); } }
public static void SetCalculatorButtonType(DependencyObject target, CalculatorButtonType value) { target.SetValue(CalculatorButtonTypeProperty, value); }
private void SimulateCalculatorButtonClick(CalculatorButtonType buttonType) { _calculatorButton = CalculatorUtilities.FindButtonByCalculatorButtonType(_buttonPanel, buttonType); VisualStateManager.GoToState(_calculatorButton, "Pressed", true); _timer.Start(); }
private void ProcessOperationKey(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.Add: Calculate(Operation.Add); break; case CalculatorButtonType.Subtract: Calculate(Operation.Subtract); break; case CalculatorButtonType.Multiply: Calculate(Operation.Multiply); break; case CalculatorButtonType.Divide: Calculate(Operation.Divide); break; case CalculatorButtonType.Percent: if (_lastOperation != Operation.None) { decimal currentValue = CalculatorUtilities.ParseDecimal(DisplayText); decimal newValue = CalculatorUtilities.Percent(_previousValue, currentValue); DisplayText = newValue.ToString(); } else { DisplayText = "0"; _showNewNumber = true; } return; case CalculatorButtonType.Sqrt: Calculate(Operation.Sqrt, Operation.None); break; case CalculatorButtonType.Fraction: Calculate(Operation.Fraction, Operation.None); break; case CalculatorButtonType.Negate: Calculate(Operation.Negate, Operation.None); break; case CalculatorButtonType.Equal: Calculate(Operation.None); break; case CalculatorButtonType.Clear: Calculate(Operation.Clear, Operation.None); DisplayText = Value.ToString(); break; case CalculatorButtonType.Cancel: DisplayText = _previousValue.ToString(); _lastOperation = Operation.None; _showNewNumber = true; return; case CalculatorButtonType.Back: ProcessBackKey(); return; default: break; } Decimal.TryParse(DisplayText, out _previousValue); _showNewNumber = true; }
private void ProcessDigitKey(CalculatorButtonType buttonType) { if (_showNewNumber) DisplayText = CalculatorUtilities.GetCalculatorButtonContent(buttonType); else DisplayText += CalculatorUtilities.GetCalculatorButtonContent(buttonType); _showNewNumber = false; }
private void ProcessCalculatorButton(CalculatorButtonType buttonType) { if (CalculatorUtilities.IsDigit(buttonType)) ProcessDigitKey(buttonType); else if ((CalculatorUtilities.IsMemory(buttonType))) ProcessMemoryKey(buttonType); else ProcessOperationKey(buttonType); _lastButtonPressed = buttonType; }
public static string GetCalculatorButtonContent(CalculatorButtonType type) { string content = string.Empty; switch (type) { case CalculatorButtonType.Add: content = "+"; break; case CalculatorButtonType.Back: content = "Back"; break; case CalculatorButtonType.Cancel: content = "CE"; break; case CalculatorButtonType.Clear: content = "C"; break; case CalculatorButtonType.Decimal: content = CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator; break; case CalculatorButtonType.Divide: content = "/"; break; case CalculatorButtonType.Eight: content = "8"; break; case CalculatorButtonType.Equal: content = "="; break; case CalculatorButtonType.Five: content = "5"; break; case CalculatorButtonType.Four: content = "4"; break; case CalculatorButtonType.Fraction: content = "1/x"; break; case CalculatorButtonType.MAdd: content = "M+"; break; case CalculatorButtonType.MC: content = "MC"; break; case CalculatorButtonType.MR: content = "MR"; break; case CalculatorButtonType.MS: content = "MS"; break; case CalculatorButtonType.MSub: content = "M-"; break; case CalculatorButtonType.Multiply: content = "*"; break; case CalculatorButtonType.Nine: content = "9"; break; case CalculatorButtonType.None: break; case CalculatorButtonType.One: content = "1"; break; case CalculatorButtonType.Percent: content = "%"; break; case CalculatorButtonType.Seven: content = "7"; break; case CalculatorButtonType.Negate: content = "+/-"; break; case CalculatorButtonType.Six: content = "6"; break; case CalculatorButtonType.Sqrt: content = "Sqrt"; break; case CalculatorButtonType.Subtract: content = "-"; break; case CalculatorButtonType.Three: content = "3"; break; case CalculatorButtonType.Two: content = "2"; break; case CalculatorButtonType.Zero: content = "0"; break; } return(content); }
public static bool IsDigit(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.Zero: case CalculatorButtonType.One: case CalculatorButtonType.Two: case CalculatorButtonType.Three: case CalculatorButtonType.Four: case CalculatorButtonType.Five: case CalculatorButtonType.Six: case CalculatorButtonType.Seven: case CalculatorButtonType.Eight: case CalculatorButtonType.Nine: case CalculatorButtonType.Decimal: return true; default: return false; } }
public static Button FindButtonByCalculatorButtonType(DependencyObject parent, CalculatorButtonType type) { for (int i = 0; i < VisualTreeHelper.GetChildrenCount(parent); i++) { var child = VisualTreeHelper.GetChild(parent, i); object buttonType = child.GetValue(Button.CommandParameterProperty); if (buttonType != null && (CalculatorButtonType)buttonType == type) { return(child as Button); } else { var result = FindButtonByCalculatorButtonType(child, type); if (result != null) { return(result); } } } return(null); }
private void SimulateCalculatorButtonClick( CalculatorButtonType buttonType ) { var button = CalculatorUtilities.FindButtonByCalculatorButtonType( _buttonPanel, buttonType ); if( button != null ) { VisualStateManager.GoToState( button, "Pressed", true ); DispatcherTimer timer; if( _timers.ContainsKey( button ) ) { timer = _timers[ button ]; timer.Stop(); } else { timer = new DispatcherTimer(); timer.Interval = TimeSpan.FromMilliseconds( 100 ); timer.Tick += Timer_Tick; _timers.Add( button, timer ); } timer.Start(); } }
public static bool IsMemory(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.MAdd: case CalculatorButtonType.MC: case CalculatorButtonType.MR: case CalculatorButtonType.MS: case CalculatorButtonType.MSub: return true; default: return false; } }
private void ProcessOperationKey(CalculatorButtonType buttonType) { switch (buttonType) { case CalculatorButtonType.Add: Calculate(Operation.Add); break; case CalculatorButtonType.Subtract: Calculate(Operation.Subtract); break; case CalculatorButtonType.Multiply: Calculate(Operation.Multiply); break; case CalculatorButtonType.Divide: Calculate(Operation.Divide); break; case CalculatorButtonType.Percent: if (_lastOperation != Operation.None) { decimal currentValue = CalculatorUtilities.ParseDecimal(DisplayText); decimal newValue = CalculatorUtilities.Percent(_previousValue, currentValue); DisplayText = newValue.ToString(); } else { DisplayText = "0"; _showNewNumber = true; } return; case CalculatorButtonType.Sqrt: Calculate(Operation.Sqrt, Operation.None); break; case CalculatorButtonType.Fraction: Calculate(Operation.Fraction, Operation.None); break; case CalculatorButtonType.Negate: Calculate(Operation.Negate, Operation.None); break; case CalculatorButtonType.Equal: Calculate(Operation.None); break; case CalculatorButtonType.Clear: Calculate(Operation.Clear, Operation.None); break; case CalculatorButtonType.Cancel: DisplayText = _previousValue.ToString(); _lastOperation = Operation.None; _showNewNumber = true; return; case CalculatorButtonType.Back: ProcessBackKey(); return; default: break; } Decimal.TryParse(DisplayText, out _previousValue); _showNewNumber = true; }
public static string GetCalculatorButtonContent(CalculatorButtonType type) { string content = string.Empty; switch (type) { case CalculatorButtonType.Add: content = "+"; break; case CalculatorButtonType.Back: content = "Back"; break; case CalculatorButtonType.Cancel: content = "CE"; break; case CalculatorButtonType.Clear: content = "C"; break; case CalculatorButtonType.Decimal: content = CultureInfo.CurrentCulture.NumberFormat.CurrencyDecimalSeparator; break; case CalculatorButtonType.Divide: content = "/"; break; case CalculatorButtonType.Eight: content = "8"; break; case CalculatorButtonType.Equal: content = "="; break; case CalculatorButtonType.Five: content = "5"; break; case CalculatorButtonType.Four: content = "4"; break; case CalculatorButtonType.Fraction: content = "1/x"; break; case CalculatorButtonType.MAdd: content = "M+"; break; case CalculatorButtonType.MC: content = "MC"; break; case CalculatorButtonType.MR: content = "MR"; break; case CalculatorButtonType.MS: content = "MS"; break; case CalculatorButtonType.MSub: content = "M-"; break; case CalculatorButtonType.Multiply: content = "*"; break; case CalculatorButtonType.Nine: content = "9"; break; case CalculatorButtonType.None: break; case CalculatorButtonType.One: content = "1"; break; case CalculatorButtonType.Percent: content = "%"; break; case CalculatorButtonType.Seven: content = "7"; break; case CalculatorButtonType.Negate: content = "+/-"; break; case CalculatorButtonType.Six: content = "6"; break; case CalculatorButtonType.Sqrt: content = "Sqrt"; break; case CalculatorButtonType.Subtract: content = "-"; break; case CalculatorButtonType.Three: content = "3"; break; case CalculatorButtonType.Two: content = "2"; break; case CalculatorButtonType.Zero: content = "0"; break; } return content; }