-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 | 124 | ||||
-rw-r--r-- | noncore/apps/oxygen/psewidget.h | 5 |
4 files changed, 129 insertions, 7 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 @@ -13,4 +13,9 @@ 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 @@ -19,8 +19,6 @@ class OxyFrame : public QFrame 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 @@ -9,7 +9,10 @@ #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" @@ -18,12 +21,123 @@ Element::Element( const QString &name ) { } + PSEWidget::PSEWidget() : QWidget() { - QList<Element> elements; - elements.setAutoDelete( TRUE ); - elements.append( new Element( "1" ) ); + 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); - maingrid = new QGridLayout( 18 , 10 , -1 , "maingridlayout" ); - OxyFrame *configobj = new OxyFrame(this); + 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 @@ -61,16 +61,21 @@ class Element 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 |