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

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

Parent Directory Parent Directory | Revision Log Revision Log


Revision 938 - (hide annotations) (download)
Mon Jun 28 09:49:12 2010 UTC (13 years, 11 months ago) by torben
File size: 5059 byte(s)
Add clear-all, square and square-root
1 torben 931 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 torben 936 enum Ops {
11     None,
12     Addition,
13     Subtraction,
14     Multiplication,
15 torben 938 Division,
16     Sqr,
17     Sqrt
18 torben 936 }
19 torben 931
20 torben 936
21 torben 931 EditText mEdit;
22    
23    
24     double mVal1;
25 torben 936 Ops mOperation = Ops.None;
26 torben 931 boolean mClear = false;
27    
28     @Override
29     public void onCreate(Bundle savedInstanceState) {
30     super.onCreate(savedInstanceState);
31     setContentView(R.layout.main);
32    
33     findViewById(R.id.btn0).setOnClickListener( new NumericClick('0') );
34     findViewById(R.id.btn1).setOnClickListener( new NumericClick('1') );
35     findViewById(R.id.btn2).setOnClickListener( new NumericClick('2') );
36     findViewById(R.id.btn3).setOnClickListener( new NumericClick('3') );
37     findViewById(R.id.btn4).setOnClickListener( new NumericClick('4') );
38     findViewById(R.id.btn5).setOnClickListener( new NumericClick('5') );
39     findViewById(R.id.btn6).setOnClickListener( new NumericClick('6') );
40     findViewById(R.id.btn7).setOnClickListener( new NumericClick('7') );
41     findViewById(R.id.btn8).setOnClickListener( new NumericClick('8') );
42     findViewById(R.id.btn9).setOnClickListener( new NumericClick('9') );
43    
44     findViewById(R.id.btnback).setOnClickListener( new BackClick() );
45 torben 938 findViewById(R.id.btnclear).setOnClickListener( new ClearClick() );
46 torben 931 findViewById(R.id.btnpoint).setOnClickListener( new PointClick() );
47    
48 torben 936 findViewById(R.id.btnadd).setOnClickListener( new OperationClick(Ops.Addition) );
49     findViewById(R.id.btnsub).setOnClickListener( new OperationClick(Ops.Subtraction) );
50     findViewById(R.id.btnmul).setOnClickListener( new OperationClick(Ops.Multiplication) );
51     findViewById(R.id.btndiv).setOnClickListener( new OperationClick(Ops.Division) );
52 torben 931
53 torben 938 findViewById(R.id.btnsqr).setOnClickListener( new SingleOperationClick(Ops.Sqr) );
54     findViewById(R.id.btnsqrt).setOnClickListener( new SingleOperationClick(Ops.Sqrt) );
55    
56 torben 931 findViewById(R.id.btnsum).setOnClickListener( new SumClick() );
57    
58     mEdit = (EditText) findViewById(R.id.edit);
59     mEdit.setCursorVisible(false);
60    
61    
62     }
63    
64 torben 938 void setResult(double res) {
65     if ( Double.isInfinite(res) || Double.isNaN(res) ) {
66     mClear = true;
67     }
68    
69    
70     mEdit.setText( Double.toString(res) );
71     mOperation = Ops.None;
72     mVal1 = res;
73     }
74 torben 931
75 torben 938
76 torben 931 class NumericClick implements View.OnClickListener {
77     char mNumval;
78    
79     public NumericClick(char numval) {
80     mNumval = numval;
81     }
82    
83     @Override
84     public void onClick(View v) {
85     Editable tempText = mEdit.getText();
86    
87     if (tempText.toString().equals("0") || mClear==true ) {
88 torben 935 mClear=false;
89 torben 931 tempText.clear();
90     }
91     tempText.append(mNumval);
92     }
93    
94     }
95    
96     class BackClick implements View.OnClickListener {
97    
98     @Override
99     public void onClick(View v) {
100     if (mClear) {
101 torben 933 mClear = false;
102 torben 931 mEdit.setText("0");
103     return;
104     }
105    
106     Editable tempText = mEdit.getText();
107     if (tempText.length() > 0) {
108     CharSequence cs = tempText.subSequence(0, tempText.length() -1);
109     mEdit.setText(cs);
110     }
111     }
112     }
113    
114 torben 938 class ClearClick implements View.OnClickListener {
115    
116     @Override
117     public void onClick(View v) {
118     mClear = false;
119     mEdit.setText("0");
120     mOperation = Ops.None;
121     mVal1 = 0;
122     }
123     }
124    
125 torben 931 class PointClick implements View.OnClickListener {
126    
127     @Override
128     public void onClick(View v) {
129    
130     Editable tempText = mEdit.getText();
131     if (tempText.toString().indexOf('.') == -1) {
132     tempText.append('.');
133     }
134     }
135     }
136    
137     class OperationClick implements View.OnClickListener {
138 torben 936 Ops mOp;
139     public OperationClick(Ops op) {
140 torben 931 mOp = op;
141     }
142    
143     @Override
144     public void onClick(View v) {
145     mVal1 = Double.parseDouble( mEdit.getText().toString() );
146     mEdit.setText("0");
147    
148     mOperation = mOp;
149    
150     }
151     }
152    
153 torben 938 class SingleOperationClick implements View.OnClickListener {
154     Ops mOp;
155     public SingleOperationClick(Ops op) {
156     mOp = op;
157     }
158    
159     @Override
160     public void onClick(View v) {
161     mVal1 = Double.parseDouble( mEdit.getText().toString() );
162    
163     double res = 0.0;
164     switch (mOp) {
165     case Sqr:
166     res = mVal1 * mVal1;
167     break;
168     case Sqrt:
169     res = Math.sqrt(mVal1);
170     break;
171     }
172     setResult(res);
173     }
174     }
175    
176 torben 931 class SumClick implements View.OnClickListener {
177     @Override
178     public void onClick(View v) {
179 torben 936 if (mOperation == Ops.None) {
180 torben 931 return;
181     }
182    
183     double val2 = Double.parseDouble( mEdit.getText().toString() );
184    
185 torben 937 double res = 0.0;
186 torben 931 switch (mOperation) {
187 torben 936 case Addition:
188 torben 931 res = mVal1 + val2;
189     break;
190 torben 936 case Subtraction:
191 torben 931 res = mVal1 - val2;
192     break;
193 torben 936 case Multiplication:
194 torben 931 res = mVal1 * val2;
195     break;
196 torben 936 case Division:
197 torben 931 res = mVal1 / val2;
198     break;
199     }
200    
201 torben 938 setResult(res);
202 torben 931 }
203     }
204     }

  ViewVC Help
Powered by ViewVC 1.1.20