/[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 937 - (show annotations) (download)
Mon Jun 28 09:37:34 2010 UTC (13 years, 10 months ago) by torben
File size: 4084 byte(s)
use plain double instead of Double class
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 enum Ops {
11 None,
12 Addition,
13 Subtraction,
14 Multiplication,
15 Division
16 }
17
18
19 EditText mEdit;
20
21
22 double mVal1;
23 Ops mOperation = Ops.None;
24 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 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
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 mClear=false;
72 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 mClear = false;
85 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 Ops mOp;
111 public OperationClick(Ops op) {
112 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 if (mOperation == Ops.None) {
129 return;
130 }
131
132 double val2 = Double.parseDouble( mEdit.getText().toString() );
133
134 double res = 0.0;
135 switch (mOperation) {
136 case Addition:
137 res = mVal1 + val2;
138 break;
139 case Subtraction:
140 res = mVal1 - val2;
141 break;
142 case Multiplication:
143 res = mVal1 * val2;
144 break;
145 case Division:
146 res = mVal1 / val2;
147 break;
148 }
149
150 if ( Double.isInfinite(res) || Double.isNaN(res) ) {
151 mClear = true;
152 }
153
154
155 mEdit.setText( Double.toString(res) );
156 mOperation = Ops.None;
157 mVal1 = res;
158 }
159 }
160 }

  ViewVC Help
Powered by ViewVC 1.1.20