3 #include "PointTableDelegate.h"
17 #include "AbstractPointItem.h"
18 #include "AbstractTreeItem.h"
19 #include "PointTableModel.h"
20 #include "TableColumn.h"
24 PointTableDelegate::PointTableDelegate() {
28 PointTableDelegate::~PointTableDelegate() {
32 QWidget *PointTableDelegate::getWidget(TableColumn
const *col)
const {
33 AbstractPointItem::Column column =
34 AbstractPointItem::getColumn(col->getTitle());
38 case AbstractPointItem::PointType:
39 case AbstractPointItem::EditLock:
40 case AbstractPointItem::Ignored:
41 case AbstractPointItem::Reference:
42 case AbstractPointItem::APrioriSPSource:
43 case AbstractPointItem::APrioriRadiusSource: {
47 case AbstractPointItem::PointType:
48 for (
int i = 0; i < ControlPoint::PointTypeCount; i++) {
53 case AbstractPointItem::EditLock:
54 combo->insertItem(0,
"Yes");
55 combo->insertItem(1,
"No");
57 case AbstractPointItem::Ignored:
58 combo->insertItem(0,
"Yes");
59 combo->insertItem(1,
"No");
61 case AbstractPointItem::Reference:
65 case AbstractPointItem::APrioriSPSource:
66 combo->insertItem(0,
"None");
67 combo->insertItem(1,
"User");
68 combo->insertItem(2,
"AverageOfMeasures");
69 combo->insertItem(3,
"Reference");
70 combo->insertItem(4,
"Basemap");
71 combo->insertItem(5,
"BundleSolution");
73 case AbstractPointItem::APrioriRadiusSource:
74 combo->insertItem(0,
"None");
75 combo->insertItem(1,
"User");
76 combo->insertItem(2,
"AverageOfMeasures");
77 combo->insertItem(3,
"Ellipsoid");
78 combo->insertItem(4,
"DEM");
79 combo->insertItem(5,
"BundleSolution");
90 return new QLineEdit();
93 QString msg =
"Could not create delegate widget for column ["
94 + col->getTitle() +
"]";
99 void PointTableDelegate::readData(
QWidget *widget,
100 AbstractTreeItem *row, TableColumn
const *col)
const {
101 QString columnTitle = col->getTitle();
102 AbstractPointItem::Column column =
103 AbstractPointItem::getColumn(columnTitle);
105 QString data = row->getFormattedData(columnTitle);
106 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
107 ControlPoint *point = (ControlPoint *)row->getPointer();
110 case AbstractPointItem::Reference: {
113 for (
int i = 0; i < point->GetNumMeasures(); i++)
114 combo->insertItem(i, point->GetMeasure(i)->GetCubeSerialNumber());
115 combo->setCurrentIndex(point->IndexOfRefMeasure());
119 case AbstractPointItem::PointType:
120 case AbstractPointItem::EditLock:
121 case AbstractPointItem::Ignored:
122 case AbstractPointItem::APrioriSPSource:
123 case AbstractPointItem::APrioriRadiusSource: {
127 case AbstractPointItem::PointType:
128 combo->setCurrentIndex(
129 (
int) point->StringToPointType(data));
131 case AbstractPointItem::EditLock:
132 combo->setCurrentIndex(point->IsEditLocked() ? 0 : 1);
134 case AbstractPointItem::Ignored:
135 combo->setCurrentIndex(point->IsIgnored() ? 0 : 1);
137 case AbstractPointItem::APrioriSPSource:
138 combo->setCurrentIndex(
139 (
int) point->StringToSurfacePointSource(data));
141 case AbstractPointItem::APrioriRadiusSource:
142 combo->setCurrentIndex(
143 (
int) point->StringToRadiusSource(data));
151 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
152 lineEdit->setText(data);
158 void PointTableDelegate::readData(
QWidget *widget,
159 AbstractTreeItem *row, TableColumn
const *col,
160 QString newData)
const {
161 QString columnTitle = col->getTitle();
162 AbstractPointItem::Column column =
163 AbstractPointItem::getColumn(columnTitle);
165 QString data = row->getFormattedData(columnTitle);
166 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
167 ControlPoint *point = (ControlPoint *)row->getPointer();
170 case AbstractPointItem::Reference: {
173 for (
int i = 0; i < point->GetNumMeasures(); i++)
174 combo->insertItem(i, point->GetMeasure(i)->GetCubeSerialNumber());
176 combo->setCurrentIndex(point->IndexOfRefMeasure());
178 for (
int i = combo->count() - 1; i >= 0; --i)
179 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
180 combo->setCurrentIndex(i);
184 case AbstractPointItem::PointType:
185 case AbstractPointItem::EditLock:
186 case AbstractPointItem::Ignored:
187 case AbstractPointItem::APrioriSPSource:
188 case AbstractPointItem::APrioriRadiusSource: {
192 case AbstractPointItem::PointType:
193 combo->setCurrentIndex(
194 (
int) point->StringToPointType(data));
196 case AbstractPointItem::EditLock:
197 combo->setCurrentIndex(point->IsEditLocked() ? 0 : 1);
199 case AbstractPointItem::Ignored:
200 combo->setCurrentIndex(point->IsIgnored() ? 0 : 1);
202 case AbstractPointItem::APrioriSPSource:
203 combo->setCurrentIndex(
204 (
int) point->StringToSurfacePointSource(data));
206 case AbstractPointItem::APrioriRadiusSource:
207 combo->setCurrentIndex(
208 (
int) point->StringToRadiusSource(data));
214 for (
int i = combo->count() - 1; i >= 0; --i)
215 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
216 combo->setCurrentIndex(i);
220 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
221 lineEdit->setText(newData);
227 void PointTableDelegate::saveData(
QWidget *widget,
228 AbstractTreeItem *row,
const TableColumn *col)
const {
229 AbstractPointItem::Column column =
230 AbstractPointItem::getColumn(col->getTitle());
235 case AbstractPointItem::PointType:
236 case AbstractPointItem::EditLock:
237 case AbstractPointItem::Ignored:
238 case AbstractPointItem::Reference:
239 case AbstractPointItem::APrioriSPSource:
240 case AbstractPointItem::APrioriRadiusSource: {
242 newData = combo->currentText();
246 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
247 newData = lineEdit->text();
251 QString warningText = PointTableModel::getPointWarningMessage(
254 bool changeData =
true;
256 if (!warningText.isEmpty()) {
257 QMessageBox::StandardButton status = QMessageBox::warning(
258 NULL,
"Change cell?", warningText, QMessageBox::Yes |
261 changeData = (status == QMessageBox::Yes);
265 row->setData(col->getTitle(), newData);
PointType
These are the valid 'types' of point.
This error is for when a programmer made an API call that was illegal.
#define _FILEINFO_
Macro for the filename and line number.
static QString PointTypeToString(PointType type)
Obtain a string representation of a given PointType.