/[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 931 - (hide annotations) (download)
Sun Jun 27 18:40:19 2010 UTC (13 years, 11 months ago) by torben
File size: 3911 byte(s)
Initial import
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     /** 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     tempText.clear();
65     }
66     tempText.append(mNumval);
67     }
68    
69     }
70    
71     class BackClick implements View.OnClickListener {
72    
73     @Override
74     public void onClick(View v) {
75     if (mClear) {
76     mEdit.setText("0");
77     return;
78     }
79    
80     Editable tempText = mEdit.getText();
81     if (tempText.length() > 0) {
82     CharSequence cs = tempText.subSequence(0, tempText.length() -1);
83     mEdit.setText(cs);
84     }
85     }
86     }
87    
88     class PointClick implements View.OnClickListener {
89    
90     @Override
91     public void onClick(View v) {
92    
93     Editable tempText = mEdit.getText();
94     if (tempText.toString().indexOf('.') == -1) {
95     tempText.append('.');
96     }
97     }
98     }
99    
100     class OperationClick implements View.OnClickListener {
101     char mOp;
102     public OperationClick(char op) {
103     mOp = op;
104     }
105    
106     @Override
107     public void onClick(View v) {
108     mVal1 = Double.parseDouble( mEdit.getText().toString() );
109     mEdit.setText("0");
110    
111     mOperation = mOp;
112    
113     }
114     }
115    
116     class SumClick implements View.OnClickListener {
117     @Override
118     public void onClick(View v) {
119     if (mOperation == ' ') {
120     return;
121     }
122    
123     double val2 = Double.parseDouble( mEdit.getText().toString() );
124    
125     Double res = 0.0;
126     switch (mOperation) {
127     case '+':
128     res = mVal1 + val2;
129     break;
130     case '-':
131     res = mVal1 - val2;
132     break;
133     case '*':
134     res = mVal1 * val2;
135     break;
136     case '/':
137     res = mVal1 / val2;
138     break;
139     }
140    
141     if ( res.isInfinite() || res.isNaN() ) {
142     mClear = true;
143     }
144    
145     mEdit.setText( res.toString() );
146     mOperation = ' ';
147     mVal1 = res;
148     }
149     }
150     }

  ViewVC Help
Powered by ViewVC 1.1.20