summaryrefslogtreecommitdiff
authoreric <eric>2003-02-21 14:07:05 (UTC)
committer eric <eric>2003-02-21 14:07:05 (UTC)
commitf16eeeaf5ce1f0d0bfad033e2526c0012c9ef868 (patch) (side-by-side diff)
tree8d6bf9403d2d6d33ba47ea3955e70427ecbcba9c
parent6917879c47d406b6f4ee234f84b89e17265dd0a5 (diff)
downloadopie-f16eeeaf5ce1f0d0bfad033e2526c0012c9ef868.zip
opie-f16eeeaf5ce1f0d0bfad033e2526c0012c9ef868.tar.gz
opie-f16eeeaf5ce1f0d0bfad033e2526c0012c9ef868.tar.bz2
- really fix the "=" bug as a power fail made the changes lost last
time.
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()));
connect(btnAbout, SIGNAL(clicked()), this, SLOT(aboutDialog()));
connect(btnDot, SIGNAL(clicked()), this, SLOT(gotoDec()));
}
/***********************************************************************
* SLOT: enterDigits calculates the value to display and display it.
**********************************************************************/
void KeyPad::enterDigits(int i){
if(!dCurrent)
dCurrent = i;
-else if(!bIsDec){
- if(iLenCurrent > 9)
+else if(iLenCurrent > 9)
return;
+else if(!bIsDec){
dCurrent *= 10;
dCurrent += i;
iLenCurrent++;
}else{
dCurrent += i*dDecCurrent;
dDecCurrent /= 10;
}
display->setValue(dCurrent);
}
/***********************************************************************
@@ -146,32 +146,39 @@ if(iPreviousOperator){
case 3: // Multiply *
dCurrent *= dPreviousValue;
break;
case 4: // Divide /
dCurrent = dPreviousValue / dCurrent;
break;
}
display->setValue(dCurrent);
}
-dPreviousValue = dCurrent;
-iPreviousOperator = i;
-
-// reset LCD for next digit
-dCurrent = 0;
-iLenCurrent = 1;
-bIsDec = false;
-dDecCurrent = 0;
+if(i==5){
+ // ensure we won't be able to enter more digits
+ iLenCurrent = 100;
+ iPreviousOperator = 0;
+ dPreviousValue = 0;
+}else{
+ dPreviousValue = dCurrent;
+ iPreviousOperator = i;
+
+ // reset LCD for next digit
+ dCurrent = 0;
+ iLenCurrent = 1;
+ bIsDec = false;
+ dDecCurrent = 0;
+}
}
/***********************************************************************
* SLOT: clearLCD CE/C has been pressed
**********************************************************************/
void KeyPad::clearLCD(void){
dCurrent = 0;
iLenCurrent = 1;
bIsDec = false;
dDecCurrent = 0;
iPreviousOperator = 0;
dPreviousValue = 0;
@@ -191,17 +198,17 @@ dDecCurrent = 0.1;
/***********************************************************************
* SLOT: Display About Dialog...
**********************************************************************/
void KeyPad::aboutDialog(void){
QMessageBox::about( this, "About Euroconv",
"Euroconv is an Euro converter\n\n"
"Copyright 2003 TALC Informatique.\n"
"Under GPL license\n\n"
"Written by Eric Santonacci for Opie\n"
"http://opie.handhelds.org\n\n"
- "Version 0.2\n\n"
+ "Version 0.3\n\n"
"Any comment or feedback to:\n"
"Eric.Santonacci@talc.fr\n");
}