11 #include "PointTableModel.h"
17 #include <QMessageBox>
18 #include <QStringList>
21 #include "ControlMeasure.h"
22 #include "ControlPoint.h"
24 #include "IException.h"
27 #include "Longitude.h"
28 #include "SpecialPixel.h"
30 #include "AbstractTableDelegate.h"
31 #include "AbstractPointItem.h"
32 #include "TableColumn.h"
33 #include "TableColumnList.h"
34 #include "PointTableDelegate.h"
35 #include "AbstractTreeModel.h"
39 PointTableModel::PointTableModel(AbstractTreeModel *model) :
40 AbstractTableModel(model, new PointTableDelegate) {
41 connect(model, SIGNAL(filterCountsChanged(
int,
int)),
42 this, SIGNAL(filterCountsChanged(
int,
int)));
50 PointTableModel::~PointTableModel() {
56 return getSortedItems(start, end, AbstractTreeModel::PointItems);
61 AbstractTreeItem *item1, AbstractTreeItem *item2) {
62 return getSortedItems(item1, item2, AbstractTreeModel::PointItems);
66 int PointTableModel::getVisibleRowCount()
const {
67 return getDataModel()->getVisibleItemCount(AbstractTreeModel::PointItems,
73 return getDataModel()->getSelectedItems(AbstractTreeModel::PointItems,
78 QString PointTableModel::getWarningMessage(AbstractTreeItem
const *row,
79 TableColumn
const *column, QString valueToSave)
const {
80 return getPointWarningMessage(row, column, valueToSave);
84 void PointTableModel::setGlobalSelection(
bool selected) {
85 return getDataModel()->setGlobalSelection(selected,
86 AbstractTreeModel::AllItems);
90 int PointTableModel::indexOfVisibleItem(
91 AbstractTreeItem
const *item)
const {
92 return getDataModel()->indexOfVisibleItem(item,
93 AbstractTreeModel::PointItems,
98 QString PointTableModel::getPointWarningMessage(
99 AbstractTreeItem
const *row, TableColumn
const *column,
100 QString valueToSave) {
101 QString colTitle = column->getTitle();
102 AbstractPointItem::Column colType =
103 AbstractPointItem::getColumn(colTitle);
108 case AbstractPointItem::EditLock:
109 if (valueToSave.toLower() ==
"no" &&
110 row->getFormattedData(colTitle).toLower() ==
"yes") {
111 warningText =
"Are you sure you want to unlock control point [" +
112 row->getFormattedData() +
"] for editing?";
115 case AbstractPointItem::APrioriSPLatSigma:
116 case AbstractPointItem::APrioriSPLonSigma:
117 case AbstractPointItem::APrioriSPRadiusSigma: {
118 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
119 ControlPoint *point = (ControlPoint *) row->getPointer();
122 bool latSigmaValid = (point->GetAprioriSurfacePoint().
123 GetLatSigmaDistance().isValid());
124 bool lonSigmaValid = (point->GetAprioriSurfacePoint().
125 GetLonSigmaDistance().isValid());
126 bool radiusSigmaValid = (point->GetAprioriSurfacePoint().
127 GetLocalRadiusSigma().isValid());
129 if (!latSigmaValid && !lonSigmaValid && !radiusSigmaValid &&
130 valueToSave.toLower() !=
"null") {
131 warningText =
"The sigma values are currently null. The other "
132 "sigmas will be set to 10,000, which currently represents "
133 "'free'. Is this okay?";
137 case AbstractPointItem::APrioriSPLat:
138 case AbstractPointItem::APrioriSPLon:
139 case AbstractPointItem::APrioriSPRadius: {
140 ASSERT(row->getPointerType() == AbstractTreeItem::Point);
141 ControlPoint *point = (ControlPoint *) row->getPointer();
144 bool latValid = (point->GetAprioriSurfacePoint().
145 GetLatitude().isValid());
146 bool lonValid = (point->GetAprioriSurfacePoint().
147 GetLongitude().isValid());
148 bool radiusValid = (point->GetAprioriSurfacePoint().
149 GetLocalRadius().isValid());
151 if (!latValid && !lonValid && !radiusValid &&
152 valueToSave.toLower() !=
"null") {
153 warningText =
"Some of the a priori surface point values are "
154 "currently null. The surface point lat and lon will be set "
155 "to 0 if they are null, and the radius will be set to "
156 "10,000 if it is null. Is this okay?";
169 void PointTableModel::handleTreeSelectionChanged(
171 AbstractTableModel::handleTreeSelectionChanged(
172 newlySelectedItems, AbstractTreeItem::Point);
175 foreach (AbstractTreeItem * item, newlySelectedItems) {
176 if (item->getPointerType() == AbstractTreeItem::Measure) {
177 measureParentItems.append(item->parent());
181 if (measureParentItems.size()) {
182 AbstractTableModel::handleTreeSelectionChanged(
183 measureParentItems, AbstractTreeItem::Point);
188 TableColumnList *PointTableModel::createColumns() {
189 return AbstractPointItem::createColumns();