author | eric <eric> | 2003-02-21 10:39:29 (UTC) |
---|---|---|
committer | eric <eric> | 2003-02-21 10:39:29 (UTC) |
commit | 2d77abb5ff37abf61e04657431d7e0e1f5138d94 (patch) (side-by-side diff) | |
tree | c78d34380cb9e1722f41c56cda0bbbea394e2a1a | |
parent | d25a16d1fd34374e4d2815dec4d11b25b2049432 (diff) | |
download | opie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.zip opie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.tar.gz opie-2d77abb5ff37abf61e04657431d7e0e1f5138d94.tar.bz2 |
- Improve look 'n feel.
- fix a bug in '=' operation.
-rw-r--r-- | noncore/tools/euroconv/calcdisplay.cpp | 50 | ||||
-rw-r--r-- | noncore/tools/euroconv/calcdisplay.h | 38 | ||||
-rw-r--r-- | noncore/tools/euroconv/calckeypad.cpp | 36 | ||||
-rw-r--r-- | noncore/tools/euroconv/calckeypad.h | 2 | ||||
-rw-r--r-- | noncore/tools/euroconv/currency.h | 4 |
5 files changed, 103 insertions, 27 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 @@ -15,6 +15,7 @@ #include <stdio.h> #include <qvbox.h> +#include <qpixmap.h> #include "currency.h" #include "calcdisplay.h" @@ -24,40 +25,56 @@ 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); - } /*********************************************************************** @@ -113,11 +130,17 @@ 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); @@ -130,8 +153,6 @@ void LCDDisplay::cbbxChange(void){ double dCurrentValue; -printf("combo changes...\n"); - // get current value if(!iCurrentLCD){ dCurrentValue = lcdTop->value(); @@ -161,6 +182,9 @@ switch (iIndex){ case 2: // DM: Deutch Mark return(dValue*DM); break; + + default: + return 0; }//switch (iIndex) }// fct Eur2x @@ -185,4 +209,8 @@ switch (iIndex){ 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 @@ -18,10 +18,40 @@ #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 @@ -36,11 +66,13 @@ public slots: //signals: // void valueChanged( int ); private: - QVGroupBox *grpbxTop; + int grpbxStyle; + + QHGroupBox *grpbxTop; QComboBox *cbbxTop; QLCDNumber *lcdTop; - QVGroupBox *grpbxBottom; + QHGroupBox *grpbxBottom; QComboBox *cbbxBottom; QLCDNumber *lcdBottom; 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 @@ -21,6 +21,8 @@ KeyPad::KeyPad(LCDDisplay *lcd, QWidget *parent, const char *name ) : QGrid(5, parent, name){ +int i; +QButton *btnButton; // save lcd at init display = lcd; @@ -70,6 +72,12 @@ 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); @@ -77,6 +85,17 @@ 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 @@ -135,23 +154,16 @@ if(iPreviousOperator){ } 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; } - -} /*********************************************************************** * SLOT: clearLCD CE/C has been pressed **********************************************************************/ @@ -187,5 +199,9 @@ QMessageBox::about( this, "About Euroconv", "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 @@ -71,7 +71,7 @@ private: QButtonGroup *grpbtnOperators; - + void setAppearance(void); }; 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 @@ -15,6 +15,6 @@ // 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 }; |