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,157 +1,157 @@
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
126 **********************************************************************/ 126 **********************************************************************/
127void LCDDisplay::swapLCD(void){ 127void LCDDisplay::swapLCD(void){
128 128
129double dCurrentValue; 129double dCurrentValue;
130 130
131// get current value 131// get current value
132if(!iCurrentLCD){ 132if(!iCurrentLCD){
133 // iCurrentLCD = 0, lcdTop has current focus and is going to loose 133 // iCurrentLCD = 0, lcdTop has current focus and is going to loose
134 // it 134 // it
135 dCurrentValue = lcdTop->value(); 135 dCurrentValue = lcdTop->value();
136 iCurrentLCD = 1; 136 iCurrentLCD = 1;
137 grpbxTop->setFrameStyle(0); 137 grpbxTop->setFrameStyle(0);
138 grpbxBottom->setFrameStyle(grpbxStyle); 138 grpbxBottom->setFrameStyle(grpbxStyle);
139}else{ 139}else{
140 dCurrentValue = lcdBottom->value(); 140 dCurrentValue = lcdBottom->value();
141 iCurrentLCD = 0; 141 iCurrentLCD = 0;
142 grpbxTop->setFrameStyle(grpbxStyle); 142 grpbxTop->setFrameStyle(grpbxStyle);
143 grpbxBottom->setFrameStyle(0); 143 grpbxBottom->setFrameStyle(0);
144} 144}
145 145
146setValue(dCurrentValue); 146setValue(dCurrentValue);
147} 147}
148 148
149/*********************************************************************** 149/***********************************************************************
150 * SLOT: Currency change 150 * SLOT: Currency change
151 **********************************************************************/ 151 **********************************************************************/
152void LCDDisplay::cbbxChange(void){ 152void LCDDisplay::cbbxChange(void){
153 153
154double dCurrentValue; 154double dCurrentValue;
155 155
156// get current value 156// get current value
157if(!iCurrentLCD){ 157if(!iCurrentLCD){
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
@@ -20,195 +20,200 @@
20 20
21KeyPad::KeyPad(LCDDisplay *lcd, QWidget *parent, const char *name ) 21KeyPad::KeyPad(LCDDisplay *lcd, QWidget *parent, const char *name )
22 : QGrid(5, parent, name){ 22 : QGrid(5, parent, name){
23 23
24int i; 24int i;
25QButton *btnButton; 25QButton *btnButton;
26 26
27// save lcd at init 27// save lcd at init
28display = lcd; 28display = lcd;
29// Init variable 29// Init variable
30dCurrent = 0; 30dCurrent = 0;
31iLenCurrent = 1; 31iLenCurrent = 1;
32bIsDec = false; 32bIsDec = false;
33dDecCurrent = 0; 33dDecCurrent = 0;
34iPreviousOperator = 0; 34iPreviousOperator = 0;
35dPreviousValue = 0; 35dPreviousValue = 0;
36 36
37// First line 37// First line
38btnClear = new QPushButton("CE/C", this, "Clear"); 38btnClear = new QPushButton("CE/C", this, "Clear");
39btn7 = new QPushButton("7", this, "7"); 39btn7 = new QPushButton("7", this, "7");
40btn8 = new QPushButton("8", this, "8"); 40btn8 = new QPushButton("8", this, "8");
41btn9 = new QPushButton("9", this, "9"); 41btn9 = new QPushButton("9", this, "9");
42btnPlus = new QPushButton("+", this, "+"); 42btnPlus = new QPushButton("+", this, "+");
43// 2nd line 43// 2nd line
44btnPercent = new QPushButton("%", this, "percent"); 44btnPercent = new QPushButton("%", this, "percent");
45btn4 = new QPushButton("4", this, "4"); 45btn4 = new QPushButton("4", this, "4");
46btn5 = new QPushButton("5", this, "5"); 46btn5 = new QPushButton("5", this, "5");
47btn6 = new QPushButton("6", this, "6"); 47btn6 = new QPushButton("6", this, "6");
48btnMinus = new QPushButton("-", this, "-"); 48btnMinus = new QPushButton("-", this, "-");
49// 3rd line 49// 3rd line
50btnF1 = new QPushButton("",this, "F1"); 50btnF1 = new QPushButton("",this, "F1");
51btn1 = new QPushButton("1", this, "1"); 51btn1 = 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}