SedSat3 1.1.6
Sediment Source Apportionment Tool - Advanced statistical methods for environmental pollution research
Loading...
Searching...
No Matches
elementstablemodel.cpp
Go to the documentation of this file.
2
3ElementTableModel::ElementTableModel(SourceSinkData *_data, QObject *parent) : QAbstractTableModel(parent)
4{
5 Data = _data;
6}
7int ElementTableModel::rowCount(const QModelIndex &index) const
8{
9 return Data->GetElementNames().size();;
10}
11int ElementTableModel::columnCount(const QModelIndex &index) const
12{
13 return 5;
14}
15QVariant ElementTableModel::data(const QModelIndex &index, int role) const
16{
17 if (role == Qt::DisplayRole)
18 { if (index.column()==0)
19 {
20 return QString::fromStdString(Data->GetElementNames()[index.row()]);
21 }
22 if (index.column()==1)
23 {
25 return "Exclude";
27 return "Element";
29 return "Isotope";
31 return "Particle Size";
33 return "Organic Carbon";
34
35 }
36 if (index.column()==2)
37 {
39 return QString::fromStdString(Data->GetElementInformation(Data->GetElementNames()[index.row()])->base_element);
40 else
41 return "";
42 }
43 if (index.column()==3)
44 {
46 return QString::number(Data->GetElementInformation(Data->GetElementNames()[index.row()])->standard_ratio);
47 else
48 return "";
49 }
50 if (index.column()==4)
51 {
52 if (Data->GetElementInformation(Data->GetElementNames()[index.row()])->include_in_analysis)
53 return "Yes";
54 else
55 return "No";
56 }
57 }
58 if (role == Qt::ItemIsEnabled)
59 {
60 if (index.column()==2 || index.column()==3)
62 return true;
63 else
64 return false;
65 }
66 }
67 return QVariant();
68
69}
70QVariant ElementTableModel::headerData(int section, Qt::Orientation orientation, int role) const
71{
72 if (role == Qt::DisplayRole)
73 {
74 if (orientation == Qt::Horizontal)
75 { if (section==0)
76 {
77 return "Constituent";
78 }
79 if (section==1)
80 {
81 return "Constituent Type";
82 }
83 if (section==2)
84 {
85 return "Base Element";
86 }
87 if (section==3)
88 {
89 return "Standard isotope ratio";
90 }
91 if (section==4)
92 {
93 return "Include in analysis";
94 }
95 }
96 }
97 return QVariant();
98}
99bool ElementTableModel::setData(const QModelIndex & index, const QVariant & value, int role)
100{
101 if (role==Qt::EditRole)
102 {
103
104 string element = Data->GetElementNames()[index.row()];
105 if (index.column()==1)
106 {
107 if (value.toString()=="Element")
109 if (value.toString()=="Isotope")
111 if (value.toString()=="Exclude")
113 if (value.toString()=="Particle Size")
115 if (value.toString()=="Organic Carbon")
117
118 }
119 if (index.column()==2)
120 {
121 Data->GetElementInformation(element)->base_element = value.toString().toStdString();
122 }
123 if (index.column()==3)
124 {
125 Data->GetElementInformation(element)->standard_ratio = value.toDouble();
126 }
127 if (index.column()==4)
128 {
129 if (value.toString()=="Yes" || value.toBool())
130 Data->GetElementInformation(element)->include_in_analysis = true;
131 else
132 Data->GetElementInformation(element)->include_in_analysis = false;
133 }
134
135 }
136 QString result = "Done";
137 emit editCompleted(result);
138 return true;
139}
140Qt::ItemFlags ElementTableModel::flags(const QModelIndex & index) const
141{
142 if (index.column()!=0 && index.column()!=4)
143 return Qt::ItemIsSelectable | Qt::ItemIsEditable | Qt::ItemIsEnabled ;
144 else if (index.column()==4)
145 return Qt::ItemIsSelectable | Qt::ItemFlag::ItemIsUserCheckable | Qt::ItemIsEnabled | Qt::ItemIsEditable ;
146 else
147 return Qt::ItemIsSelectable | Qt::ItemIsEnabled ;
148}
bool setData(const QModelIndex &index, const QVariant &value, int role=Qt::EditRole) override
ElementTableModel(SourceSinkData *Data, QObject *parent=nullptr)
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
void editCompleted(const QString &)
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
SourceSinkData * Data
vector< string > GetElementNames() const
Get all element names in the dataset.
map< string, element_information > * GetElementInformation()
Retrieves pointer to the element information map.
@ element
Standard chemical element concentration.
@ isotope
Isotopic ratio (e.g., 206Pb/207Pb)
@ organic_carbon
Organic carbon content.
@ particle_size
Particle size distribution parameter.
@ do_not_include
Exclude from all analyses.