summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/euroconv/calckeypad.cpp29
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
@@ -105,27 +105,27 @@ connect(btnClear, SIGNAL(clicked()), this, SLOT(clearLCD()));
105connect(btnAbout, SIGNAL(clicked()), this, SLOT(aboutDialog())); 105connect(btnAbout, SIGNAL(clicked()), this, SLOT(aboutDialog()));
106connect(btnDot, SIGNAL(clicked()), this, SLOT(gotoDec())); 106connect(btnDot, SIGNAL(clicked()), this, SLOT(gotoDec()));
107} 107}
108 108
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 **********************************************************************/
113void KeyPad::enterDigits(int i){ 113void KeyPad::enterDigits(int i){
114 114
115if(!dCurrent) 115if(!dCurrent)
116 dCurrent = i; 116 dCurrent = i;
117else if(!bIsDec){ 117else if(iLenCurrent > 9)
118 if(iLenCurrent > 9)
119 return; 118 return;
119else 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
128display->setValue(dCurrent); 128display->setValue(dCurrent);
129} 129}
130 130
131/*********************************************************************** 131/***********************************************************************
@@ -146,32 +146,39 @@ if(iPreviousOperator){
146 case 3: // Multiply * 146 case 3: // Multiply *
147 dCurrent *= dPreviousValue; 147 dCurrent *= dPreviousValue;
148 break; 148 break;
149 149
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
158dPreviousValue = dCurrent; 158if(i==5){
159iPreviousOperator = 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;
162dCurrent = 0; 162 dPreviousValue = 0;
163iLenCurrent = 1; 163}else{
164bIsDec = false; 164 dPreviousValue = dCurrent;
165dDecCurrent = 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 **********************************************************************/
170void KeyPad::clearLCD(void){ 177void KeyPad::clearLCD(void){
171 178
172dCurrent = 0; 179dCurrent = 0;
173iLenCurrent = 1; 180iLenCurrent = 1;
174bIsDec = false; 181bIsDec = false;
175dDecCurrent = 0; 182dDecCurrent = 0;
176iPreviousOperator = 0; 183iPreviousOperator = 0;
177dPreviousValue = 0; 184dPreviousValue = 0;
@@ -191,17 +198,17 @@ dDecCurrent = 0.1;
191 198
192/*********************************************************************** 199/***********************************************************************
193 * SLOT: Display About Dialog... 200 * SLOT: Display About Dialog...
194 **********************************************************************/ 201 **********************************************************************/
195void KeyPad::aboutDialog(void){ 202void KeyPad::aboutDialog(void){
196 203
197QMessageBox::about( this, "About Euroconv", 204QMessageBox::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}