-rw-r--r-- | noncore/tools/euroconv/calckeypad.cpp | 29 |
1 files changed, 18 insertions, 11 deletions
diff --git a/noncore/tools/euroconv/calckeypad.cpp b/noncore/tools/euroconv/calckeypad.cpp index f1d61c0..4d0c37f 100644 --- a/noncore/tools/euroconv/calckeypad.cpp +++ b/noncore/tools/euroconv/calckeypad.cpp | |||
@@ -109,19 +109,19 @@ connect(btnDot, SIGNAL(clicked()), this, SLOT(gotoDec())); | |||
109 | 109 | ||
110 | /*********************************************************************** | 110 | /*********************************************************************** |
111 | * SLOT: enterDigits calculates the value to display and display it. | 111 | * SLOT: enterDigits calculates the value to display and display it. |
112 | **********************************************************************/ | 112 | **********************************************************************/ |
113 | void KeyPad::enterDigits(int i){ | 113 | void KeyPad::enterDigits(int i){ |
114 | 114 | ||
115 | if(!dCurrent) | 115 | if(!dCurrent) |
116 | dCurrent = i; | 116 | dCurrent = i; |
117 | else if(!bIsDec){ | 117 | else if(iLenCurrent > 9) |
118 | if(iLenCurrent > 9) | ||
119 | return; | 118 | return; |
119 | else if(!bIsDec){ | ||
120 | dCurrent *= 10; | 120 | dCurrent *= 10; |
121 | dCurrent += i; | 121 | dCurrent += i; |
122 | iLenCurrent++; | 122 | iLenCurrent++; |
123 | }else{ | 123 | }else{ |
124 | dCurrent += i*dDecCurrent; | 124 | dCurrent += i*dDecCurrent; |
125 | dDecCurrent /= 10; | 125 | dDecCurrent /= 10; |
126 | } | 126 | } |
127 | 127 | ||
@@ -150,24 +150,31 @@ if(iPreviousOperator){ | |||
150 | case 4: // Divide / | 150 | case 4: // Divide / |
151 | dCurrent = dPreviousValue / dCurrent; | 151 | dCurrent = dPreviousValue / dCurrent; |
152 | break; | 152 | break; |
153 | 153 | ||
154 | } | 154 | } |
155 | display->setValue(dCurrent); | 155 | display->setValue(dCurrent); |
156 | } | 156 | } |
157 | 157 | ||
158 | dPreviousValue = dCurrent; | 158 | if(i==5){ |
159 | iPreviousOperator = i; | 159 | // ensure we won't be able to enter more digits |
160 | 160 | iLenCurrent = 100; | |
161 | // reset LCD for next digit | 161 | iPreviousOperator = 0; |
162 | dCurrent = 0; | 162 | dPreviousValue = 0; |
163 | iLenCurrent = 1; | 163 | }else{ |
164 | bIsDec = false; | 164 | dPreviousValue = dCurrent; |
165 | dDecCurrent = 0; | 165 | iPreviousOperator = i; |
166 | |||
167 | // reset LCD for next digit | ||
168 | dCurrent = 0; | ||
169 | iLenCurrent = 1; | ||
170 | bIsDec = false; | ||
171 | dDecCurrent = 0; | ||
172 | } | ||
166 | } | 173 | } |
167 | /*********************************************************************** | 174 | /*********************************************************************** |
168 | * SLOT: clearLCD CE/C has been pressed | 175 | * SLOT: clearLCD CE/C has been pressed |
169 | **********************************************************************/ | 176 | **********************************************************************/ |
170 | void KeyPad::clearLCD(void){ | 177 | void KeyPad::clearLCD(void){ |
171 | 178 | ||
172 | dCurrent = 0; | 179 | dCurrent = 0; |
173 | iLenCurrent = 1; | 180 | iLenCurrent = 1; |
@@ -195,13 +202,13 @@ dDecCurrent = 0.1; | |||
195 | void KeyPad::aboutDialog(void){ | 202 | void KeyPad::aboutDialog(void){ |
196 | 203 | ||
197 | QMessageBox::about( this, "About Euroconv", | 204 | QMessageBox::about( this, "About Euroconv", |
198 | "Euroconv is an Euro converter\n\n" | 205 | "Euroconv is an Euro converter\n\n" |
199 | "Copyright 2003 TALC Informatique.\n" | 206 | "Copyright 2003 TALC Informatique.\n" |
200 | "Under GPL license\n\n" | 207 | "Under GPL license\n\n" |
201 | "Written by Eric Santonacci for Opie\n" | 208 | "Written by Eric Santonacci for Opie\n" |
202 | "http://opie.handhelds.org\n\n" | 209 | "http://opie.handhelds.org\n\n" |
203 | "Version 0.2\n\n" | 210 | "Version 0.3\n\n" |
204 | "Any comment or feedback to:\n" | 211 | "Any comment or feedback to:\n" |
205 | "Eric.Santonacci@talc.fr\n"); | 212 | "Eric.Santonacci@talc.fr\n"); |
206 | 213 | ||
207 | } | 214 | } |