Example #1
0
        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;
        }
Example #2
0
        private static void OnCalculatorButtonTypeChanged(DependencyObject o, CalculatorButtonType oldValue, CalculatorButtonType newValue)
        {
            Button button = o as Button;

            button.CommandParameter = newValue;
            button.Content          = CalculatorUtilities.GetCalculatorButtonContent(newValue);
        }
Example #3
0
        private void ProcessDigitKey(CalculatorButtonType buttonType)
        {
            if (_showNewNumber)
            {
                DisplayText = CalculatorUtilities.GetCalculatorButtonContent(buttonType);
            }
            else
            {
                DisplayText += CalculatorUtilities.GetCalculatorButtonContent(buttonType);
            }

            _showNewNumber = false;
        }
Example #4
0
        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);
            }
        }
Example #5
0
 private void ProcessCalculatorButton(CalculatorButtonType buttonType)
 {
     if (CalculatorUtilities.IsDigit(buttonType))
     {
         ProcessDigitKey(buttonType);
     }
     else if ((CalculatorUtilities.IsMemory(buttonType)))
     {
         ProcessMemoryKey(buttonType);
     }
     else
     {
         ProcessOperationKey(buttonType);
     }
 }
Example #6
0
        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;
        }
Example #8
0
        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();
            }
        }
 private static void OnCalculatorButtonTypeChanged(DependencyObject o, CalculatorButtonType oldValue, CalculatorButtonType newValue)
 {
     Button button = o as Button;
     button.CommandParameter = newValue;
     button.Content = CalculatorUtilities.GetCalculatorButtonContent(newValue);
 }
Example #10
0
 public static void SetCalculatorButtonType(DependencyObject target, CalculatorButtonType value)
 {
     target.SetValue(CalculatorButtonTypeProperty, value);
 }
Example #11
0
 private void SimulateCalculatorButtonClick(CalculatorButtonType buttonType)
 {
     _calculatorButton = CalculatorUtilities.FindButtonByCalculatorButtonType(_buttonPanel, buttonType);
     VisualStateManager.GoToState(_calculatorButton, "Pressed", true);
     _timer.Start();
 }
Example #12
0
        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;
        }
Example #13
0
        private void ProcessDigitKey(CalculatorButtonType buttonType)
        {
            if (_showNewNumber)
                DisplayText = CalculatorUtilities.GetCalculatorButtonContent(buttonType);
            else
                DisplayText += CalculatorUtilities.GetCalculatorButtonContent(buttonType);

            _showNewNumber = false;
        }
Example #14
0
        private void ProcessCalculatorButton(CalculatorButtonType buttonType)
        {
            if (CalculatorUtilities.IsDigit(buttonType))
                ProcessDigitKey(buttonType);
            else if ((CalculatorUtilities.IsMemory(buttonType)))
                ProcessMemoryKey(buttonType);
            else
                ProcessOperationKey(buttonType);

            _lastButtonPressed = buttonType;
        }
Example #15
0
        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;
     }
 }
Example #17
0
 public static void SetCalculatorButtonType(DependencyObject target, CalculatorButtonType value)
 {
     target.SetValue(CalculatorButtonTypeProperty, value);
 }
Example #18
0
 private void SimulateCalculatorButtonClick(CalculatorButtonType buttonType)
 {
     _calculatorButton = CalculatorUtilities.FindButtonByCalculatorButtonType(_buttonPanel, buttonType);
     VisualStateManager.GoToState(_calculatorButton, "Pressed", true);
     _timer.Start();
 }
Example #19
0
        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;
     }
 }
Example #22
0
        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;
 }
Example #24
0
        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;
        }