| 1 | /*
 | 
|---|
| 2 |  * QtFragmentList.hpp
 | 
|---|
| 3 |  *
 | 
|---|
| 4 |  *  Created on: Sep 03, 2013
 | 
|---|
| 5 |  *      Author: heber
 | 
|---|
| 6 |  */
 | 
|---|
| 7 | 
 | 
|---|
| 8 | #ifndef QTFRAGMENTLIST_H_
 | 
|---|
| 9 | #define QTFRAGMENTLIST_H_
 | 
|---|
| 10 | 
 | 
|---|
| 11 | // include config.h
 | 
|---|
| 12 | #ifdef HAVE_CONFIG_H
 | 
|---|
| 13 | #include <config.h>
 | 
|---|
| 14 | #endif
 | 
|---|
| 15 | 
 | 
|---|
| 16 | #include <QtGui/QTreeWidget>
 | 
|---|
| 17 | #include "CodePatterns/Observer/Observer.hpp"
 | 
|---|
| 18 | 
 | 
|---|
| 19 | #include <boost/thread/mutex.hpp>
 | 
|---|
| 20 | 
 | 
|---|
| 21 | #include "Fragmentation/Summation/IndexSet.hpp"
 | 
|---|
| 22 | 
 | 
|---|
| 23 | 
 | 
|---|
| 24 | class FragmentGraph;
 | 
|---|
| 25 | 
 | 
|---|
| 26 | class QtFragmentList: public QTreeWidget, public Observer
 | 
|---|
| 27 | {
 | 
|---|
| 28 |   Q_OBJECT
 | 
|---|
| 29 | 
 | 
|---|
| 30 | public:
 | 
|---|
| 31 |   QtFragmentList(QWidget * _parent=0);
 | 
|---|
| 32 |   virtual ~QtFragmentList();
 | 
|---|
| 33 | 
 | 
|---|
| 34 | protected:
 | 
|---|
| 35 |   virtual void update(Observable *publisher);
 | 
|---|
| 36 |   virtual void subjectKilled(Observable *publisher);
 | 
|---|
| 37 |   virtual void paintEvent(QPaintEvent * event);
 | 
|---|
| 38 |   void refill();
 | 
|---|
| 39 | 
 | 
|---|
| 40 |   static const int COLUMNCOUNT;
 | 
|---|
| 41 |   enum {NUMBER,KEYSET,FORMULA,ENERGYVALUE,ENERGYCONTRIBUTION,COLUMNTYPES_MAX} COLUMNTYPES;
 | 
|---|
| 42 |   static const char *COLUMNNAMES[];
 | 
|---|
| 43 | 
 | 
|---|
| 44 | private slots:
 | 
|---|
| 45 |   void rowSelected();
 | 
|---|
| 46 | 
 | 
|---|
| 47 | signals:
 | 
|---|
| 48 |   void FragmentSelected(FragmentGraph const *);
 | 
|---|
| 49 |   void FragmentUnSelected(FragmentGraph const *);
 | 
|---|
| 50 |   void changed();
 | 
|---|
| 51 | 
 | 
|---|
| 52 | private:
 | 
|---|
| 53 |   //!> needed to determine when a selection changes
 | 
|---|
| 54 |   std::vector<bool> FragmentSelection;
 | 
|---|
| 55 |   //!> index set of the fragment
 | 
|---|
| 56 |   std::vector<IndexSet> indexsets;
 | 
|---|
| 57 |   //!> controls atomic access to flags
 | 
|---|
| 58 |   boost::mutex flag_mutex;
 | 
|---|
| 59 |   //!> flag to indicate that we got an update
 | 
|---|
| 60 |   bool dirty;
 | 
|---|
| 61 |   //!> flag to indicate that we are signed on to FragmentResultContainer
 | 
|---|
| 62 |   bool fragmentresultcontainer_enabled;
 | 
|---|
| 63 | };
 | 
|---|
| 64 | 
 | 
|---|
| 65 | #endif /* QTFRAGMENTLIST_H_ */
 | 
|---|