void Result(string msg, bool isInput) { if (isInput) { calcState = CalcState.Result; if (Rules.IsOperation(operation)) { Operation(); } if (Rules.IsOneOperation(operation)) { OneOperation(); } if (Rules.IsPlusMinus(operation)) { PlusMinus(); } if (Rules.IsDelete(operation)) { Delete(); } operation = ""; changeTextDelegate.Invoke(resultNumber); } else { if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { Compute(msg, true); } else if (Rules.IsNonZeroDigit(msg)) { tempNumber = ""; AccumulateDigits(msg, true); } else if (Rules.IsZero(msg)) { Zero(msg, true); } else if (Rules.IsSeparator(msg)) { operation = ""; tempNumber = resultNumber; AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } } }
void AccumulateDigits(string msg, bool isInput) { if (isInput) { calcState = CalcState.AccumulateDigits; tempNumber += msg; changeTextDelegate.Invoke(tempNumber); } else { if (Rules.IsDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { Compute(msg, true); } else if (Rules.IsEqualSign(msg) && operation.Length != 0) { Result(msg, true); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } } }
void Zero(string msg, bool isInput) { if (isInput) { calcState = CalcState.Zero; tempNumber = ""; msg = ""; resultNumber = ""; operation = ""; changeTextDelegate("0"); } else { if (Rules.IsNonZeroDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsSeparator(msg)) { AccumulateDigitsWithDecimal(msg, true); } else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { tempNumber = "0"; Compute(msg, true); } } }
void Compute(string msg, bool isInput) { if (isInput) { calcState = CalcState.Compute; if (Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) { operation = msg; if (operation.Length > 0) { if (Rules.IsOneOperation(msg)) { OneOperation(); } if (Rules.IsPlusMinus(msg)) { PlusMinus(); } if (Rules.IsDelete(msg)) { Delete(); } changeTextDelegate(resultNumber); } resultNumber = tempNumber; operation = ""; } else { if (operation.Length > 0) { if (Rules.IsOperation(msg)) { Operation(); changeTextDelegate(resultNumber); } } else { resultNumber = tempNumber; } operation = msg; tempNumber = ""; } } else { if (Rules.IsDigit(msg)) { AccumulateDigits(msg, true); } else if (Rules.IsC(msg)) { Zero(msg, true); } else if (Rules.IsCE(msg)) { tempNumber = ""; AccumulateDigits(tempNumber, true); } //else if (Rules.IsOperation(msg) || Rules.IsOneOperation(msg) || Rules.IsPlusMinus(msg) || Rules.IsDelete(msg)) //{ // Compute(msg, true); //} } }