summaryrefslogtreecommitdiff
authoreric <eric>2003-02-21 10:39:29 (UTC)
committer eric <eric>2003-02-21 10:39:29 (UTC)
commit2d77abb5ff37abf61e04657431d7e0e1f5138d94 (patch) (side-by-side diff)
treec78d34380cb9e1722f41c56cda0bbbea394e2a1a
parentd25a16d1fd34374e4d2815dec4d11b25b2049432 (diff)
downloadopie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.zip
opie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.tar.gz
opie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.tar.bz2
- Improve look 'n feel.
- fix a bug in '=' operation.
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--noncore/tools/euroconv/calcdisplay.cpp50
-rw-r--r--noncore/tools/euroconv/calcdisplay.h38
-rw-r--r--noncore/tools/euroconv/calckeypad.cpp48
-rw-r--r--noncore/tools/euroconv/calckeypad.h2
-rw-r--r--noncore/tools/euroconv/currency.h4
5 files changed, 109 insertions, 33 deletions
diff --git a/noncore/tools/euroconv/calcdisplay.cpp b/noncore/tools/euroconv/calcdisplay.cpp
index 06e5158..1659858 100644
--- a/noncore/tools/euroconv/calcdisplay.cpp
+++ b/noncore/tools/euroconv/calcdisplay.cpp
@@ -12,55 +12,72 @@
* $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);
-grpbxTop = new QVGroupBox(vbxlayout, "grpbxTop");
+/*************** 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->setSegmentStyle(QLCDNumber::Flat);
-cbbxTop->insertStrList(aCurrency);
-grpbxBottom = new QVGroupBox(vbxlayout, "grpbxBottom");
+/************** 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->setSegmentStyle(QLCDNumber::Flat);
-cbbxBottom->insertStrList(aCurrency);
// set combo box signals
connect(cbbxTop, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
connect(cbbxBottom, SIGNAL(activated(int)), this, SLOT(cbbxChange()));
-btnSwap = new QPushButton("S",this, "swap");
-btnSwap->setMaximumSize(20,50);
-btnSwap->setMinimumSize(20,50);
+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;
-//setValue(123.456);
-
}
/***********************************************************************
* SLOT: Display value in the correct LCD
**********************************************************************/
void LCDDisplay::setValue(double dSrcValue){
@@ -110,31 +127,35 @@ if(!iCurrentLCD){
void LCDDisplay::swapLCD(void){
double dCurrentValue;
// get current value
if(!iCurrentLCD){
+ // iCurrentLCD = 0, lcdTop has current focus and is going to loose
+ // it
dCurrentValue = lcdTop->value();
iCurrentLCD = 1;
+ grpbxTop->setFrameStyle(0);
+ grpbxBottom->setFrameStyle(grpbxStyle);
}else{
dCurrentValue = lcdBottom->value();
iCurrentLCD = 0;
+ grpbxTop->setFrameStyle(grpbxStyle);
+ grpbxBottom->setFrameStyle(0);
}
setValue(dCurrentValue);
}
/***********************************************************************
* SLOT: Currency change
**********************************************************************/
void LCDDisplay::cbbxChange(void){
double dCurrentValue;
-printf("combo changes...\n");
-
// get current value
if(!iCurrentLCD){
dCurrentValue = lcdTop->value();
}else{
dCurrentValue = lcdBottom->value();
}
@@ -158,12 +179,15 @@ switch (iIndex){
return(dValue*FF);
break;
case 2: // DM: Deutch Mark
return(dValue*DM);
break;
+
+ default:
+ return 0;
}//switch (iIndex)
}// fct Eur2x
/***********************************************************************
@@ -182,7 +206,11 @@ switch (iIndex){
break;
case 2: // DM: Deutch Mark
return(dValue/DM);
break;
}//switch (iIndex)
+
+// we shouldn't come here
+return 0;
+
}// fct x2Euro
diff --git a/noncore/tools/euroconv/calcdisplay.h b/noncore/tools/euroconv/calcdisplay.h
index 17ce8f4..d1902cf 100644
--- a/noncore/tools/euroconv/calcdisplay.h
+++ b/noncore/tools/euroconv/calcdisplay.h
@@ -15,16 +15,46 @@
***************************************************************************/
#ifndef CALCDISPLAY_H
#define CALCDISPLAY_H
#include <qhbox.h>
#include <qlcdnumber.h>
-#include <qvgroupbox.h>
+#include <qhgroupbox.h>
#include <qpushbutton.h>
#include <qcombobox.h>
+
+/* XPM */
+static char *swap_xpm[] = {
+/* width height num_colors chars_per_pixel */
+" 13 18 2 1",
+/* colors */
+". c None",
+"# c #000000",
+/* pixels */
+"..#######....",
+"..#####......",
+"..######.....",
+"..#...###....",
+"........##...",
+".........##..",
+"..........##.",
+"...........##",
+"...........##",
+"...........##",
+"...........##",
+"..........##.",
+".........##..",
+"........##...",
+"..#...###....",
+"..######.....",
+"..#####......",
+"..#######....",
+};
+
+
class LCDDisplay : public QHBox{
Q_OBJECT
public:
LCDDisplay( QWidget *parent=0, const char *name=0 );
@@ -33,17 +63,19 @@ public slots:
void swapLCD(void);
void cbbxChange(void);
//signals:
// void valueChanged( int );
private:
- QVGroupBox *grpbxTop;
+ int grpbxStyle;
+
+ QHGroupBox *grpbxTop;
QComboBox *cbbxTop;
QLCDNumber *lcdTop;
- QVGroupBox *grpbxBottom;
+ QHGroupBox *grpbxBottom;
QComboBox *cbbxBottom;
QLCDNumber *lcdBottom;
QPushButton *btnSwap;
int iCurrentLCD; // 0=top, 1=bottom
diff --git a/noncore/tools/euroconv/calckeypad.cpp b/noncore/tools/euroconv/calckeypad.cpp
index 4156570..f1d61c0 100644
--- a/noncore/tools/euroconv/calckeypad.cpp
+++ b/noncore/tools/euroconv/calckeypad.cpp
@@ -18,12 +18,14 @@
#include "calckeypad.h"
KeyPad::KeyPad(LCDDisplay *lcd, QWidget *parent, const char *name )
: QGrid(5, parent, name){
+int i;
+QButton *btnButton;
// save lcd at init
display = lcd;
// Init variable
dCurrent = 0;
iLenCurrent = 1;
@@ -67,19 +69,36 @@ 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()));
@@ -132,28 +151,21 @@ if(iPreviousOperator){
dCurrent = dPreviousValue / dCurrent;
break;
}
display->setValue(dCurrent);
}
-if(i == 5){
- // key '=' pressed
- dPreviousValue = 0;
- iPreviousOperator = 0;
- // We don't want to add digits
- iLenCurrent = 100;
-}else{
- dPreviousValue = dCurrent;
- iPreviousOperator = i;
- // reset LCD for next digit
- dCurrent = 0;
- iLenCurrent = 1;
- bIsDec = false;
- dDecCurrent = 0;
-}
+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){
@@ -184,8 +196,12 @@ 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" );
+ "http://opie.handhelds.org\n\n"
+ "Version 0.2\n\n"
+ "Any comment or feedback to:\n"
+ "Eric.Santonacci@talc.fr\n");
+
}
diff --git a/noncore/tools/euroconv/calckeypad.h b/noncore/tools/euroconv/calckeypad.h
index 42e7eb3..aac3f41 100644
--- a/noncore/tools/euroconv/calckeypad.h
+++ b/noncore/tools/euroconv/calckeypad.h
@@ -68,11 +68,11 @@ private:
QPushButton *btnPercent;
QPushButton *btnF1;
QPushButton *btnAbout;
QButtonGroup *grpbtnOperators;
-
+ void setAppearance(void);
};
#endif // CALCKEYPAD_H
diff --git a/noncore/tools/euroconv/currency.h b/noncore/tools/euroconv/currency.h
index 90f5b57..d9ee75c 100644
--- a/noncore/tools/euroconv/currency.h
+++ b/noncore/tools/euroconv/currency.h
@@ -12,9 +12,9 @@
*
***************************************************************************/
// 1 Euro equal....
#define EURO 1 // Euro
#define FF 6.55957 // French Francs
-#define DM 1.96 // Deutch Mark
+#define DM 1.9594 // Deutch Mark
-static const char* aCurrency[] = { "Euro", "French Frs", "DM", 0 };
+static const char* aCurrency[] = { "Euro", "FF", "DM", 0 };