-rw-r--r-- | noncore/apps/checkbook/calcdlg.ui | 44 | ||||
-rw-r--r-- | noncore/apps/checkbook/calcdlgui.cpp | 69 | ||||
-rw-r--r-- | noncore/apps/checkbook/calcdlgui.h | 29 | ||||
-rw-r--r-- | noncore/apps/checkbook/kmolcalc.cpp | 4 | ||||
-rw-r--r-- | noncore/apps/checkbook/oxygen.cpp | 5 | ||||
-rw-r--r-- | noncore/apps/checkbook/oxygen.pro | 4 |
6 files changed, 84 insertions, 71 deletions
diff --git a/noncore/apps/checkbook/calcdlg.ui b/noncore/apps/checkbook/calcdlg.ui index 7637ca8..e0b19f9 100644 --- a/noncore/apps/checkbook/calcdlg.ui +++ b/noncore/apps/checkbook/calcdlg.ui @@ -2,25 +2,25 @@ <class>CalcDlg</class> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>CalcDlg</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>0</y> - <width>222</width> + <width>218</width> <height>274</height> </rect> </property> <property stdset="1"> <name>caption</name> <string>Network Time</string> </property> <property> <name>layoutMargin</name> </property> <property> <name>layoutSpacing</name> @@ -91,44 +91,24 @@ <x>1</x> <y>1</y> <width>298</width> <height>16</height> </rect> </property> <property stdset="1"> <name>text</name> <string>Formula:</string> </property> </widget> <widget> - <class>QLabel</class> - <property stdset="1"> - <name>name</name> - <cstring>TextLabel2_4</cstring> - </property> - <property stdset="1"> - <name>geometry</name> - <rect> - <x>1</x> - <y>86</y> - <width>298</width> - <height>16</height> - </rect> - </property> - <property stdset="1"> - <name>text</name> - <string>Result:</string> - </property> - </widget> - <widget> <class>QLayoutWidget</class> <property stdset="1"> <name>name</name> <cstring>Layout7</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>50</y> <width>175</width> <height>30</height> @@ -194,36 +174,56 @@ <rect> <x>0</x> <y>130</y> <width>170</width> <height>80</height> </rect> </property> </widget> <widget> <class>QLineEdit</class> <property stdset="1"> <name>name</name> - <cstring>LineEdit2</cstring> + <cstring>result</cstring> </property> <property stdset="1"> <name>geometry</name> <rect> <x>0</x> <y>100</y> <width>170</width> <height>22</height> </rect> </property> </widget> + <widget> + <class>QLabel</class> + <property stdset="1"> + <name>name</name> + <cstring>TextLabel2_4</cstring> + </property> + <property stdset="1"> + <name>geometry</name> + <rect> + <x>1</x> + <y>86</y> + <width>298</width> + <height>16</height> + </rect> + </property> + <property stdset="1"> + <name>text</name> + <string>Result:</string> + </property> + </widget> </widget> </widget> <widget> <class>QWidget</class> <property stdset="1"> <name>name</name> <cstring>tabNtp</cstring> </property> <attribute> <name>title</name> <string>Nernst</string> </attribute> diff --git a/noncore/apps/checkbook/calcdlgui.cpp b/noncore/apps/checkbook/calcdlgui.cpp index a86374b..e9b40d3 100644 --- a/noncore/apps/checkbook/calcdlgui.cpp +++ b/noncore/apps/checkbook/calcdlgui.cpp @@ -1,52 +1,55 @@ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * ( at your option ) any later version. * * * - * ***********************************************************************/ + **************************************************************************/ #include "oxygen.h" -#include <qmenubar.h> -#include <qstatusbar.h> -#include <qpopupmenu.h> -#include <qlabel.h> -#include <qapplication.h> +#include "calcdlgui.h" +#include "kmolcalc.h" +#include <qlineedit.h> +#include <qmultilineedit.h> #include <qpushbutton.h> -#include <qfile.h> -#include <qdir.h> -#include <qvbox.h> -#include "calcdlg.h" -Oxygen::Oxygen() - : QMainWindow() +calcDlgUI::calcDlgUI() : CalcDlg() { - this->setCaption( "Oxygen" ); - vbox = new QVBox( this ); - QPushButton *setButton = new QPushButton( "Settings", vbox ); - connect ( setButton, SIGNAL( clicked() ), this, SLOT( slotSettings() ) ); - QPushButton *calcButton = new QPushButton( "Calculations", vbox ); - connect ( calcButton, SIGNAL( clicked() ), this, SLOT( slotCalculations() ) ); - QPushButton *pseButton = new QPushButton( "PSE", vbox ); - connect ( pseButton, SIGNAL( clicked() ), this, SLOT( slotPSE() ) ); - - setCentralWidget( vbox ); + kmolcalc = new KMolCalc; + connect( calculate, SIGNAL( clicked() ), this, SLOT( calc() ) ); + connect( clear_fields, SIGNAL( clicked() ), this, SLOT( clear() ) ); } - -void Oxygen::close() +void calcDlgUI::calc() { - QApplication::exit(); + QString compound( formula->text() ); + if ( compound.isEmpty() ) { + clear(); + return; + } + QString errors( kmolcalc->readFormula( compound ) ); + QString mw, ea; + double weight = kmolcalc->getWeight(); + if ( errors == "OK" ) { + mw.setNum( weight ); + ea = kmolcalc->getEmpFormula() + " :\n" + kmolcalc->getEA(); + } else { + mw = "???"; + ea = tr( "ERROR: \n" ) + errors + "\n"; + } + result->setText( mw ); + anal_display->setText( ea ); } -//SLOTS - -void Oxygen::slotCalculations(){ - CalcDlgUI *calcDlgUI = new calcDlgUI(); - calcDlgUI->show(); -}; +/** + * * Clear all text entry / result fields. + * */ +void calcDlgUI::clear() +{ + formula->clear(); + result->clear(); + anal_display->clear(); +} -void Oxygen::slotSettings(){ }; -void Oxygen::slotPSE(){ }; diff --git a/noncore/apps/checkbook/calcdlgui.h b/noncore/apps/checkbook/calcdlgui.h index 1e923ee..33a1ec1 100644 --- a/noncore/apps/checkbook/calcdlgui.h +++ b/noncore/apps/checkbook/calcdlgui.h @@ -1,22 +1,27 @@ -#include <qpe/resource.h> -#include <qmainwindow.h> -#include <qtoolbar.h> +/*************************************************************************** + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * ( at your option ) any later version. * + * * + **************************************************************************/ #include <qstring.h> -#include <qpopupmenu.h> +#include "calcdlg.h" class QVBox; +class KMolCalc; -class Oxygen : public QMainWindow +class calcDlgUI : public CalcDlg { Q_OBJECT public: - Oxygen(); - QVBox *vbox; - private slots: - void slotCalculations(); - void slotSettings(); - void slotPSE(); - void close(); + calcDlgUI(); + KMolCalc *kmolcalc; + + public slots: + void calc(); + void clear(); }; diff --git a/noncore/apps/checkbook/kmolcalc.cpp b/noncore/apps/checkbook/kmolcalc.cpp index e5ab736..50e1375 100644 --- a/noncore/apps/checkbook/kmolcalc.cpp +++ b/noncore/apps/checkbook/kmolcalc.cpp @@ -1,50 +1,52 @@ /* * kmolcalc.cpp * * Copyright (C) 2000 Tomislav Gountchev <tomi@idiom.com> + * Copyright (C) 2002 Carsten Niehaus <cniehaus@handhelds.org> */ /** * KMOLCALC is the calculation engine. It knows about a hashtable of user defined atomic * weights and group definitions ELSTABLE, and the currently processed formula, stored * as a list of elements and their coefficients, ELEMENTS. */ #include "kmolcalc.h" #include <qdict.h> #include <qdir.h> +#include <qfile.h> #include <iostream.h> /** * Construct a new calculator object. */ KMolCalc::KMolCalc() { elements = new ElementList; elstable = NULL; readElstable(); } KMolCalc::~KMolCalc() { delete elements; } void KMolCalc::readElstable() { weight = -1; // not calculated yet if (elstable) delete elstable; elstable = new QDict<SubUnit> (197, TRUE); elstable->setAutoDelete(TRUE); QStringList files;// = // KGlobal::dirs()->findAllResources("appdata", "kmolweights"); -// mwfile = locateLocal("data", "kmol")+"/kmolweights"; + mwfile = "/home/opie/opie/noncore/apps/oxigen/kmolweights"; QFile f(mwfile); QString* latest_f = &mwfile; for (uint i=0; i<files.count(); i++) { if (QFileInfo(QFile(files[i])).lastModified() > QFileInfo(QFile(*latest_f)).lastModified()) { latest_f = &files[i]; } } QFile lf(*latest_f); if (f.exists()) readMwfile(f); if (!f.exists()) { readMwfile(lf); writeElstable(); diff --git a/noncore/apps/checkbook/oxygen.cpp b/noncore/apps/checkbook/oxygen.cpp index a86374b..81897e9 100644 --- a/noncore/apps/checkbook/oxygen.cpp +++ b/noncore/apps/checkbook/oxygen.cpp @@ -9,24 +9,25 @@ #include "oxygen.h" #include <qmenubar.h> #include <qstatusbar.h> #include <qpopupmenu.h> #include <qlabel.h> #include <qapplication.h> #include <qpushbutton.h> #include <qfile.h> #include <qdir.h> #include <qvbox.h> #include "calcdlg.h" +#include "calcdlgui.h" Oxygen::Oxygen() : QMainWindow() { this->setCaption( "Oxygen" ); vbox = new QVBox( this ); QPushButton *setButton = new QPushButton( "Settings", vbox ); connect ( setButton, SIGNAL( clicked() ), this, SLOT( slotSettings() ) ); QPushButton *calcButton = new QPushButton( "Calculations", vbox ); connect ( calcButton, SIGNAL( clicked() ), this, SLOT( slotCalculations() ) ); QPushButton *pseButton = new QPushButton( "PSE", vbox ); connect ( pseButton, SIGNAL( clicked() ), this, SLOT( slotPSE() ) ); @@ -34,19 +35,19 @@ Oxygen::Oxygen() setCentralWidget( vbox ); } void Oxygen::close() { QApplication::exit(); } //SLOTS void Oxygen::slotCalculations(){ - CalcDlgUI *calcDlgUI = new calcDlgUI(); - calcDlgUI->show(); + calcDlgUI *CalcDlgUI = new calcDlgUI(); + CalcDlgUI->show(); }; void Oxygen::slotSettings(){ }; void Oxygen::slotPSE(){ }; diff --git a/noncore/apps/checkbook/oxygen.pro b/noncore/apps/checkbook/oxygen.pro index f8e0197..c5448e7 100644 --- a/noncore/apps/checkbook/oxygen.pro +++ b/noncore/apps/checkbook/oxygen.pro @@ -1,18 +1,20 @@ TEMPLATE = app CONFIG = qt warn_on release HEADERS = oxygen.h \ kmolcalc.h \ - kmolelements.h + kmolelements.h \ + calcdlgui.h SOURCES = main.cpp \ oxygen.cpp \ kmolcalc.cpp \ + calcdlgui.cpp \ kmolelements.cpp INCLUDEPATH += $(OPIEDIR)/include DEPENDPATH += $(OPIEDIR)/include LIBS += -lqpe INTERFACES = calcdlg.ui TARGET = oxygen DESTDIR = $(OPIEDIR)/bin TRANSLATIONS = ../../../i18n/de/oxygen.ts |