-rw-r--r-- | noncore/tools/euroconv/calcdisplay.cpp | 28 | ||||
-rw-r--r-- | noncore/tools/euroconv/calcdisplay.h | 28 | ||||
-rw-r--r-- | noncore/tools/euroconv/main.cpp | 2 |
3 files changed, 29 insertions, 29 deletions
diff --git a/noncore/tools/euroconv/calcdisplay.cpp b/noncore/tools/euroconv/calcdisplay.cpp index e5a49e6..8f3de22 100644 --- a/noncore/tools/euroconv/calcdisplay.cpp +++ b/noncore/tools/euroconv/calcdisplay.cpp @@ -1,248 +1,276 @@ /**************************************************************************** * * 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" +/* XPM */ +static char *swap_xpm[] = { +/* width height num_colors chars_per_pixel */ +" 13 18 2 1", +/* colors */ +". c None", +"# c #000000", +/* pixels */ +"..#######....", +"..#####......", +"..######.....", +"..#...###....", +"........##...", +".........##..", +"..........##.", +"...........##", +"...........##", +"...........##", +"...........##", +"..........##.", +".........##..", +"........##...", +"..#...###....", +"..######.....", +"..#####......", +"..#######....", +}; + 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(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(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 dDstValue = Euro2x(iDstIndex, dSrcValue); } if(!iCurrentLCD){ lcdTop->display(dSrcValue); lcdBottom->display(dDstValue); }else{ lcdBottom->display(dSrcValue); lcdTop->display(dDstValue); } } /*********************************************************************** * SLOT: Swap output keypad between LCD displays **********************************************************************/ 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; // get current value if(!iCurrentLCD){ dCurrentValue = lcdTop->value(); }else{ dCurrentValue = lcdBottom->value(); } setValue(dCurrentValue); } /*********************************************************************** * Euro2x converts dValue from Euro to the currency which combo box * index is provided in iIndex. **********************************************************************/ double LCDDisplay::Euro2x(int iIndex, double dValue){ switch (iIndex){ case 0: // Euro return(dValue); break; case 1: // FF: French Francs return(dValue*FRF); break; case 2: // DM: Deutch Mark return(dValue*DEM); break; case 3: // BEL Belgium Francs return(dValue*BEF); break; case 4: // ITL Itialian Lire return(dValue*ITL); break; case 5: // LUF Luxemburg return(dValue*LUF); break; case 6: // IEP Irish Pound return(dValue*IEP); break; default: return 0; }//switch (iIndex) }// fct Eur2x /*********************************************************************** * x2Euro converts dValue to Euro from the currency which combo box * index is provided in iIndex. **********************************************************************/ double LCDDisplay::x2Euro(int iIndex, double dValue){ switch (iIndex){ case 0: // Euro return(dValue); break; case 1: // FF: French Francs return(dValue/FRF); break; case 2: // DM: Deutch Mark return(dValue/DEM); break; case 3: // BEL Belgium Francs return(dValue/BEF); break; case 4: // ITL Itialian Lire return(dValue/ITL); break; case 5: // LUF Luxemburg return(dValue/LUF); break; case 6: // IEP Irish Pound return(dValue/IEP); 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 d1902cf..a48ab77 100644 --- a/noncore/tools/euroconv/calcdisplay.h +++ b/noncore/tools/euroconv/calcdisplay.h @@ -1,89 +1,61 @@ /**************************************************************************** * * File: calcdisplay.h * * Description: Header file for the class LCDDisplay * * * Authors: Eric Santonacci <Eric.Santonacci@talc.fr> * * Requirements: Qt * * $Id$ * * ***************************************************************************/ #ifndef CALCDISPLAY_H #define CALCDISPLAY_H #include <qhbox.h> #include <qlcdnumber.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 ); public slots: void setValue(double); void swapLCD(void); void cbbxChange(void); //signals: // void valueChanged( int ); private: int grpbxStyle; QHGroupBox *grpbxTop; QComboBox *cbbxTop; QLCDNumber *lcdTop; QHGroupBox *grpbxBottom; QComboBox *cbbxBottom; QLCDNumber *lcdBottom; QPushButton *btnSwap; int iCurrentLCD; // 0=top, 1=bottom double Euro2x(int iIndex, double dValue); double x2Euro(int iIndex, double dValue); }; #endif // CALCDISPLAY_H diff --git a/noncore/tools/euroconv/main.cpp b/noncore/tools/euroconv/main.cpp index dd4ff1d..8b417fe 100644 --- a/noncore/tools/euroconv/main.cpp +++ b/noncore/tools/euroconv/main.cpp @@ -1,39 +1,39 @@ /**************************************************************************** * * File: main.cpp * * Description: main file for OPIE Euroconv aapp * * * Authors: Eric Santonacci <Eric.Santonacci@talc.fr> * * Requirements: Qt * * ***************************************************************************/ #include <qpe/qpeapplication.h> #include <qvbox.h> #include "calcdisplay.h" #include "calckeypad.h" #include <opie2/oapplicationfactory.h> struct Layout : QVBox{ static QString appName() { return QString::fromLatin1("euroconv"); } Layout(QWidget *p, const char* n, WFlags) :QVBox(0,"fond" ) { LCDDisplay *lcd = new LCDDisplay(this, "lcd"); - KeyPad *num = new KeyPad(lcd, this, "keypad"); + (void)new KeyPad(lcd, this, "keypad"); setCaption( QObject::tr("Euroconv") ); }; }; using namespace Opie::Core; OPIE_EXPORT_APP( OApplicationFactory<Layout> ) |