-rw-r--r-- | noncore/apps/oxygen/oxyframe.cpp | 5 | ||||
-rw-r--r-- | noncore/apps/oxygen/oxyframe.h | 2 | ||||
-rw-r--r-- | noncore/apps/oxygen/psewidget.cpp | 126 | ||||
-rw-r--r-- | noncore/apps/oxygen/psewidget.h | 5 |
4 files changed, 130 insertions, 8 deletions
diff --git a/noncore/apps/oxygen/oxyframe.cpp b/noncore/apps/oxygen/oxyframe.cpp index 060f9ca..a7833be 100644 --- a/noncore/apps/oxygen/oxyframe.cpp +++ b/noncore/apps/oxygen/oxyframe.cpp @@ -1,16 +1,21 @@ /*************************************************************************** * * * 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 <qpe/config.h> #include "oxyframe.h" OxyFrame::OxyFrame(QWidget *parent, const char *name) : QFrame(parent,name) { + this->setFrameStyle( QFrame::Panel ); + this->setLineWidth( 2 ); + this->setFrameShadow( QFrame::Raised ); + this->setBackgroundColor( QColor( cyan ) ); } + diff --git a/noncore/apps/oxygen/oxyframe.h b/noncore/apps/oxygen/oxyframe.h index 01f888d..9c7dab5 100644 --- a/noncore/apps/oxygen/oxyframe.h +++ b/noncore/apps/oxygen/oxyframe.h @@ -1,26 +1,24 @@ /*************************************************************************** * * * 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. * * * **************************************************************************/ #ifndef _OXYFRAME_H #define _OXYFRAME_H #include <qframe.h> class OxyFrame : public QFrame { Q_OBJECT public: OxyFrame( QWidget *parent=0, const char *name=0); - - }; #endif diff --git a/noncore/apps/oxygen/psewidget.cpp b/noncore/apps/oxygen/psewidget.cpp index 4e002d1..ab1467c 100644 --- a/noncore/apps/oxygen/psewidget.cpp +++ b/noncore/apps/oxygen/psewidget.cpp @@ -1,29 +1,143 @@ /*************************************************************************** * * * 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 <qpe/config.h> #include <qlayout.h> +#include <qlabel.h> #include <qlist.h> +#include <qvbox.h> +#include "dataTable.h" #include "psewidget.h" #include "oxyframe.h" Element::Element( const QString &name ) { } + PSEWidget::PSEWidget() : QWidget() { - QList<Element> elements; - elements.setAutoDelete( TRUE ); - elements.append( new Element( "1" ) ); - - maingrid = new QGridLayout( 18 , 10 , -1 , "maingridlayout" ); - OxyFrame *configobj = new OxyFrame(this); + this->setCaption( "Periodic System" ); + + QGridLayout *grid = new QGridLayout( this, 18,10 ); + int h=0, v=0; + for( int n = 0 ; n < 118 ; n++ ) + { + position( n+1,h,v ); + QList<OxyFrame> PSEframe; + PSEframe.append( new OxyFrame( this , QString::number( n ) ) ); + grid->addWidget( PSEframe.current() , v/40+1 , h/40 ); + } +} + +void PSEWidget::position(int n, int& h, int& v) +{ + //Hydrogen + if (n == 1) + { + h=0; v=0; + } + + + //Helium + if (n == 2) + { + h=680; v=0; + } + + + //Lithium + if (n == 3) + { + h=0; v=40; + } + + + //Beryllium + if (n == 4) + { + h=40; v=40; + } + + + //Boron-->Neon or Aluminum --> Argon + if ((n >= 5 && n <= 10) || (n >= 13 && n <= 18)) + for (int i = 1; i <= (6-(10-n)); i++) + { + h=((i*40)+440); + v = 40; + if (n >= 13) + { + v=80; + h=(h-320); + } + } + + + //Sodium + if (n == 11) + { + h=0; v=80; + } + + + //Magnesium + if (n == 12) + { + h=40; v=80; + } + + + //Potassium --> Uuo without La and Ac + if ((n >= 19 && n <= 56) || (n >= 72 && n <= 88) || n >= 104) + for (int i = 1; i <= 18; i++) + { + int f = n; + if (n > 18) + f = n-18; + if (n > 36) + f = n-36; + if (n > 54) + f = n-54; + if (n > 71) + f = n-68; + if (n > 86) + f = n-86; + if (n > 103) + f = n-100; + + h=((f*40)-40); + + v = 120; + if (n >= 37) + v=160; + if (n >= 55) + v=200; + if (n >= 87) + v=240; + } + + + //Lanthanum --> Lutetium and Actinum --> Lawrencium + if ((n >= 57 && n <= 71) || (n >= 89 && n <= 103)) + for (int i = 1; i <= 14; i++) + { + int f = n; + if (n > 56) + f = n-55; + if (n > 88) + f = n-87; + h=(f*40); + v = 290; + if (n >= 89) + v=330; + } + v += 10; } diff --git a/noncore/apps/oxygen/psewidget.h b/noncore/apps/oxygen/psewidget.h index 9f574ce..3ea58e3 100644 --- a/noncore/apps/oxygen/psewidget.h +++ b/noncore/apps/oxygen/psewidget.h @@ -16,61 +16,66 @@ class QGridLayout; class Element { public: Element(const QString &elnum); ~Element(); void setName( QString c){ name = c;}; void setWeight( QString c){ weight = c;}; void setDensityName( QString c){density = c;}; void setGroup( QString c){group = c;}; void setIE( QString c){ie = c;}; void setNum( QString c){num = c;}; void setAZ( QString c){az = c;}; void setDate( QString c){date = c;}; void setEN( QString c){en = c;}; void setMP( QString c){mp = c;}; void setBP( QString c){bp = c;}; void setAR( QString c){ar = c;}; QString elname() const{ return name; }; QString elweight() const{ return weight; }; QString eldensity() const{ return density; }; QString elgroup() const{ return group; }; QString elie() const{ return ie; }; QString elnum() const{ return num; }; QString elaz() const{ return az; }; QString eldate() const{ return date; }; QString elen() const{ return en; }; QString elmp() const{ return mp; }; QString elbp() const{ return bp; }; QString elar() const{ return ar; }; private: QString name, // The name of the element weight, // weight density, // density group, // group ie, // ionisationenergie num, // number ( e.g. Carbon is 6 ) az, // state of aggregation date, // date of discovery en, // electronegativity mp, // meltingpoint bp, // boilingpoint ar; // atomic radius }; +class QGridLayout; + class PSEWidget : public QWidget { Q_OBJECT public: PSEWidget(); + QGridLayout *bottom_grid; private: QGridLayout *maingrid; + + void position( int, int&, int& ); }; #endif |