public void HandleSubtraction(Calculator calculator, CalculatorOperations calcOps)
        {
            if (currentOperation == CalculatorOperations.CurrentOperation.Equals || currentOperation == CalculatorOperations.CurrentOperation.SquareRoot || currentOperation == CalculatorOperations.CurrentOperation.Reciprocal && calculator.CurrentSubTotal != 0)
            {
                currentOperation           = CalculatorOperations.CurrentOperation.Subtraction;
                calculator.OperationString = calculator.CurrentSubTotal + " - ";
            }
            else
            {
                if (calculator.CurrentSubTotal != 0)
                {
                    calculator.CurrentSubTotal  = calcOps.Subtraction(calculator.CurrentSubTotal, (double)calculator.CurrentDigit);
                    calculator.OperationString += calculator.CurrentDigit + " - ";
                }
                else
                {
                    calculator.CurrentSubTotal = (double)calculator.CurrentDigit;
                    calculator.OperationString = calculator.CurrentDigit + " - ";
                }

                calcOps.DigitEntrySet = false;

                SetResultsString(calculator, false, calculator.CurrentSubTotal);
                ClearCurrentDigit(calculator);
                currentOperation = CalculatorOperations.CurrentOperation.Subtraction;
            }
        }
        public void HandleMultiplication(Calculator calculator, CalculatorOperations calcOps)
        {
            if (currentOperation == CalculatorOperations.CurrentOperation.Equals || currentOperation == CalculatorOperations.CurrentOperation.SquareRoot || currentOperation == CalculatorOperations.CurrentOperation.Reciprocal)
            {
                currentOperation           = CalculatorOperations.CurrentOperation.Multiplication;
                calculator.OperationString = calculator.CurrentSubTotal + " * ";
            }
            else
            {
                if (calculator.CurrentSubTotal != 0)
                {
                    calculator.CurrentSubTotal  = calcOps.Multiplication(calculator.CurrentSubTotal, (double)calculator.CurrentDigit);
                    calculator.OperationString += calculator.CurrentDigit + " * ";
                }
                else
                {
                    Console.WriteLine("0");
                    calculator.CurrentSubTotal = (double)calculator.CurrentDigit;
                    calculator.OperationString = calculator.CurrentDigit + " * ";
                }
                calculator.OperationSet = true;

                calcOps.DigitEntrySet = false;
                ClearCurrentDigit(calculator);
                SetResultsString(calculator, false, calculator.CurrentSubTotal);
                currentOperation = CalculatorOperations.CurrentOperation.Multiplication;
            }
        }
 public void HandleEquals(Calculator calculator, CalculatorOperations calcOps)
 {
     PerformOperation(calculator, calcOps);
     calculator.OperationString = "";
     currentOperation           = CalculatorOperations.CurrentOperation.Equals;
     calculator.OperationSet    = true;
     Console.WriteLine("Current sub equals: " + calculator.CurrentSubTotal);
 }
 public void HandleClear(Calculator calculator, CalculatorOperations calcOps)
 {
     calculator.ResultsString   = "0";
     calculator.OperationString = "";
     calculator.CurrentDigit    = 0;
     calculator.CurrentSubTotal = 0;
     calcOps.DecimalUsed        = false;
     currentOperation           = CalculatorOperations.CurrentOperation.NoOperation;
 }
        public void HandleReciprocal(Calculator calculator, CalculatorOperations calcOps)
        {
            double numberToBeActioned;

            if (calcOps.DigitEntrySet)
            {
                numberToBeActioned         = (double)calculator.CurrentDigit;
                calculator.CurrentSubTotal = (double)(1 / (calculator.CurrentDigit));
                SetResultsString(calculator, false, calculator.CurrentSubTotal);
            }
            else
            {
                numberToBeActioned         = calculator.CurrentSubTotal;
                calculator.CurrentSubTotal = 1 / (calculator.CurrentSubTotal);
                SetResultsString(calculator, false, calculator.CurrentSubTotal);
            }

            calculator.OperationString = "reciproc(" + numberToBeActioned + ")";
            calcOps.DigitEntrySet      = false;
            ClearCurrentDigit(calculator);
            SetResultsString(calculator, false, calculator.CurrentSubTotal);
            currentOperation = CalculatorOperations.CurrentOperation.Reciprocal;
        }
        public void HandleSquareRoot(Calculator calculator, CalculatorOperations calcOps)
        {
            double numberToBeActioned;

            if (calcOps.DigitEntrySet)
            {
                numberToBeActioned         = (double)calculator.CurrentDigit;
                calculator.CurrentSubTotal = Math.Sqrt((double)calculator.CurrentDigit);
                SetResultsString(calculator, false, calculator.CurrentSubTotal);
            }
            else
            {
                numberToBeActioned         = calculator.CurrentSubTotal;
                calculator.CurrentSubTotal = Math.Sqrt(calculator.CurrentSubTotal);
                SetResultsString(calculator, false, calculator.CurrentSubTotal);
            }

            calculator.OperationString = "√(" + numberToBeActioned + ")";
            calcOps.DigitEntrySet      = false;
            ClearCurrentDigit(calculator);
            SetResultsString(calculator, false, calculator.CurrentSubTotal);
            currentOperation = CalculatorOperations.CurrentOperation.SquareRoot;
        }
 public void HandleClearLast(Calculator calculator, CalculatorOperations calcOps)
 {
     calculator.CurrentDigit = 0;
     currentOperation        = CalculatorOperations.CurrentOperation.NoOperation;
     SetResultsString(calculator, true, (double)calculator.CurrentDigit);
 }