summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/euroconv/calcdisplay.cpp4
-rw-r--r--noncore/tools/euroconv/calckeypad.cpp13
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
@@ -1,125 +1,125 @@
1/**************************************************************************** 1/****************************************************************************
2 * 2 *
3 * File: calcdisplay.cpp 3 * File: calcdisplay.cpp
4 * 4 *
5 * Description: 5 * Description:
6 * 6 *
7 * 7 *
8 * Authors: Eric Santonacci <Eric.Santonacci@talc.fr> 8 * Authors: Eric Santonacci <Eric.Santonacci@talc.fr>
9 * 9 *
10 * Requirements: Qt 10 * Requirements: Qt
11 * 11 *
12 * $Id$ 12 * $Id$
13 * 13 *
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
24LCDDisplay::LCDDisplay( QWidget *parent, const char *name ) 24LCDDisplay::LCDDisplay( QWidget *parent, const char *name )
25 : QHBox( parent, name ){ 25 : QHBox( parent, name ){
26 26
27 27
28 28
29this->setMargin(5); 29this->setMargin(5);
30this->setSpacing(5); 30this->setSpacing(5);
31 31
32// Create display 32// Create display
33QVBox *vbxlayout = new QVBox (this); 33QVBox *vbxlayout = new QVBox (this);
34 34
35/*************** Top LCD ***********************/ 35/*************** Top LCD ***********************/
36grpbxTop = new QHGroupBox(vbxlayout, "grpbxTop"); 36grpbxTop = new QHGroupBox(vbxlayout, "grpbxTop");
37grpbxStyle = grpbxTop->frameStyle(); 37grpbxStyle = grpbxTop->frameStyle();
38grpbxTop->setMaximumHeight(48); 38grpbxTop->setMaximumHeight(48);
39 39
40cbbxTop = new QComboBox(grpbxTop, "cbbxTop"); 40cbbxTop = new QComboBox(grpbxTop, "cbbxTop");
41cbbxTop->setMaximumWidth(50); 41cbbxTop->setMaximumWidth(50);
42cbbxTop->insertStrList(aCurrency); 42cbbxTop->insertStrList(aCurrency);
43 43
44lcdTop = new QLCDNumber(10, grpbxTop, "lcdTop"); 44lcdTop = new QLCDNumber(10, grpbxTop, "lcdTop");
45lcdTop->setMode( QLCDNumber::DEC ); 45lcdTop->setMode( QLCDNumber::DEC );
46lcdTop->setSmallDecimalPoint(true); 46lcdTop->setSmallDecimalPoint(false);
47lcdTop->setSegmentStyle(QLCDNumber::Flat); 47lcdTop->setSegmentStyle(QLCDNumber::Flat);
48 48
49/************** Bottom LCD ************************/ 49/************** Bottom LCD ************************/
50grpbxBottom = new QHGroupBox(vbxlayout, "grpbxBottom"); 50grpbxBottom = new QHGroupBox(vbxlayout, "grpbxBottom");
51grpbxBottom->setMaximumHeight(46); 51grpbxBottom->setMaximumHeight(46);
52grpbxBottom->setFrameStyle(0); 52grpbxBottom->setFrameStyle(0);
53grpbxBottom->setFrameShadow(QFrame::MShadow); 53grpbxBottom->setFrameShadow(QFrame::MShadow);
54 54
55cbbxBottom = new QComboBox(grpbxBottom, "cbbxBottom"); 55cbbxBottom = new QComboBox(grpbxBottom, "cbbxBottom");
56cbbxBottom->setMaximumWidth(50); 56cbbxBottom->setMaximumWidth(50);
57cbbxBottom->insertStrList(aCurrency); 57cbbxBottom->insertStrList(aCurrency);
58 58
59lcdBottom = new QLCDNumber(10, grpbxBottom, "lcdBottom"); 59lcdBottom = new QLCDNumber(10, grpbxBottom, "lcdBottom");
60lcdBottom->setMode( QLCDNumber::DEC ); 60lcdBottom->setMode( QLCDNumber::DEC );
61lcdBottom->setSmallDecimalPoint(true); 61lcdBottom->setSmallDecimalPoint(false);
62lcdBottom->setSegmentStyle(QLCDNumber::Flat); 62lcdBottom->setSegmentStyle(QLCDNumber::Flat);
63 63
64// set combo box signals 64// set combo box signals
65connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange())); 65connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
66connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange())); 66connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
67 67
68btnSwap = new QPushButton(this, "swap"); 68btnSwap = new QPushButton(this, "swap");
69QPixmap imgSwap((const char**) swap_xpm); 69QPixmap imgSwap((const char**) swap_xpm);
70btnSwap->setPixmap(imgSwap); 70btnSwap->setPixmap(imgSwap);
71btnSwap->setFixedSize(20,40); 71btnSwap->setFixedSize(20,40);
72// set signal 72// set signal
73connect(btnSwap, SIGNAL(clicked()), this, SLOT(swapLCD())); 73connect(btnSwap, SIGNAL(clicked()), this, SLOT(swapLCD()));
74 74
75// set default LCD to top 75// set default LCD to top
76iCurrentLCD = 0; 76iCurrentLCD = 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 **********************************************************************/
83void LCDDisplay::setValue(double dSrcValue){ 83void LCDDisplay::setValue(double dSrcValue){
84 84
85double dDstValue=0; 85double dDstValue=0;
86 86
87int iSrcIndex; 87int iSrcIndex;
88int iDstIndex; 88int iDstIndex;
89 89
90 90
91// get item index of the focused 91// get item index of the focused
92if(!iCurrentLCD){ 92if(!iCurrentLCD){
93 iSrcIndex = cbbxTop->currentItem(); 93 iSrcIndex = cbbxTop->currentItem();
94 iDstIndex = cbbxBottom->currentItem(); 94 iDstIndex = cbbxBottom->currentItem();
95}else{ 95}else{
96 iSrcIndex = cbbxBottom->currentItem(); 96 iSrcIndex = cbbxBottom->currentItem();
97 iDstIndex = cbbxTop->currentItem(); 97 iDstIndex = cbbxTop->currentItem();
98} 98}
99 99
100if(iSrcIndex == iDstIndex) 100if(iSrcIndex == iDstIndex)
101 dDstValue = dSrcValue; 101 dDstValue = dSrcValue;
102else{ 102else{
103 if(iSrcIndex){ 103 if(iSrcIndex){
104 // we are NOT in Euro as iDstIndex <> 0 104 // we are NOT in Euro as iDstIndex <> 0
105 // Convert to Euro 105 // Convert to Euro
106 dDstValue = x2Euro(iSrcIndex, dSrcValue); 106 dDstValue = x2Euro(iSrcIndex, dSrcValue);
107 dDstValue = Euro2x(iDstIndex, dDstValue); 107 dDstValue = Euro2x(iDstIndex, dDstValue);
108 }else 108 }else
109 // We are in Euro 109 // We are in Euro
110 dDstValue = Euro2x(iDstIndex, dSrcValue); 110 dDstValue = Euro2x(iDstIndex, dSrcValue);
111} 111}
112 112
113 113
114if(!iCurrentLCD){ 114if(!iCurrentLCD){
115 lcdTop->display(dSrcValue); 115 lcdTop->display(dSrcValue);
116 lcdBottom->display(dDstValue); 116 lcdBottom->display(dDstValue);
117}else{ 117}else{
118 lcdBottom->display(dSrcValue); 118 lcdBottom->display(dSrcValue);
119 lcdTop->display(dDstValue); 119 lcdTop->display(dDstValue);
120} 120}
121 121
122} 122}
123 123
124/*********************************************************************** 124/***********************************************************************
125 * SLOT: Swap output keypad between LCD displays 125 * SLOT: Swap output keypad between LCD displays
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
@@ -52,163 +52,168 @@ btn1 = new QPushButton("1", this, "1");
52btn2 = new QPushButton("2", this, "2"); 52btn2 = new QPushButton("2", this, "2");
53btn3 = new QPushButton("3", this, "3"); 53btn3 = new QPushButton("3", this, "3");
54btnMultiply = new QPushButton("X", this, "X"); 54btnMultiply = new QPushButton("X", this, "X");
55// 4th line 55// 4th line
56btnAbout = new QPushButton("?", this, "About"); 56btnAbout = new QPushButton("?", this, "About");
57btn0 = new QPushButton("0", this, "0"); 57btn0 = new QPushButton("0", this, "0");
58btnDot = new QPushButton(".", this, "dot"); 58btnDot = new QPushButton(".", this, "dot");
59btnEqual = new QPushButton("=", this, "equal"); 59btnEqual = new QPushButton("=", this, "equal");
60btnDivide = new QPushButton("/", this, "divide"); 60btnDivide = new QPushButton("/", this, "divide");
61 61
62// Digit key 62// Digit key
63grpbtnDigits = new QButtonGroup(0, "digits"); 63grpbtnDigits = new QButtonGroup(0, "digits");
64grpbtnDigits->insert(btn0, 0); 64grpbtnDigits->insert(btn0, 0);
65grpbtnDigits->insert(btn1, 1); 65grpbtnDigits->insert(btn1, 1);
66grpbtnDigits->insert(btn2, 2); 66grpbtnDigits->insert(btn2, 2);
67grpbtnDigits->insert(btn3, 3); 67grpbtnDigits->insert(btn3, 3);
68grpbtnDigits->insert(btn4, 4); 68grpbtnDigits->insert(btn4, 4);
69grpbtnDigits->insert(btn5, 5); 69grpbtnDigits->insert(btn5, 5);
70grpbtnDigits->insert(btn6, 6); 70grpbtnDigits->insert(btn6, 6);
71grpbtnDigits->insert(btn7, 7); 71grpbtnDigits->insert(btn7, 7);
72grpbtnDigits->insert(btn8, 8); 72grpbtnDigits->insert(btn8, 8);
73grpbtnDigits->insert(btn9, 9); 73grpbtnDigits->insert(btn9, 9);
74 74
75// set appearance of buttons 75// set appearance of buttons
76for(i=0; i<10; i++){ 76for(i=0; i<10; i++){
77 btnButton = grpbtnDigits->find(i); 77 btnButton = grpbtnDigits->find(i);
78 btnButton->setFixedSize(30,30); 78 btnButton->setFixedSize(30,30);
79} 79}
80 80
81// Operator key 81// Operator key
82grpbtnOperators = new QButtonGroup(0, "operator"); 82grpbtnOperators = new QButtonGroup(0, "operator");
83grpbtnOperators->insert(btnPlus, 1); 83grpbtnOperators->insert(btnPlus, 1);
84grpbtnOperators->insert(btnMinus,2); 84grpbtnOperators->insert(btnMinus,2);
85grpbtnOperators->insert(btnMultiply,3); 85grpbtnOperators->insert(btnMultiply,3);
86grpbtnOperators->insert(btnDivide,4); 86grpbtnOperators->insert(btnDivide,4);
87grpbtnOperators->insert(btnEqual,5); 87grpbtnOperators->insert(btnEqual,5);
88// set appearance of buttons 88// set appearance of buttons
89for(i=1; i<6; i++){ 89for(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}
93btnClear->setFixedSize(30,30); 93btnClear->setFixedSize(30,30);
94btnClear->setPalette(QPalette( QColor(255, 99, 71) ) ); 94btnClear->setPalette(QPalette( QColor(255, 99, 71) ) );
95btnDot->setFixedSize(30,30); 95btnDot->setFixedSize(30,30);
96btnPercent->setFixedSize(30,30); 96btnPercent->setFixedSize(30,30);
97btnF1->setFixedSize(30,30); 97btnF1->setFixedSize(30,30);
98btnAbout->setFixedSize(30,30); 98btnAbout->setFixedSize(30,30);
99 99
100 100
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 if(bIsDec) {
117 dCurrent = i*dDecCurrent;
118 dDecCurrent /= 10;
119 }
120 else
121 dCurrent = i;
117else if(iLenCurrent > 9) 122else if(iLenCurrent > 9)
118 return; 123 return;
119else if(!bIsDec){ 124else 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
128display->setValue(dCurrent); 133display->setValue(dCurrent);
129} 134}
130 135
131/*********************************************************************** 136/***********************************************************************
132 * SLOT: Operator has been pressed 137 * SLOT: Operator has been pressed
133 **********************************************************************/ 138 **********************************************************************/
134void KeyPad::operatorPressed(int i){ 139void KeyPad::operatorPressed(int i){
135 140
136if(iPreviousOperator){ 141if(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;
149 154
150 case 4: // Divide / 155 case 4: // Divide /
151 dCurrent = dPreviousValue / dCurrent; 156 dCurrent = dPreviousValue / dCurrent;
152 break; 157 break;
153 158
154 } 159 }
155 display->setValue(dCurrent); 160 display->setValue(dCurrent);
156} 161}
157 162
158if(i==5){ 163if(i==5){
159 // ensure we won't be able to enter more digits 164 // ensure we won't be able to enter more digits
160 iLenCurrent = 100; 165 iLenCurrent = 100;
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 **********************************************************************/
177void KeyPad::clearLCD(void){ 182void KeyPad::clearLCD(void){
178 183
179dCurrent = 0; 184dCurrent = 0;
180iLenCurrent = 1; 185iLenCurrent = 1;
181bIsDec = false; 186bIsDec = false;
182dDecCurrent = 0; 187dDecCurrent = 0;
183iPreviousOperator = 0; 188iPreviousOperator = 0;
184dPreviousValue = 0; 189dPreviousValue = 0;
185display->setValue(0); 190display->setValue(0);
186} 191}
187 192
188/*********************************************************************** 193/***********************************************************************
189 * SLOT: gotoDec Dot has been pressed 194 * SLOT: gotoDec Dot has been pressed
190 **********************************************************************/ 195 **********************************************************************/
191void KeyPad::gotoDec(void){ 196void KeyPad::gotoDec(void){
192 197
193bIsDec = true; 198 bIsDec = true;
194dDecCurrent = 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 **********************************************************************/
202void KeyPad::aboutDialog(void){ 207void KeyPad::aboutDialog(void){
203 208
204QMessageBox::about( this, "About Euroconv", 209QMessageBox::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}