24 #include "DataStructure.h"
28 #include <DataStructureBackendManager.h>
29 #include <DataStructureBackendInterface.h>
34 ui =
new Ui::DataPropertiesWidget;
35 ui->setupUi(mainWidget());
39 i18n(
"Edit Data Types"), data->dataStructure()->document()->dataType(data->dataType()),
this);
40 ui->_editType->setDefaultAction(dataTypePropertiesAction);
41 ui->_editType->setIcon(KIcon(
"document-properties"));
42 connect(data->dataStructure()->document(), SIGNAL(dataTypeCreated(
int)),
this, SLOT(updateDataTypes()));
43 connect(data->dataStructure()->document(), SIGNAL(dataTypeRemoved(
int)),
this, SLOT(updateDataTypes()));
45 setCaption(i18nc(
"@title:window",
"Data Element Properties"));
47 setAttribute(Qt::WA_DeleteOnClose);
58 dataType = _data->dataStructure()->document()->dataType(_data->dataType());
59 dataType->disconnect(
this);
60 _data->disconnect(
this);
61 ui->_dataType->clear();
67 delete ui->extraItems->layout();
68 ui->extraItems->setLayout(DataStructureBackendManager::self().dataExtraProperties(_data,
this));
72 connect(ui->_dataType, SIGNAL(currentIndexChanged(
int)),
73 this, SLOT(setDataType(
int)));
74 connect(ui->_color, SIGNAL(activated(QColor)),
75 this, SLOT(colorChanged(QColor)));
77 dataType = _data->dataStructure()->document()->dataType(_data->dataType());
78 connect(dataType.get(), SIGNAL(propertyAdded(QString,QVariant)),
this, SLOT(updateProperties()));
79 connect(dataType.get(), SIGNAL(propertyRemoved(QString)),
this, SLOT(updateProperties()));
80 connect(dataType.get(), SIGNAL(propertyRenamed(QString,QString)),
this, SLOT(updateProperties()));
83 model->setDataSource(_data.get());
85 ui->_propertiesTable->setModel(model);
86 ui->_propertiesTable->horizontalHeader()->setProperty(
"stretchLastSection",
true);
91 move(screenPosition.x() + 10, screenPosition.y() + 10);
94 void DataPropertiesWidget::reflectAttributes()
96 if (!ui->extraItems->layout()) {
97 _oldDataStructurePlugin = DataStructureBackendManager::self().activeBackend()->internalName();
100 if (_oldDataStructurePlugin != DataStructureBackendManager::self().activeBackend()->internalName()) {
101 ui->extraItems->layout()->deleteLater();
104 if (!ui->extraItems->layout()) {
105 ui->extraItems->setLayout(DataStructureBackendManager::self().dataExtraProperties(_data,
this));
108 ui->_color->setColor(_data->color().value<QColor>());
110 DataTypePtr dataType = _data->dataStructure()->document()->dataType(_data->dataType());
111 ui->_dataType->setCurrentIndex(ui->_dataType->findData(QVariant(_data->dataType())));
114 void DataPropertiesWidget::colorChanged(
const QColor& c)
116 _data->setColor(QColor(c));
119 void DataPropertiesWidget::setDataType(
int dataTypeIndex)
121 _data->setDataType(ui->_dataType->itemData(dataTypeIndex).toInt());
124 void DataPropertiesWidget::updateDataTypes()
126 ui->_dataType->clear();
128 foreach (
int dataType, _data->dataStructure()->document()->dataTypeList()) {
129 QString dataTypeString = _data->dataStructure()->document()->dataType(dataType)->name();
130 ui->_dataType->addItem(dataTypeString, QVariant(dataType));
133 ui->_dataType->setCurrentIndex(ui->_dataType->findData(QVariant(_data->dataType())));
137 void DataPropertiesWidget::updateProperties()
142 ui->_propertiesTable->model()->deleteLater();
143 ui->_propertiesTable->setModel(model);
void setDataSource(QObject *dataSource)