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
@@ -101,35 +101,35 @@ btnAbout->setFixedSize(30,30);
101// SIGNALS AND SLOTS 101// SIGNALS AND SLOTS
102connect(grpbtnDigits, SIGNAL(clicked(int) ), this, SLOT(enterDigits(int))); 102connect(grpbtnDigits, SIGNAL(clicked(int) ), this, SLOT(enterDigits(int)));
103connect(grpbtnOperators, SIGNAL(clicked(int)), this, SLOT(operatorPressed(int))); 103connect(grpbtnOperators, SIGNAL(clicked(int)), this, SLOT(operatorPressed(int)));
104connect(btnClear, SIGNAL(clicked()), this, SLOT(clearLCD())); 104connect(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/***********************************************************************
132 * SLOT: Operator has been pressed 132 * SLOT: Operator has been pressed
133 **********************************************************************/ 133 **********************************************************************/
134void KeyPad::operatorPressed(int i){ 134void KeyPad::operatorPressed(int i){
135 135
@@ -142,40 +142,47 @@ if(iPreviousOperator){
142 case 2: // Minus - 142 case 2: // Minus -
143 dCurrent = dPreviousValue - dCurrent; 143 dCurrent = dPreviousValue - dCurrent;
144 break; 144 break;
145 145
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;
178display->setValue(0); 185display->setValue(0);
179} 186}
180 187
181/*********************************************************************** 188/***********************************************************************
@@ -187,21 +194,21 @@ bIsDec = true;
187dDecCurrent = 0.1; 194dDecCurrent = 0.1;
188} 195}
189 196
190 197
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}