summaryrefslogtreecommitdiff
authoreric <eric>2003-04-15 07:42:19 (UTC)
committer eric <eric>2003-04-15 07:42:19 (UTC)
commite263613e83b64fa93b5f3c1b904715daf076cc78 (patch) (side-by-side diff)
tree2c41969e72ec324cb60e0c34516b945832f89c10
parent99b059a9d6f16f1e30b0088d35deacf8b9384f28 (diff)
downloadopie-e263613e83b64fa93b5f3c1b904715daf076cc78.zip
opie-e263613e83b64fa93b5f3c1b904715daf076cc78.tar.gz
opie-e263613e83b64fa93b5f3c1b904715daf076cc78.tar.bz2
- Fix a bug with numbers between 0 and 1.
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--noncore/tools/euroconv/calcdisplay.cpp4
-rw-r--r--noncore/tools/euroconv/calckeypad.cpp7
2 files changed, 8 insertions, 3 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,109 +1,109 @@
/****************************************************************************
*
* File: calcdisplay.cpp
*
* Description:
*
*
* Authors: Eric Santonacci <Eric.Santonacci@talc.fr>
*
* Requirements: Qt
*
* $Id$
*
***************************************************************************/
#include <stdio.h>
#include <qvbox.h>
#include <qpixmap.h>
#include "currency.h"
#include "calcdisplay.h"
LCDDisplay::LCDDisplay( QWidget *parent, const char *name )
: QHBox( parent, name ){
this->setMargin(5);
this->setSpacing(5);
// Create display
QVBox *vbxlayout = new QVBox (this);
/*************** Top LCD ***********************/
grpbxTop = new QHGroupBox(vbxlayout, "grpbxTop");
grpbxStyle = grpbxTop->frameStyle();
grpbxTop->setMaximumHeight(48);
cbbxTop = new QComboBox(grpbxTop, "cbbxTop");
cbbxTop->setMaximumWidth(50);
cbbxTop->insertStrList(aCurrency);
lcdTop = new QLCDNumber(10, grpbxTop, "lcdTop");
lcdTop->setMode( QLCDNumber::DEC );
-lcdTop->setSmallDecimalPoint(true);
+lcdTop->setSmallDecimalPoint(false);
lcdTop->setSegmentStyle(QLCDNumber::Flat);
/************** Bottom LCD ************************/
grpbxBottom = new QHGroupBox(vbxlayout, "grpbxBottom");
grpbxBottom->setMaximumHeight(46);
grpbxBottom->setFrameStyle(0);
grpbxBottom->setFrameShadow(QFrame::MShadow);
cbbxBottom = new QComboBox(grpbxBottom, "cbbxBottom");
cbbxBottom->setMaximumWidth(50);
cbbxBottom->insertStrList(aCurrency);
lcdBottom = new QLCDNumber(10, grpbxBottom, "lcdBottom");
lcdBottom->setMode( QLCDNumber::DEC );
-lcdBottom->setSmallDecimalPoint(true);
+lcdBottom->setSmallDecimalPoint(false);
lcdBottom->setSegmentStyle(QLCDNumber::Flat);
// set combo box signals
connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
btnSwap = new QPushButton(this, "swap");
QPixmap imgSwap((const char**) swap_xpm);
btnSwap->setPixmap(imgSwap);
btnSwap->setFixedSize(20,40);
// set signal
connect(btnSwap, SIGNAL(clicked()), this, SLOT(swapLCD()));
// set default LCD to top
iCurrentLCD = 0;
}
/***********************************************************************
* SLOT: Display value in the correct LCD
**********************************************************************/
void LCDDisplay::setValue(double dSrcValue){
double dDstValue=0;
int iSrcIndex;
int iDstIndex;
// get item index of the focused
if(!iCurrentLCD){
iSrcIndex = cbbxTop->currentItem();
iDstIndex = cbbxBottom->currentItem();
}else{
iSrcIndex = cbbxBottom->currentItem();
iDstIndex = cbbxTop->currentItem();
}
if(iSrcIndex == iDstIndex)
dDstValue = dSrcValue;
else{
if(iSrcIndex){
// we are NOT in Euro as iDstIndex <> 0
// Convert to Euro
dDstValue = x2Euro(iSrcIndex, dSrcValue);
dDstValue = Euro2x(iDstIndex, dDstValue);
}else
// We are in Euro
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
@@ -68,147 +68,152 @@ grpbtnDigits->insert(btn3, 3);
grpbtnDigits->insert(btn4, 4);
grpbtnDigits->insert(btn5, 5);
grpbtnDigits->insert(btn6, 6);
grpbtnDigits->insert(btn7, 7);
grpbtnDigits->insert(btn8, 8);
grpbtnDigits->insert(btn9, 9);
// set appearance of buttons
for(i=0; i<10; i++){
btnButton = grpbtnDigits->find(i);
btnButton->setFixedSize(30,30);
}
// Operator key
grpbtnOperators = new QButtonGroup(0, "operator");
grpbtnOperators->insert(btnPlus, 1);
grpbtnOperators->insert(btnMinus,2);
grpbtnOperators->insert(btnMultiply,3);
grpbtnOperators->insert(btnDivide,4);
grpbtnOperators->insert(btnEqual,5);
// set appearance of buttons
for(i=1; i<6; i++){
btnButton = grpbtnOperators->find(i);
btnButton->setFixedSize(30,30);
}
btnClear->setFixedSize(30,30);
btnClear->setPalette(QPalette( QColor(255, 99, 71) ) );
btnDot->setFixedSize(30,30);
btnPercent->setFixedSize(30,30);
btnF1->setFixedSize(30,30);
btnAbout->setFixedSize(30,30);
// SIGNALS AND SLOTS
connect(grpbtnDigits, SIGNAL(clicked(int) ), this, SLOT(enterDigits(int)));
connect(grpbtnOperators, SIGNAL(clicked(int)), this, SLOT(operatorPressed(int)));
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)
+ if(bIsDec) {
+ dCurrent = i*dDecCurrent;
+ dDecCurrent /= 10;
+ }
+ else
dCurrent = i;
else if(iLenCurrent > 9)
return;
else if(!bIsDec){
dCurrent *= 10;
dCurrent += i;
iLenCurrent++;
}else{
dCurrent += i*dDecCurrent;
dDecCurrent /= 10;
}
display->setValue(dCurrent);
}
/***********************************************************************
* SLOT: Operator has been pressed
**********************************************************************/
void KeyPad::operatorPressed(int i){
if(iPreviousOperator){
switch(iPreviousOperator){
case 1: // Plus +
dCurrent += dPreviousValue;
break;
case 2: // Minus -
dCurrent = dPreviousValue - dCurrent;
break;
case 3: // Multiply *
dCurrent *= dPreviousValue;
break;
case 4: // Divide /
dCurrent = dPreviousValue / dCurrent;
break;
}
display->setValue(dCurrent);
}
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;
display->setValue(0);
}
/***********************************************************************
* SLOT: gotoDec Dot has been pressed
**********************************************************************/
void KeyPad::gotoDec(void){
bIsDec = true;
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.4\n\n"
+ "Version 0.5\n\n"
"Any comment or feedback to:\n"
"Eric.Santonacci@talc.fr\n");
}