author | eric <eric> | 2003-04-15 07:42:19 (UTC) |
---|---|---|
committer | eric <eric> | 2003-04-15 07:42:19 (UTC) |
commit | e263613e83b64fa93b5f3c1b904715daf076cc78 (patch) (unidiff) | |
tree | 2c41969e72ec324cb60e0c34516b945832f89c10 | |
parent | 99b059a9d6f16f1e30b0088d35deacf8b9384f28 (diff) | |
download | opie-e263613e83b64fa93b5f3c1b904715daf076cc78.zip opie-e263613e83b64fa93b5f3c1b904715daf076cc78.tar.gz opie-e263613e83b64fa93b5f3c1b904715daf076cc78.tar.bz2 |
- Fix a bug with numbers between 0 and 1.
-rw-r--r-- | noncore/tools/euroconv/calcdisplay.cpp | 4 | ||||
-rw-r--r-- | noncore/tools/euroconv/calckeypad.cpp | 13 |
2 files changed, 11 insertions, 6 deletions
diff --git a/noncore/tools/euroconv/calcdisplay.cpp b/noncore/tools/euroconv/calcdisplay.cpp index 898de81..e5a49e6 100644 --- a/noncore/tools/euroconv/calcdisplay.cpp +++ b/noncore/tools/euroconv/calcdisplay.cpp | |||
@@ -14,80 +14,80 @@ | |||
14 | ***************************************************************************/ | 14 | ***************************************************************************/ |
15 | 15 | ||
16 | #include <stdio.h> | 16 | #include <stdio.h> |
17 | #include <qvbox.h> | 17 | #include <qvbox.h> |
18 | #include <qpixmap.h> | 18 | #include <qpixmap.h> |
19 | 19 | ||
20 | #include "currency.h" | 20 | #include "currency.h" |
21 | #include "calcdisplay.h" | 21 | #include "calcdisplay.h" |
22 | 22 | ||
23 | 23 | ||
24 | LCDDisplay::LCDDisplay( QWidget *parent, const char *name ) | 24 | LCDDisplay::LCDDisplay( QWidget *parent, const char *name ) |
25 | : QHBox( parent, name ){ | 25 | : QHBox( parent, name ){ |
26 | 26 | ||
27 | 27 | ||
28 | 28 | ||
29 | this->setMargin(5); | 29 | this->setMargin(5); |
30 | this->setSpacing(5); | 30 | this->setSpacing(5); |
31 | 31 | ||
32 | // Create display | 32 | // Create display |
33 | QVBox *vbxlayout = new QVBox (this); | 33 | QVBox *vbxlayout = new QVBox (this); |
34 | 34 | ||
35 | /*************** Top LCD ***********************/ | 35 | /*************** Top LCD ***********************/ |
36 | grpbxTop = new QHGroupBox(vbxlayout, "grpbxTop"); | 36 | grpbxTop = new QHGroupBox(vbxlayout, "grpbxTop"); |
37 | grpbxStyle = grpbxTop->frameStyle(); | 37 | grpbxStyle = grpbxTop->frameStyle(); |
38 | grpbxTop->setMaximumHeight(48); | 38 | grpbxTop->setMaximumHeight(48); |
39 | 39 | ||
40 | cbbxTop = new QComboBox(grpbxTop, "cbbxTop"); | 40 | cbbxTop = new QComboBox(grpbxTop, "cbbxTop"); |
41 | cbbxTop->setMaximumWidth(50); | 41 | cbbxTop->setMaximumWidth(50); |
42 | cbbxTop->insertStrList(aCurrency); | 42 | cbbxTop->insertStrList(aCurrency); |
43 | 43 | ||
44 | lcdTop = new QLCDNumber(10, grpbxTop, "lcdTop"); | 44 | lcdTop = new QLCDNumber(10, grpbxTop, "lcdTop"); |
45 | lcdTop->setMode( QLCDNumber::DEC ); | 45 | lcdTop->setMode( QLCDNumber::DEC ); |
46 | lcdTop->setSmallDecimalPoint(true); | 46 | lcdTop->setSmallDecimalPoint(false); |
47 | lcdTop->setSegmentStyle(QLCDNumber::Flat); | 47 | lcdTop->setSegmentStyle(QLCDNumber::Flat); |
48 | 48 | ||
49 | /************** Bottom LCD ************************/ | 49 | /************** Bottom LCD ************************/ |
50 | grpbxBottom = new QHGroupBox(vbxlayout, "grpbxBottom"); | 50 | grpbxBottom = new QHGroupBox(vbxlayout, "grpbxBottom"); |
51 | grpbxBottom->setMaximumHeight(46); | 51 | grpbxBottom->setMaximumHeight(46); |
52 | grpbxBottom->setFrameStyle(0); | 52 | grpbxBottom->setFrameStyle(0); |
53 | grpbxBottom->setFrameShadow(QFrame::MShadow); | 53 | grpbxBottom->setFrameShadow(QFrame::MShadow); |
54 | 54 | ||
55 | cbbxBottom = new QComboBox(grpbxBottom, "cbbxBottom"); | 55 | cbbxBottom = new QComboBox(grpbxBottom, "cbbxBottom"); |
56 | cbbxBottom->setMaximumWidth(50); | 56 | cbbxBottom->setMaximumWidth(50); |
57 | cbbxBottom->insertStrList(aCurrency); | 57 | cbbxBottom->insertStrList(aCurrency); |
58 | 58 | ||
59 | lcdBottom = new QLCDNumber(10, grpbxBottom, "lcdBottom"); | 59 | lcdBottom = new QLCDNumber(10, grpbxBottom, "lcdBottom"); |
60 | lcdBottom->setMode( QLCDNumber::DEC ); | 60 | lcdBottom->setMode( QLCDNumber::DEC ); |
61 | lcdBottom->setSmallDecimalPoint(true); | 61 | lcdBottom->setSmallDecimalPoint(false); |
62 | lcdBottom->setSegmentStyle(QLCDNumber::Flat); | 62 | lcdBottom->setSegmentStyle(QLCDNumber::Flat); |
63 | 63 | ||
64 | // set combo box signals | 64 | // set combo box signals |
65 | connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange())); | 65 | connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange())); |
66 | connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange())); | 66 | connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange())); |
67 | 67 | ||
68 | btnSwap = new QPushButton(this, "swap"); | 68 | btnSwap = new QPushButton(this, "swap"); |
69 | QPixmap imgSwap((const char**) swap_xpm); | 69 | QPixmap imgSwap((const char**) swap_xpm); |
70 | btnSwap->setPixmap(imgSwap); | 70 | btnSwap->setPixmap(imgSwap); |
71 | btnSwap->setFixedSize(20,40); | 71 | btnSwap->setFixedSize(20,40); |
72 | // set signal | 72 | // set signal |
73 | connect(btnSwap, SIGNAL(clicked()), this, SLOT(swapLCD())); | 73 | connect(btnSwap, SIGNAL(clicked()), this, SLOT(swapLCD())); |
74 | 74 | ||
75 | // set default LCD to top | 75 | // set default LCD to top |
76 | iCurrentLCD = 0; | 76 | iCurrentLCD = 0; |
77 | 77 | ||
78 | } | 78 | } |
79 | 79 | ||
80 | /*********************************************************************** | 80 | /*********************************************************************** |
81 | * SLOT: Display value in the correct LCD | 81 | * SLOT: Display value in the correct LCD |
82 | **********************************************************************/ | 82 | **********************************************************************/ |
83 | void LCDDisplay::setValue(double dSrcValue){ | 83 | void LCDDisplay::setValue(double dSrcValue){ |
84 | 84 | ||
85 | double dDstValue=0; | 85 | double dDstValue=0; |
86 | 86 | ||
87 | int iSrcIndex; | 87 | int iSrcIndex; |
88 | int iDstIndex; | 88 | int iDstIndex; |
89 | 89 | ||
90 | 90 | ||
91 | // get item index of the focused | 91 | // get item index of the focused |
92 | if(!iCurrentLCD){ | 92 | if(!iCurrentLCD){ |
93 | iSrcIndex = cbbxTop->currentItem(); | 93 | iSrcIndex = cbbxTop->currentItem(); |
diff --git a/noncore/tools/euroconv/calckeypad.cpp b/noncore/tools/euroconv/calckeypad.cpp index 1678095..e4898a3 100644 --- a/noncore/tools/euroconv/calckeypad.cpp +++ b/noncore/tools/euroconv/calckeypad.cpp | |||
@@ -84,65 +84,70 @@ grpbtnOperators->insert(btnPlus, 1); | |||
84 | grpbtnOperators->insert(btnMinus,2); | 84 | grpbtnOperators->insert(btnMinus,2); |
85 | grpbtnOperators->insert(btnMultiply,3); | 85 | grpbtnOperators->insert(btnMultiply,3); |
86 | grpbtnOperators->insert(btnDivide,4); | 86 | grpbtnOperators->insert(btnDivide,4); |
87 | grpbtnOperators->insert(btnEqual,5); | 87 | grpbtnOperators->insert(btnEqual,5); |
88 | // set appearance of buttons | 88 | // set appearance of buttons |
89 | for(i=1; i<6; i++){ | 89 | for(i=1; i<6; i++){ |
90 | btnButton = grpbtnOperators->find(i); | 90 | btnButton = grpbtnOperators->find(i); |
91 | btnButton->setFixedSize(30,30); | 91 | btnButton->setFixedSize(30,30); |
92 | } | 92 | } |
93 | btnClear->setFixedSize(30,30); | 93 | btnClear->setFixedSize(30,30); |
94 | btnClear->setPalette(QPalette( QColor(255, 99, 71) ) ); | 94 | btnClear->setPalette(QPalette( QColor(255, 99, 71) ) ); |
95 | btnDot->setFixedSize(30,30); | 95 | btnDot->setFixedSize(30,30); |
96 | btnPercent->setFixedSize(30,30); | 96 | btnPercent->setFixedSize(30,30); |
97 | btnF1->setFixedSize(30,30); | 97 | btnF1->setFixedSize(30,30); |
98 | btnAbout->setFixedSize(30,30); | 98 | btnAbout->setFixedSize(30,30); |
99 | 99 | ||
100 | 100 | ||
101 | // SIGNALS AND SLOTS | 101 | // SIGNALS AND SLOTS |
102 | connect(grpbtnDigits, SIGNAL(clicked(int) ), this, SLOT(enterDigits(int))); | 102 | connect(grpbtnDigits, SIGNAL(clicked(int) ), this, SLOT(enterDigits(int))); |
103 | connect(grpbtnOperators, SIGNAL(clicked(int)), this, SLOT(operatorPressed(int))); | 103 | connect(grpbtnOperators, SIGNAL(clicked(int)), this, SLOT(operatorPressed(int))); |
104 | connect(btnClear, SIGNAL(clicked()), this, SLOT(clearLCD())); | 104 | connect(btnClear, SIGNAL(clicked()), this, SLOT(clearLCD())); |
105 | connect(btnAbout, SIGNAL(clicked()), this, SLOT(aboutDialog())); | 105 | connect(btnAbout, SIGNAL(clicked()), this, SLOT(aboutDialog())); |
106 | connect(btnDot, SIGNAL(clicked()), this, SLOT(gotoDec())); | 106 | connect(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 | **********************************************************************/ |
113 | void KeyPad::enterDigits(int i){ | 113 | void KeyPad::enterDigits(int i){ |
114 | 114 | ||
115 | if(!dCurrent) | 115 | if(!dCurrent) |
116 | dCurrent = i; | 116 | if(bIsDec) { |
117 | dCurrent = i*dDecCurrent; | ||
118 | dDecCurrent /= 10; | ||
119 | } | ||
120 | else | ||
121 | dCurrent = i; | ||
117 | else if(iLenCurrent > 9) | 122 | else if(iLenCurrent > 9) |
118 | return; | 123 | return; |
119 | else if(!bIsDec){ | 124 | else if(!bIsDec){ |
120 | dCurrent *= 10; | 125 | dCurrent *= 10; |
121 | dCurrent += i; | 126 | dCurrent += i; |
122 | iLenCurrent++; | 127 | iLenCurrent++; |
123 | }else{ | 128 | }else{ |
124 | dCurrent += i*dDecCurrent; | 129 | dCurrent += i*dDecCurrent; |
125 | dDecCurrent /= 10; | 130 | dDecCurrent /= 10; |
126 | } | 131 | } |
127 | 132 | ||
128 | display->setValue(dCurrent); | 133 | display->setValue(dCurrent); |
129 | } | 134 | } |
130 | 135 | ||
131 | /*********************************************************************** | 136 | /*********************************************************************** |
132 | * SLOT: Operator has been pressed | 137 | * SLOT: Operator has been pressed |
133 | **********************************************************************/ | 138 | **********************************************************************/ |
134 | void KeyPad::operatorPressed(int i){ | 139 | void KeyPad::operatorPressed(int i){ |
135 | 140 | ||
136 | if(iPreviousOperator){ | 141 | if(iPreviousOperator){ |
137 | switch(iPreviousOperator){ | 142 | switch(iPreviousOperator){ |
138 | case 1: // Plus + | 143 | case 1: // Plus + |
139 | dCurrent += dPreviousValue; | 144 | dCurrent += dPreviousValue; |
140 | break; | 145 | break; |
141 | 146 | ||
142 | case 2: // Minus - | 147 | case 2: // Minus - |
143 | dCurrent = dPreviousValue - dCurrent; | 148 | dCurrent = dPreviousValue - dCurrent; |
144 | break; | 149 | break; |
145 | 150 | ||
146 | case 3: // Multiply * | 151 | case 3: // Multiply * |
147 | dCurrent *= dPreviousValue; | 152 | dCurrent *= dPreviousValue; |
148 | break; | 153 | break; |
@@ -161,54 +166,54 @@ if(i==5){ | |||
161 | iPreviousOperator = 0; | 166 | iPreviousOperator = 0; |
162 | dPreviousValue = 0; | 167 | dPreviousValue = 0; |
163 | }else{ | 168 | }else{ |
164 | dPreviousValue = dCurrent; | 169 | dPreviousValue = dCurrent; |
165 | iPreviousOperator = i; | 170 | iPreviousOperator = i; |
166 | 171 | ||
167 | // reset LCD for next digit | 172 | // reset LCD for next digit |
168 | dCurrent = 0; | 173 | dCurrent = 0; |
169 | iLenCurrent = 1; | 174 | iLenCurrent = 1; |
170 | bIsDec = false; | 175 | bIsDec = false; |
171 | dDecCurrent = 0; | 176 | dDecCurrent = 0; |
172 | } | 177 | } |
173 | } | 178 | } |
174 | /*********************************************************************** | 179 | /*********************************************************************** |
175 | * SLOT: clearLCD CE/C has been pressed | 180 | * SLOT: clearLCD CE/C has been pressed |
176 | **********************************************************************/ | 181 | **********************************************************************/ |
177 | void KeyPad::clearLCD(void){ | 182 | void KeyPad::clearLCD(void){ |
178 | 183 | ||
179 | dCurrent = 0; | 184 | dCurrent = 0; |
180 | iLenCurrent = 1; | 185 | iLenCurrent = 1; |
181 | bIsDec = false; | 186 | bIsDec = false; |
182 | dDecCurrent = 0; | 187 | dDecCurrent = 0; |
183 | iPreviousOperator = 0; | 188 | iPreviousOperator = 0; |
184 | dPreviousValue = 0; | 189 | dPreviousValue = 0; |
185 | display->setValue(0); | 190 | display->setValue(0); |
186 | } | 191 | } |
187 | 192 | ||
188 | /*********************************************************************** | 193 | /*********************************************************************** |
189 | * SLOT: gotoDec Dot has been pressed | 194 | * SLOT: gotoDec Dot has been pressed |
190 | **********************************************************************/ | 195 | **********************************************************************/ |
191 | void KeyPad::gotoDec(void){ | 196 | void KeyPad::gotoDec(void){ |
192 | 197 | ||
193 | bIsDec = true; | 198 | bIsDec = true; |
194 | dDecCurrent = 0.1; | 199 | dDecCurrent = 0.1; |
195 | } | 200 | } |
196 | 201 | ||
197 | 202 | ||
198 | 203 | ||
199 | /*********************************************************************** | 204 | /*********************************************************************** |
200 | * SLOT: Display About Dialog... | 205 | * SLOT: Display About Dialog... |
201 | **********************************************************************/ | 206 | **********************************************************************/ |
202 | void KeyPad::aboutDialog(void){ | 207 | void KeyPad::aboutDialog(void){ |
203 | 208 | ||
204 | QMessageBox::about( this, "About Euroconv", | 209 | QMessageBox::about( this, "About Euroconv", |
205 | "Euroconv is an Euro converter\n\n" | 210 | "Euroconv is an Euro converter\n\n" |
206 | "Copyright 2003 TALC Informatique.\n" | 211 | "Copyright 2003 TALC Informatique.\n" |
207 | "Under GPL license\n\n" | 212 | "Under GPL license\n\n" |
208 | "Written by Eric Santonacci for Opie\n" | 213 | "Written by Eric Santonacci for Opie\n" |
209 | "http://opie.handhelds.org\n\n" | 214 | "http://opie.handhelds.org\n\n" |
210 | "Version 0.4\n\n" | 215 | "Version 0.5\n\n" |
211 | "Any comment or feedback to:\n" | 216 | "Any comment or feedback to:\n" |
212 | "Eric.Santonacci@talc.fr\n"); | 217 | "Eric.Santonacci@talc.fr\n"); |
213 | 218 | ||
214 | } | 219 | } |