diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt index 007ac112..c363d6e4 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/MainActivity.kt @@ -42,6 +42,10 @@ class MainActivity : SimpleActivity(), Calculator { btn_power.setOnClickListener { calc.handleOperation(POWER); checkHaptic(it) } btn_root.setOnClickListener { calc.handleOperation(ROOT); checkHaptic(it) } + btn_minus.setOnLongClickListener { + calc.turnToNegative() + } + btn_clear.setOnClickListener { calc.handleClear(); checkHaptic(it) } btn_clear.setOnLongClickListener { calc.handleReset(); true } diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt index 2029fcac..d611e1c0 100644 --- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt +++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/CalculatorImpl.kt @@ -123,6 +123,25 @@ class CalculatorImpl(calculator: Calculator, private val context: Context) { showNewResult(inputDisplayedFormula) } + fun turnToNegative(): Boolean { + if (inputDisplayedFormula.isEmpty()) { + return false + } + + if (!inputDisplayedFormula.trimStart('-').any { it.toString() in operations } && inputDisplayedFormula.replace(",", "").toDouble() != 0.0) { + inputDisplayedFormula = if (inputDisplayedFormula.first() == '-') { + inputDisplayedFormula.substring(1) + } else { + "-$inputDisplayedFormula" + } + + showNewResult(inputDisplayedFormula) + return true + } + + return false + } + // handle percents manually, it doesn't seem to be possible via net.objecthunter:exp4j. "%" is used only for modulo there private fun handlePercent() { var result = calculatePercentage(baseValue, getSecondValue(), lastOperation)