void TabViewDesignerAction::addNewTab() { QString tabName = AddTabToTabViewDialog::create(QLatin1String("Tab"), Core::ICore::mainWindow()); if (!tabName.isEmpty()) { QString directoryPath = QFileInfo(selectionContext().view()->model()->fileUrl().toLocalFile()).absolutePath(); QString newFilePath = directoryPath +QLatin1String("/") + tabName + QLatin1String(".qml"); if (QFileInfo(newFilePath).exists()) { QMessageBox::warning(Core::ICore::mainWindow(), tr("Naming Error"), tr("Component already exists.")); } else { bool fileCreated = createFile(newFilePath); if (fileCreated) { addNewFileToVersionControl(directoryPath, newFilePath); ModelNode tabViewModelNode = findTabViewModelNode(selectionContext().currentSingleSelectedNode()); PropertyListType propertyList; propertyList.append(QPair<PropertyName, QVariant>("source", QString(tabName + QLatin1String(".qml")))); propertyList.append(QPair<PropertyName, QVariant>("title", tabName)); ModelNode newTabModelNode = selectionContext().view()->createModelNode("QtQuick.Controls.Tab", tabViewModelNode.majorVersion(), tabViewModelNode.minorVersion(), propertyList); newTabModelNode.setId(newTabModelNode.view()->generateNewId(tabName)); tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode); } } } }
void AddTabDesignerAction::addNewTab() { QString tabName = AddTabToTabViewDialog::create(QStringLiteral("Tab"), Core::ICore::mainWindow()); if (!tabName.isEmpty()) { QString directoryPath = QFileInfo(selectionContext().view()->model()->fileUrl().toLocalFile()).absolutePath(); QString newFilePath = directoryPath +QStringLiteral("/") + tabName + QStringLiteral(".qml"); if (QFileInfo::exists(newFilePath)) { Core::AsynchronousMessageBox::warning(tr("Naming Error"), tr("Component already exists.")); } else { const QString sourceString = QStringLiteral("import QtQuick 2.1\nimport QtQuick.Controls 1.0\n\nItem {\n anchors.fill: parent\n}"); bool fileCreated = DocumentManager::createFile(newFilePath, sourceString); if (fileCreated) { DocumentManager::addFileToVersionControl(directoryPath, newFilePath); ModelNode tabViewModelNode = findTabViewModelNode(selectionContext().currentSingleSelectedNode()); PropertyListType propertyList; propertyList.append(QPair<PropertyName, QVariant>("source", QString(tabName + QStringLiteral(".qml")))); propertyList.append(QPair<PropertyName, QVariant>("title", tabName)); ModelNode newTabModelNode = selectionContext().view()->createModelNode("QtQuick.Controls.Tab", tabViewModelNode.majorVersion(), tabViewModelNode.minorVersion(), propertyList); newTabModelNode.setIdWithRefactoring(newTabModelNode.view()->generateNewId(tabName)); tabViewModelNode.defaultNodeAbstractProperty().reparentHere(newTabModelNode); } } } }
QmlModelState QmlModelState::duplicate(const QString &name) const { if (!isValid()) throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); QmlItemNode parentNode(modelNode().parentProperty().parentModelNode()); if (!parentNode.isValid()) throw new InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__); // QmlModelState newState(stateGroup().addState(name)); PropertyListType propertyList; propertyList.append(qMakePair(QString("name"), QVariant(name))); QmlModelState newState ( qmlModelView()->createQmlState(propertyList) ); foreach (const ModelNode &childNode, modelNode().nodeListProperty("changes").toModelNodeList()) { ModelNode newModelNode(qmlModelView()->createModelNode(childNode.type(), childNode.majorVersion(), childNode.minorVersion())); foreach (const BindingProperty &bindingProperty, childNode.bindingProperties()) newModelNode.bindingProperty(bindingProperty.name()).setExpression(bindingProperty.expression()); foreach (const VariantProperty &variantProperty, childNode.variantProperties()) newModelNode.variantProperty(variantProperty.name()) = variantProperty.value(); newState.modelNode().nodeListProperty("changes").reparentHere(newModelNode); } modelNode().parentProperty().reparentHere(newState); return newState; }