Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "QmitkPlanarFiguresTableModel.h"
00019 #include <mitkPlanarFigure.h>
00020 #include <mitkPlanarAngle.h>
00021 #include <QmitkNodeDescriptorManager.h>
00022
00023 QmitkPlanarFiguresTableModel::QmitkPlanarFiguresTableModel( mitk::DataStorage::Pointer _DataStorage, mitk::NodePredicateBase* _Predicate, QObject* parent )
00024 : QmitkDataStorageTableModel(_DataStorage, _Predicate, parent)
00025 {
00026
00027 }
00028
00029 QmitkPlanarFiguresTableModel::~QmitkPlanarFiguresTableModel()
00030 {
00031
00032 }
00033
00034 QVariant QmitkPlanarFiguresTableModel::headerData( int section, Qt::Orientation orientation, int role ) const
00035 {
00036 QVariant headerData;
00037
00038
00039 if ( role == Qt::DisplayRole )
00040 {
00041 if( orientation == Qt::Horizontal )
00042 {
00043
00044 if(section == 0)
00045 headerData = "Name";
00046 else if(section == 1)
00047 headerData = "Info";
00048 }
00049 else if( orientation == Qt::Vertical )
00050 {
00051
00052 headerData = section+1;
00053 }
00054 }
00055
00056 return headerData;
00057 }
00058
00059 Qt::ItemFlags QmitkPlanarFiguresTableModel::flags( const QModelIndex &index ) const
00060 {
00061
00062 if (index.column() == 0)
00063 return Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable;
00064 else
00065 return Qt::ItemIsEnabled | Qt::ItemIsSelectable;
00066 }
00067
00068 int QmitkPlanarFiguresTableModel::columnCount( const QModelIndex & ) const
00069 {
00070 return 2;
00071 }
00072
00073 QVariant QmitkPlanarFiguresTableModel::data( const QModelIndex &index, int role ) const
00074 {
00075 QVariant data;
00076 if(!index.isValid())
00077 return data;
00078 mitk::DataNode::Pointer node = this->m_NodeSet.at(index.row());
00079
00080 if(!node)
00081 return data;
00082
00083 if(index.column() == 0 && role == Qt::DecorationRole)
00084 {
00085 if(node)
00086 {
00087 QmitkNodeDescriptor* nodeDescriptor
00088 = QmitkNodeDescriptorManager::GetInstance()->GetDescriptor(node);
00089 data = nodeDescriptor->GetIcon();
00090 }
00091 }
00092 else if(index.column() == 1)
00093 {
00094 if(role == Qt::DisplayRole || role == Qt::ToolTipRole)
00095 {
00096 QString info;
00097 mitk::PlanarFigure* planarFigure = dynamic_cast<mitk::PlanarFigure*>(node->GetData());
00098 if(!planarFigure)
00099 return data;
00100
00101 mitk::PlanarAngle* planarAngle = dynamic_cast<mitk::PlanarAngle*>(planarFigure);
00102 double featureQuantity;
00103 for(unsigned int i=0; i<planarFigure->GetNumberOfFeatures(); ++i)
00104 {
00105 featureQuantity = planarFigure->GetQuantity(i);
00106 if(planarAngle && i == planarAngle->FEATURE_ID_ANGLE)
00107 featureQuantity = featureQuantity * 180 / vnl_math::pi;
00108
00109
00110 info.append(QString("%1: %2 %3")
00111 .arg(QString(planarFigure->GetFeatureName(i)))
00112 .arg(featureQuantity, 0, 'f', 2)
00113 .arg(QString(planarFigure->GetFeatureUnit(i))));
00114 if((i+1) != planarFigure->GetNumberOfFeatures())
00115 info.append(", ");
00116
00117 data = info;
00118 }
00119 }
00120 }
00121 else
00122 return QmitkDataStorageTableModel::data(index, role);
00123
00124 return data;
00125 }