QString Model::getTypeName(QModelIndex const &index, int const role) const { do { if (!index.isValid()) break; ModelTreeItem *item = static_cast<ModelTreeItem*>(index.internalPointer()); if (!item) break; QString selectedProperty = findPropertyName(item->id(), role); return mEditorManager.getTypeName(item->id(), selectedProperty); } while (false); return QString(); }
bool Model::setData(QModelIndex const &index, QVariant const &value, int role) { if (index.isValid()) { ModelTreeItem *item = static_cast<ModelTreeItem*>(index.internalPointer()); switch (role) { case Qt::DisplayRole: case Qt::EditRole: mApi.setName(item->id(), value.toString()); emit nameChanged(index); break; case roles::positionRole: mApi.setProperty(item->id(), "position", value); break; case roles::configurationRole: mApi.setProperty(item->id(), "configuration", value); break; case roles::fromRole: mApi.setFrom(item->id(), value.value<Id>()); break; case roles::toRole: mApi.setTo(item->id(), value.value<Id>()); break; case roles::fromPortRole: mApi.setFromPort(item->id(), value.toDouble()); break; case roles::toPortRole: mApi.setToPort(item->id(), value.toDouble()); break; default: if (role >= roles::customPropertiesBeginRole) { QString selectedProperty = findPropertyName(item->id(), role); mApi.setProperty(item->id(), selectedProperty, value); break; } Q_ASSERT(role < Qt::UserRole); return false; } emit dataChanged(index, index); return true; } return false; }
QVariant Model::data(QModelIndex const &index, int role) const { if (index.isValid()) { ModelTreeItem *item = static_cast<ModelTreeItem*>(index.internalPointer()); Q_ASSERT(item); switch (role) { case Qt::DisplayRole: case Qt::EditRole: return mApi.name(item->id()); case Qt::DecorationRole: return mEditorManager.icon(item->id()); case roles::idRole: return item->id().toVariant(); case roles::positionRole: return mApi.property(item->id(), "position"); case roles::fromRole: return mApi.from(item->id()).toVariant(); case roles::toRole: return mApi.to(item->id()).toVariant(); case roles::fromPortRole: return mApi.fromPort(item->id()); case roles::toPortRole: return mApi.toPort(item->id()); case roles::configurationRole: return mApi.property(item->id(), "configuration"); } if (role >= roles::customPropertiesBeginRole) { QString selectedProperty = findPropertyName(item->id(), role); return mApi.property(item->id(), selectedProperty); } Q_ASSERT(role < Qt::UserRole); return QVariant(); } else { return QVariant(); } }