/[projects]/android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java
ViewVC logotype

Contents of /android/Calculator/src/dk/thoerup/calculator/CalculatorActivity.java

Parent Directory Parent Directory | Revision Log Revision Log


Revision 935 - (show annotations) (download)
Mon Jun 28 08:52:48 2010 UTC (13 years, 10 months ago) by torben
File size: 3949 byte(s)
remember to reset clear state var
1 package dk.thoerup.calculator;
2
3 import android.app.Activity;
4 import android.os.Bundle;
5 import android.text.Editable;
6 import android.view.View;
7 import android.widget.EditText;
8
9 public class CalculatorActivity extends Activity {
10 /** Called when the activity is first created. */
11
12 EditText mEdit;
13
14
15 double mVal1;
16 char mOperation = ' ';
17 boolean mClear = false;
18
19 @Override
20 public void onCreate(Bundle savedInstanceState) {
21 super.onCreate(savedInstanceState);
22 setContentView(R.layout.main);
23
24 findViewById(R.id.btn0).setOnClickListener( new NumericClick('0') );
25 findViewById(R.id.btn1).setOnClickListener( new NumericClick('1') );
26 findViewById(R.id.btn2).setOnClickListener( new NumericClick('2') );
27 findViewById(R.id.btn3).setOnClickListener( new NumericClick('3') );
28 findViewById(R.id.btn4).setOnClickListener( new NumericClick('4') );
29 findViewById(R.id.btn5).setOnClickListener( new NumericClick('5') );
30 findViewById(R.id.btn6).setOnClickListener( new NumericClick('6') );
31 findViewById(R.id.btn7).setOnClickListener( new NumericClick('7') );
32 findViewById(R.id.btn8).setOnClickListener( new NumericClick('8') );
33 findViewById(R.id.btn9).setOnClickListener( new NumericClick('9') );
34
35 findViewById(R.id.btnback).setOnClickListener( new BackClick() );
36 findViewById(R.id.btnpoint).setOnClickListener( new PointClick() );
37
38 findViewById(R.id.btnadd).setOnClickListener( new OperationClick('+') );
39 findViewById(R.id.btnsub).setOnClickListener( new OperationClick('-') );
40 findViewById(R.id.btnmul).setOnClickListener( new OperationClick('*') );
41 findViewById(R.id.btndiv).setOnClickListener( new OperationClick('/') );
42
43 findViewById(R.id.btnsum).setOnClickListener( new SumClick() );
44
45 mEdit = (EditText) findViewById(R.id.edit);
46 mEdit.setCursorVisible(false);
47
48
49 }
50
51
52 class NumericClick implements View.OnClickListener {
53 char mNumval;
54
55 public NumericClick(char numval) {
56 mNumval = numval;
57 }
58
59 @Override
60 public void onClick(View v) {
61 Editable tempText = mEdit.getText();
62
63 if (tempText.toString().equals("0") || mClear==true ) {
64 mClear=false;
65 tempText.clear();
66 }
67 tempText.append(mNumval);
68 }
69
70 }
71
72 class BackClick implements View.OnClickListener {
73
74 @Override
75 public void onClick(View v) {
76 if (mClear) {
77 mClear = false;
78 mEdit.setText("0");
79 return;
80 }
81
82 Editable tempText = mEdit.getText();
83 if (tempText.length() > 0) {
84 CharSequence cs = tempText.subSequence(0, tempText.length() -1);
85 mEdit.setText(cs);
86 }
87 }
88 }
89
90 class PointClick implements View.OnClickListener {
91
92 @Override
93 public void onClick(View v) {
94
95 Editable tempText = mEdit.getText();
96 if (tempText.toString().indexOf('.') == -1) {
97 tempText.append('.');
98 }
99 }
100 }
101
102 class OperationClick implements View.OnClickListener {
103 char mOp;
104 public OperationClick(char op) {
105 mOp = op;
106 }
107
108 @Override
109 public void onClick(View v) {
110 mVal1 = Double.parseDouble( mEdit.getText().toString() );
111 mEdit.setText("0");
112
113 mOperation = mOp;
114
115 }
116 }
117
118 class SumClick implements View.OnClickListener {
119 @Override
120 public void onClick(View v) {
121 if (mOperation == ' ') {
122 return;
123 }
124
125 double val2 = Double.parseDouble( mEdit.getText().toString() );
126
127 Double res = 0.0;
128 switch (mOperation) {
129 case '+':
130 res = mVal1 + val2;
131 break;
132 case '-':
133 res = mVal1 - val2;
134 break;
135 case '*':
136 res = mVal1 * val2;
137 break;
138 case '/':
139 res = mVal1 / val2;
140 break;
141 }
142
143 if ( res.isInfinite() || res.isNaN() ) {
144 mClear = true;
145 }
146
147 mEdit.setText( res.toString() );
148 mOperation = ' ';
149 mVal1 = res;
150 }
151 }
152 }

  ViewVC Help
Powered by ViewVC 1.1.20