11 #include "MeasureTableDelegate.h"
17 #include <QMessageBox>
22 #include "ControlMeasure.h"
23 #include "ControlMeasure.h"
24 #include "IException.h"
27 #include "AbstractMeasureItem.h"
28 #include "AbstractTreeItem.h"
29 #include "MeasureTableModel.h"
30 #include "TableColumn.h"
33 MeasureTableDelegate::MeasureTableDelegate() {
37 MeasureTableDelegate::~MeasureTableDelegate() {
41 QWidget *MeasureTableDelegate::getWidget(TableColumn
const *col)
43 AbstractMeasureItem::Column column =
44 AbstractMeasureItem::getColumn(col->getTitle());
47 case AbstractMeasureItem::Ignored:
48 case AbstractMeasureItem::EditLock: {
51 combo->insertItem(0,
"Yes");
52 combo->insertItem(1,
"No");
55 case AbstractMeasureItem::Type: {
58 combo->insertItem(0,
"Candidate");
59 combo->insertItem(1,
"Manual");
60 combo->insertItem(2,
"RegisteredPixel");
61 combo->insertItem(3,
"RegisteredSubPixel");
65 QLineEdit *lineEdit =
new QLineEdit;
70 IString msg =
"Could not create delegate widget for column ["
71 + col->getTitle() +
"]";
76 void MeasureTableDelegate::readData(
QWidget *widget,
77 AbstractTreeItem *row, TableColumn
const *col)
const {
78 AbstractMeasureItem::Column column =
79 AbstractMeasureItem::getColumn(col->getTitle());
81 QString data = row->getFormattedData(col->getTitle());
82 ASSERT(row->getPointerType() == AbstractTreeItem::Measure);
83 ControlMeasure *measure = (ControlMeasure *)row->getPointer();
86 case AbstractMeasureItem::EditLock: {
88 if (measure->IsEditLocked())
89 combo->setCurrentIndex(0);
91 combo->setCurrentIndex(1);
94 case AbstractMeasureItem::Ignored: {
96 if (measure->IsIgnored())
97 combo->setCurrentIndex(0);
99 combo->setCurrentIndex(1);
102 case AbstractMeasureItem::Type: {
104 combo->setCurrentIndex((
int) measure->StringToMeasureType(data));
108 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
109 lineEdit->setText(data);
115 void MeasureTableDelegate::readData(
QWidget *widget,
116 AbstractTreeItem *row, TableColumn
const *col,
117 QString newData)
const {
118 AbstractMeasureItem::Column column =
119 AbstractMeasureItem::getColumn(col->getTitle());
121 QString data = row->getFormattedData(col->getTitle());
122 ASSERT(row->getPointerType() == AbstractTreeItem::Measure);
123 ControlMeasure *measure = (ControlMeasure *) row->getPointer();
126 case AbstractMeasureItem::EditLock: {
129 if (measure->IsEditLocked())
130 combo->setCurrentIndex(0);
132 combo->setCurrentIndex(1);
134 if (QString(
"yes").startsWith(newData.toLower()))
135 combo->setCurrentIndex(0);
136 else if (QString(
"no").startsWith(newData.toLower()))
137 combo->setCurrentIndex(1);
141 case AbstractMeasureItem::Ignored: {
144 if (measure->IsIgnored())
145 combo->setCurrentIndex(0);
147 combo->setCurrentIndex(1);
149 if (QString(
"yes").startsWith(newData.toLower()))
150 combo->setCurrentIndex(0);
151 if (QString(
"no").startsWith(newData.toLower()))
152 combo->setCurrentIndex(1);
156 case AbstractMeasureItem::Type: {
159 combo->setCurrentIndex((
int) measure->StringToMeasureType(data));
161 for (
int i = combo->count() - 1; i >= 0; --i)
162 if (combo->itemText(i).toLower().startsWith(newData.toLower()))
163 combo->setCurrentIndex(i);
168 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
169 lineEdit->setText(newData);
175 void MeasureTableDelegate::saveData(
QWidget *widget,
176 AbstractTreeItem *row, TableColumn
const *col)
const {
177 AbstractMeasureItem::Column column =
178 AbstractMeasureItem::getColumn(col->getTitle());
182 case AbstractMeasureItem::EditLock:
183 case AbstractMeasureItem::Ignored:
184 case AbstractMeasureItem::Type: {
186 newData = combo->currentText();
190 QLineEdit *lineEdit =
static_cast< QLineEdit *
>(widget);
191 newData = lineEdit->text();
195 QString warningText = MeasureTableModel::getMeasureWarningMessage(
198 bool changeData =
true;
200 if (!warningText.isEmpty()) {
201 QMessageBox::StandardButton status = QMessageBox::warning(
202 NULL,
"Change cell?", warningText, QMessageBox::Yes |
205 changeData = (status == QMessageBox::Yes);
209 row->setData(col->getTitle(), newData);