--- android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java 2010/06/28 09:37:34 937 +++ android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java 2010/06/28 09:49:12 938 @@ -12,7 +12,9 @@ Addition, Subtraction, Multiplication, - Division + Division, + Sqr, + Sqrt } @@ -40,6 +42,7 @@ findViewById(R.id.btn9).setOnClickListener( new NumericClick('9') ); findViewById(R.id.btnback).setOnClickListener( new BackClick() ); + findViewById(R.id.btnclear).setOnClickListener( new ClearClick() ); findViewById(R.id.btnpoint).setOnClickListener( new PointClick() ); findViewById(R.id.btnadd).setOnClickListener( new OperationClick(Ops.Addition) ); @@ -47,6 +50,9 @@ findViewById(R.id.btnmul).setOnClickListener( new OperationClick(Ops.Multiplication) ); findViewById(R.id.btndiv).setOnClickListener( new OperationClick(Ops.Division) ); + findViewById(R.id.btnsqr).setOnClickListener( new SingleOperationClick(Ops.Sqr) ); + findViewById(R.id.btnsqrt).setOnClickListener( new SingleOperationClick(Ops.Sqrt) ); + findViewById(R.id.btnsum).setOnClickListener( new SumClick() ); mEdit = (EditText) findViewById(R.id.edit); @@ -55,6 +61,17 @@ } + void setResult(double res) { + if ( Double.isInfinite(res) || Double.isNaN(res) ) { + mClear = true; + } + + + mEdit.setText( Double.toString(res) ); + mOperation = Ops.None; + mVal1 = res; + } + class NumericClick implements View.OnClickListener { char mNumval; @@ -94,6 +111,17 @@ } } + class ClearClick implements View.OnClickListener { + + @Override + public void onClick(View v) { + mClear = false; + mEdit.setText("0"); + mOperation = Ops.None; + mVal1 = 0; + } + } + class PointClick implements View.OnClickListener { @Override @@ -122,6 +150,29 @@ } } + class SingleOperationClick implements View.OnClickListener { + Ops mOp; + public SingleOperationClick(Ops op) { + mOp = op; + } + + @Override + public void onClick(View v) { + mVal1 = Double.parseDouble( mEdit.getText().toString() ); + + double res = 0.0; + switch (mOp) { + case Sqr: + res = mVal1 * mVal1; + break; + case Sqrt: + res = Math.sqrt(mVal1); + break; + } + setResult(res); + } + } + class SumClick implements View.OnClickListener { @Override public void onClick(View v) { @@ -147,14 +198,7 @@ break; } - if ( Double.isInfinite(res) || Double.isNaN(res) ) { - mClear = true; - } - - - mEdit.setText( Double.toString(res) ); - mOperation = Ops.None; - mVal1 = res; + setResult(res); } } } \ No newline at end of file