#include <QHeaderView>
#include <QStackedWidget>
#include <QValidator>
-#include <QStyledItemDelegate>
#include <QLineEdit>
#include <QEvent>
#include <QMouseEvent>
const char* MYTrue = "True";
const char* MYFalse = "False";
-class DataTableItemDelegate : public QStyledItemDelegate
-{
-public:
- DataTableItemDelegate(ModelAPI_AttributeTables::ValueType theType) :
- QStyledItemDelegate() { myType = theType; }
-
- virtual QWidget* createEditor(QWidget* theParent,
- const QStyleOptionViewItem & theOption,
- const QModelIndex& theIndex) const;
-
- ModelAPI_AttributeTables::ValueType dataType() const { return myType; }
-
- void setDataType(ModelAPI_AttributeTables::ValueType theType) { myType = theType; }
-
-signals:
- void startEditing();
-
-private:
- ModelAPI_AttributeTables::ValueType myType;
-};
-
QWidget* DataTableItemDelegate::createEditor(QWidget* theParent,
const QStyleOptionViewItem & theOption,
const QModelIndex& theIndex ) const
myCompNamesList << "Comp 1";
myStepWgt = new QStackedWidget(aStepFrame);
aStepLayout->addWidget(myStepWgt, 2, 0, 1, 2);
+
+ myDelegate =
+ new DataTableItemDelegate((ModelAPI_AttributeTables::ValueType)
+ myFieldTypeCombo->currentIndex());
+
appendStepControls();
// Buttons below
// Data table
QTableWidget* aDataTbl = new QTableWidget(1, myCompNamesList.count() + 1, aWidget);
aDataTbl->installEventFilter(this);
- DataTableItemDelegate* aDelegate = 0;
- if (myDataTblList.isEmpty())
- aDelegate = new DataTableItemDelegate(
- (ModelAPI_AttributeTables::ValueType) myFieldTypeCombo->currentIndex());
- else
- aDelegate = dynamic_cast<DataTableItemDelegate*>(myDataTblList.first()->itemDelegate());
+ aDataTbl->setItemDelegate(myDelegate);
QIntList aColWidth;
if (!myDataTblList.isEmpty()) {
for (int i = 0; i < aFirstTable->columnCount(); i++)
aColWidth.append(aFirstTable->columnWidth(i));
}
- aDataTbl->setItemDelegate(aDelegate);
myDataTblList.append(aDataTbl);
aDataTbl->verticalHeader()->hide();
aStepLayout->addWidget(aDataTbl, 1, 0, 1, 2);
connect(aDataTbl, SIGNAL(cellChanged(int, int)), SLOT(onTableEdited(int, int)));
- QAbstractItemDelegate* aDel = aDataTbl->itemDelegate();
myStepWgt->addWidget(aWidget);
aDataTbl->horizontalHeader()->viewport()->installEventFilter(this);
}
isBlocked = myFieldTypeCombo->blockSignals(true);
myFieldTypeCombo->setCurrentIndex(aTablesAttr->type());
myFieldTypeCombo->blockSignals(isBlocked);
+ myDelegate->setDataType(aTablesAttr->type());
AttributeIntArrayPtr aStampsAttr = aData->intArray(CollectionPlugin_Field::STAMPS_ID());
// Fill data table
//**********************************************************************************
void CollectionPlugin_WidgetField::onFieldTypeChanged(int theIdx)
{
- DataTableItemDelegate* aDelegate = 0;
- aDelegate = dynamic_cast<DataTableItemDelegate*>(myDataTblList.first()->itemDelegate());
- if (aDelegate) {
- ModelAPI_AttributeTables::ValueType aOldType = aDelegate->dataType();
- if (aOldType != theIdx) {
- aDelegate->setDataType((ModelAPI_AttributeTables::ValueType)theIdx);
- int aColumns = myDataTblList.first()->columnCount();
- int aRows = myDataTblList.first()->rowCount();
- foreach(QTableWidget* aTable, myDataTblList) {
- for(int i = 1; i < aColumns; i++) {
- for(int j = 0; j < aRows; j++) {
- switch (theIdx) {
- case ModelAPI_AttributeTables::DOUBLE:
- case ModelAPI_AttributeTables::INTEGER:
- if ((aOldType == ModelAPI_AttributeTables::BOOLEAN) ||
- (aOldType == ModelAPI_AttributeTables::STRING)) {
- aTable->item(j, i)->setText("0");
- }
- break;
- case ModelAPI_AttributeTables::BOOLEAN:
- aTable->item(j, i)->setText(MYFalse);
- break;
- case ModelAPI_AttributeTables::STRING:
- aTable->item(j, i)->setText("");
- break;
+ ModelAPI_AttributeTables::ValueType aOldType = myDelegate->dataType();
+ if (aOldType != theIdx) {
+ myDelegate->setDataType((ModelAPI_AttributeTables::ValueType)theIdx);
+ int aColumns = myDataTblList.first()->columnCount();
+ int aRows = myDataTblList.first()->rowCount();
+ foreach(QTableWidget* aTable, myDataTblList) {
+ for(int i = 1; i < aColumns; i++) {
+ for(int j = 0; j < aRows; j++) {
+ switch (theIdx) {
+ case ModelAPI_AttributeTables::DOUBLE:
+ case ModelAPI_AttributeTables::INTEGER:
+ if ((aOldType == ModelAPI_AttributeTables::BOOLEAN) ||
+ (aOldType == ModelAPI_AttributeTables::STRING)) {
+ aTable->item(j, i)->setText("0");
}
+ break;
+ case ModelAPI_AttributeTables::BOOLEAN:
+ aTable->item(j, i)->setText(MYFalse);
+ break;
+ case ModelAPI_AttributeTables::STRING:
+ aTable->item(j, i)->setText("");
+ break;
}
}
}
- emit valuesChanged();
}
+ emit valuesChanged();
}
}