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

  ViewVC Help
Powered by ViewVC 1.1.20