/* * QTMoleculesView.cpp * * Created on: Jan 21, 2010 * Author: crueger */ #include "Views/QT4/QTMoleculesView.hpp" #include #include "atom.hpp" #include "molecule.hpp" using namespace std; // maybe this should go with the definition of molecules // some attributes need to be easier to find for molecules // these attributes are skiped so far const int QTMoleculesView::COLUMNCOUNT = COLUMNTYPES_MAX; const char *QTMoleculesView::COLUMNNAMES[QTMoleculesView::COLUMNCOUNT]={"Name","Atoms"/*,"Formula"*/,"Center"/*,"Size"*/}; QTMoleculesView::QTMoleculesView(MoleculeListClass *_molecules,QWidget * _parent) : QTableWidget (_parent), molecules(_molecules) { setRowCount(0); setColumnCount(COLUMNCOUNT); for(int i=0; isetText(QString(COLUMNNAMES[i])); setHorizontalHeaderItem(i,heading); } molecules->signOn(this); update(molecules); } QTMoleculesView::~QTMoleculesView() { molecules->signOff(this); } void QTMoleculesView::update(Observable *publisher) { int numMolecules = molecules->ListOfMolecules.size(); setRowCount(numMolecules); int i; MoleculeList::iterator iter; for(iter = molecules->ListOfMolecules.begin(),i=0; iter != molecules->ListOfMolecules.end(); ++i,++iter) { const int index = (*iter)->IndexNr; QTableWidgetItem *indexWidget = new QTableWidgetItem(); // there probably is an easier method to convert ints to QStrings... but i didn't find it stringstream idxsstr; idxsstr << index; indexWidget->setText(QString(idxsstr.str().c_str())); setVerticalHeaderItem(i,indexWidget); const char *name = (*iter)->name; QTableWidgetItem *nameWidget = new QTableWidgetItem(); nameWidget->setText(QString(name)); setItem(i,NAME,nameWidget); const int atomCount = (*iter)->AtomCount; QTableWidgetItem *countWidget= new QTableWidgetItem(); stringstream countsstr; countsstr << atomCount; countWidget->setText(QString(countsstr.str().c_str())); setItem(i,ATOMS,countWidget); const Vector center = (*iter)->Center; QTableWidgetItem *centerWidget = new QTableWidgetItem(); stringstream centersstr; centersstr << center; centerWidget->setText(QString(centersstr.str().c_str())); setItem(i,CENTER,centerWidget); } } void QTMoleculesView::subjectKilled(Observable *publisher) { }