forked from qt-creator/qt-creator
QmlDesigner: Fix entires for component combobox
Task-number: QTCREATORBUG-10383 Change-Id: Ifa539401c75c82bd3afdec3143f9f17e69a2e36b Reviewed-by: Thomas Hartmann <Thomas.Hartmann@digia.com>
This commit is contained in:
@@ -85,7 +85,7 @@ void ComponentView::removeSingleNodeFromList(const ModelNode &node)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int ComponentView::indexForNode(const ModelNode &node)
|
int ComponentView::indexForNode(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
for (int row = 0; row < m_standardItemModel->rowCount(); row++) {
|
for (int row = 0; row < m_standardItemModel->rowCount(); row++) {
|
||||||
if (m_standardItemModel->item(row)->data(ModelNodeRole).toInt() == node.internalId())
|
if (m_standardItemModel->item(row)->data(ModelNodeRole).toInt() == node.internalId())
|
||||||
@@ -94,7 +94,7 @@ int ComponentView::indexForNode(const ModelNode &node)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int ComponentView::indexOfMaster()
|
int ComponentView::indexOfMaster() const
|
||||||
{
|
{
|
||||||
for (int row = 0; row < m_standardItemModel->rowCount(); row++) {
|
for (int row = 0; row < m_standardItemModel->rowCount(); row++) {
|
||||||
if (m_standardItemModel->item(row)->data(ModelNodeRole).toInt() == 0)
|
if (m_standardItemModel->item(row)->data(ModelNodeRole).toInt() == 0)
|
||||||
@@ -104,13 +104,58 @@ int ComponentView::indexOfMaster()
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool ComponentView::hasMasterEntry() const
|
||||||
|
{
|
||||||
|
return indexOfMaster() >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool ComponentView::hasEntryForNode(const ModelNode &node) const
|
||||||
|
{
|
||||||
|
return indexForNode(node) >= 0;
|
||||||
|
}
|
||||||
|
|
||||||
void ComponentView::addMasterDocument()
|
void ComponentView::addMasterDocument()
|
||||||
{
|
{
|
||||||
|
if (!hasMasterEntry()) {
|
||||||
QStandardItem *item = new QStandardItem("master");
|
QStandardItem *item = new QStandardItem("master");
|
||||||
item->setData(QVariant::fromValue(0), ModelNodeRole);
|
item->setData(QVariant::fromValue(0), ModelNodeRole);
|
||||||
item->setEditable(false);
|
item->setEditable(false);
|
||||||
m_standardItemModel->appendRow(item);
|
m_standardItemModel->appendRow(item);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ComponentView::removeMasterDocument()
|
||||||
|
{
|
||||||
|
m_standardItemModel->removeColumn(indexOfMaster());
|
||||||
|
}
|
||||||
|
|
||||||
|
QString ComponentView::descriptionForNode(const ModelNode &node) const
|
||||||
|
{
|
||||||
|
QString description;
|
||||||
|
|
||||||
|
if (!node.id().isEmpty()) {
|
||||||
|
description = node.id();
|
||||||
|
} else if (node.hasParentProperty()) {
|
||||||
|
ModelNode parentNode = node.parentProperty().parentModelNode();
|
||||||
|
|
||||||
|
if (parentNode.id().isEmpty())
|
||||||
|
description = parentNode.simplifiedTypeName() + QLatin1Char(' ');
|
||||||
|
else
|
||||||
|
description = parentNode.id() + QLatin1Char(' ');
|
||||||
|
|
||||||
|
description += node.parentProperty().name();
|
||||||
|
}
|
||||||
|
|
||||||
|
return description;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ComponentView::updateDescription(const ModelNode &node)
|
||||||
|
{
|
||||||
|
int nodeIndex = indexForNode(node);
|
||||||
|
|
||||||
|
if (nodeIndex > -1)
|
||||||
|
m_standardItemModel->item(nodeIndex)->setText(descriptionForNode(node));
|
||||||
|
}
|
||||||
|
|
||||||
void ComponentView::modelAttached(Model *model)
|
void ComponentView::modelAttached(Model *model)
|
||||||
{
|
{
|
||||||
@@ -161,24 +206,11 @@ void ComponentView::searchForComponentAndAddToList(const ModelNode &node)
|
|||||||
addMasterDocument();
|
addMasterDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!node.id().isEmpty()) {
|
if (!hasEntryForNode(node)) {
|
||||||
QStandardItem *item = new QStandardItem(node.id());
|
QString description = descriptionForNode(node);
|
||||||
item->setData(QVariant::fromValue(node.internalId()), ModelNodeRole);
|
|
||||||
item->setEditable(false);
|
|
||||||
removeSingleNodeFromList(node); //remove node if already present
|
|
||||||
m_standardItemModel->appendRow(item);
|
|
||||||
} else {
|
|
||||||
QString description;
|
|
||||||
if (node.hasParentProperty()) {
|
|
||||||
ModelNode parentNode = node.parentProperty().parentModelNode();
|
|
||||||
|
|
||||||
if (parentNode.id().isEmpty())
|
|
||||||
description = parentNode.simplifiedTypeName() + QLatin1Char(' ');
|
|
||||||
else
|
|
||||||
description = parentNode.id() + QLatin1Char(' ');
|
|
||||||
|
|
||||||
description += node.parentProperty().name();
|
|
||||||
}
|
|
||||||
|
|
||||||
QStandardItem *item = new QStandardItem(description);
|
QStandardItem *item = new QStandardItem(description);
|
||||||
item->setData(QVariant::fromValue(node.internalId()), ModelNodeRole);
|
item->setData(QVariant::fromValue(node.internalId()), ModelNodeRole);
|
||||||
@@ -205,6 +237,9 @@ void ComponentView::searchForComponentAndRemoveFromList(const ModelNode &node)
|
|||||||
if (childNode.nodeSourceType() == ModelNode::NodeWithComponentSource)
|
if (childNode.nodeSourceType() == ModelNode::NodeWithComponentSource)
|
||||||
removeSingleNodeFromList(childNode);
|
removeSingleNodeFromList(childNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (m_standardItemModel->rowCount() == 1)
|
||||||
|
removeMasterDocument();
|
||||||
}
|
}
|
||||||
|
|
||||||
void ComponentView::nodeAboutToBeReparented(const ModelNode &/*node*/, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &/*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/) {}
|
void ComponentView::nodeAboutToBeReparented(const ModelNode &/*node*/, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &/*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/) {}
|
||||||
@@ -212,9 +247,15 @@ void ComponentView::nodeAboutToBeReparented(const ModelNode &/*node*/, const Nod
|
|||||||
void ComponentView::nodeReparented(const ModelNode &node, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &/*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
void ComponentView::nodeReparented(const ModelNode &node, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &/*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
searchForComponentAndAddToList(node);
|
searchForComponentAndAddToList(node);
|
||||||
|
|
||||||
|
updateDescription(node);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ComponentView::nodeIdChanged(const ModelNode& node, const QString& /*newId*/, const QString& /*oldId*/)
|
||||||
|
{
|
||||||
|
updateDescription(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ComponentView::nodeIdChanged(const ModelNode& /*node*/, const QString& /*newId*/, const QString& /*oldId*/) {}
|
|
||||||
void ComponentView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& /*propertyList*/) {}
|
void ComponentView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& /*propertyList*/) {}
|
||||||
void ComponentView::propertiesRemoved(const QList<AbstractProperty>& /*propertyList*/) {}
|
void ComponentView::propertiesRemoved(const QList<AbstractProperty>& /*propertyList*/) {}
|
||||||
void ComponentView::variantPropertiesChanged(const QList<VariantProperty>& /*propertyList*/, PropertyChangeFlags /*propertyChange*/) {}
|
void ComponentView::variantPropertiesChanged(const QList<VariantProperty>& /*propertyList*/, PropertyChangeFlags /*propertyChange*/) {}
|
||||||
|
|||||||
@@ -126,9 +126,14 @@ private: //functions
|
|||||||
void searchForComponentAndAddToList(const ModelNode &node);
|
void searchForComponentAndAddToList(const ModelNode &node);
|
||||||
void searchForComponentAndRemoveFromList(const ModelNode &node);
|
void searchForComponentAndRemoveFromList(const ModelNode &node);
|
||||||
void removeSingleNodeFromList(const ModelNode &node);
|
void removeSingleNodeFromList(const ModelNode &node);
|
||||||
int indexForNode(const ModelNode &node);
|
int indexForNode(const ModelNode &node) const;
|
||||||
int indexOfMaster();
|
int indexOfMaster() const;
|
||||||
|
bool hasMasterEntry() const;
|
||||||
|
bool hasEntryForNode(const ModelNode &node) const;
|
||||||
void addMasterDocument();
|
void addMasterDocument();
|
||||||
|
void removeMasterDocument();
|
||||||
|
QString descriptionForNode(const ModelNode &node) const;
|
||||||
|
void updateDescription(const ModelNode &node);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QStandardItemModel *m_standardItemModel;
|
QStandardItemModel *m_standardItemModel;
|
||||||
|
|||||||
Reference in New Issue
Block a user