package com.kotlinapp.computer.cor
import android.content.ContentValues
import android.content.Context
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.TextView
import android.widget.Toast
import kotlinx.coroutines.experimental.android.UI
import kotlin.coroutines.experimental.CoroutineContext
import android.os.AsyncTask
import com.kotlinapp.computer.cor.R.id.text
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.coroutines.experimental.*
import okhttp3.*
import org.w3c.dom.Text
import java.io.IOException
import kotlin.coroutines.experimental.coroutineContext
//import android.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*
//import net.objecthunter.exp4j.ExpressionBuilder
import builder.Expression.*
class MainActivity : AppCompatActivity()
{
override fun onCreate(savedInstanceState: Bundle?)
{
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
/*Number Buttons*/
tvOne.setOnClickListener {
evaluateExpression("1", clear = true)
}
tvTwo.setOnClickListener {
evaluateExpression("2", clear = true)
}
tvThree.setOnClickListener {
evaluateExpression("3", clear = true)
}
tvFour.setOnClickListener {
evaluateExpression("4", clear = true)
}
tvFive.setOnClickListener {
evaluateExpression("5", clear = true)
}
tvSix.setOnClickListener {
evaluateExpression("6", clear = true)
}
tvSeven.setOnClickListener {
evaluateExpression("7", clear = true)
}
tvEight.setOnClickListener {
evaluateExpression("8", clear = true)
}
tvNine.setOnClickListener {
evaluateExpression("9", clear = true)
}
tvZero.setOnClickListener {
evaluateExpression("0", clear = true)
}
/*Operators*/
tvPlus.setOnClickListener {
evaluateExpression("+", clear = true)
}
tvMinus.setOnClickListener {
evaluateExpression("-", clear = true)
}
tvMul.setOnClickListener {
evaluateExpression("*", clear = true)
}
tvDivide.setOnClickListener {
evaluateExpression("/", clear = true)
}
tvDot.setOnClickListener {
evaluateExpression(".", clear = true)
}
tvClear.setOnClickListener {
tvExpression.text = ""
tvResult.text = ""
}
tvEquals.setOnClickListener {
val text = tvExpression.text.toString()
val expression = builder.Expression(text).build()
val result = expression.evaluate()
val longResult = result.toLong()
if (result == longResult.toDouble()) {
tvResult.text = longResult.toString()
} else {
tvResult.text = result.toString()
}
}
tvBack.setOnClickListener {
val text = tvExpression.text.toString()
if(text.isNotEmpty()) {
tvExpression.text = text.drop(1)
}
tvResult.text = ""
}
}
/*Function to calculate the expressions using expression builder library*/
fun evaluateExpression(string: String, clear: Boolean) {
if(clear) {
tvResult.text = ""
tvExpression.append(string)
} else {
tvExpression.append(tvResult.text)
tvExpression.append(string)
tvResult.text = ""
}
}