forked from qt-creator/qt-creator
QmlDesigner: Remove the options from adding model dialog
Task-number: QDS-11234 Change-Id: I064d2fed81a8f2592cfefae2c603b2d790b6bfb3 Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This commit is contained in:
@@ -19,10 +19,7 @@ StudioControls.Dialog {
|
|||||||
required property var backendValue
|
required property var backendValue
|
||||||
required property var sourceModel
|
required property var sourceModel
|
||||||
|
|
||||||
readonly property alias collectionType: typeMode.collectionType
|
|
||||||
readonly property bool isValid: collectionName.isValid
|
readonly property bool isValid: collectionName.isValid
|
||||||
&& jsonCollections.isValid
|
|
||||||
&& newCollectionPath.isValid
|
|
||||||
|
|
||||||
title: qsTr("Add a new Model")
|
title: qsTr("Add a new Model")
|
||||||
anchors.centerIn: parent
|
anchors.centerIn: parent
|
||||||
@@ -31,8 +28,6 @@ StudioControls.Dialog {
|
|||||||
|
|
||||||
onOpened: {
|
onOpened: {
|
||||||
collectionName.text = qsTr("Model")
|
collectionName.text = qsTr("Model")
|
||||||
updateType()
|
|
||||||
updateJsonSourceIndex()
|
|
||||||
updateCollectionExists()
|
updateCollectionExists()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,52 +36,12 @@ StudioControls.Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onAccepted: {
|
onAccepted: {
|
||||||
if (root.isValid) {
|
if (root.isValid)
|
||||||
root.backendValue.addCollection(collectionName.text,
|
root.backendValue.addCollectionToDataStore(collectionName.text);
|
||||||
root.collectionType,
|
|
||||||
newCollectionPath.text,
|
|
||||||
jsonCollections.currentValue)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateType() {
|
|
||||||
newCollectionPath.text = ""
|
|
||||||
if (typeMode.currentValue === NewCollectionDialog.SourceType.NewJson) {
|
|
||||||
newCollectionFileDialog.nameFilters = ["JSON Files (*.json)"]
|
|
||||||
newCollectionFileDialog.fileMode = PlatformWidgets.FileDialog.SaveFile
|
|
||||||
newCollectionPath.enabled = true
|
|
||||||
jsonCollections.enabled = false
|
|
||||||
typeMode.collectionType = "json"
|
|
||||||
} else if (typeMode.currentValue === NewCollectionDialog.SourceType.NewCsv) {
|
|
||||||
newCollectionFileDialog.nameFilters = ["Comma-Separated Values (*.csv)"]
|
|
||||||
newCollectionFileDialog.fileMode = PlatformWidgets.FileDialog.SaveFile
|
|
||||||
newCollectionPath.enabled = true
|
|
||||||
jsonCollections.enabled = false
|
|
||||||
typeMode.collectionType = "csv"
|
|
||||||
} else if (typeMode.currentValue === NewCollectionDialog.SourceType.ExistingCollection) {
|
|
||||||
newCollectionFileDialog.nameFilters = ["All Model Group Files (*.json *.csv)",
|
|
||||||
"JSON Files (*.json)",
|
|
||||||
"Comma-Separated Values (*.csv)"]
|
|
||||||
newCollectionFileDialog.fileMode = PlatformWidgets.FileDialog.OpenFile
|
|
||||||
newCollectionPath.enabled = true
|
|
||||||
jsonCollections.enabled = false
|
|
||||||
typeMode.collectionType = "existing"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function updateJsonSourceIndex() {
|
|
||||||
if (!jsonCollections.enabled) {
|
|
||||||
jsonCollections.currentIndex = -1
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
if (jsonCollections.currentIndex === -1 && jsonCollections.model.rowCount())
|
|
||||||
jsonCollections.currentIndex = 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateCollectionExists() {
|
function updateCollectionExists() {
|
||||||
collectionName.alreadyExists = sourceModel.collectionExists(jsonCollections.currentValue,
|
collectionName.alreadyExists = sourceModel.collectionExists(backendValue.dataStoreNode(),
|
||||||
collectionName.text)
|
collectionName.text)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -114,117 +69,6 @@ StudioControls.Dialog {
|
|||||||
contentItem: ColumnLayout {
|
contentItem: ColumnLayout {
|
||||||
spacing: 5
|
spacing: 5
|
||||||
|
|
||||||
NameField {
|
|
||||||
text: qsTr("Type")
|
|
||||||
}
|
|
||||||
|
|
||||||
StudioControls.ComboBox {
|
|
||||||
id: typeMode
|
|
||||||
|
|
||||||
property string collectionType
|
|
||||||
|
|
||||||
Layout.minimumWidth: 300
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
model: ListModel {
|
|
||||||
ListElement { text: qsTr("New JSON model group"); value: NewCollectionDialog.SourceType.NewJson}
|
|
||||||
ListElement { text: qsTr("New CSV model"); value: NewCollectionDialog.SourceType.NewCsv}
|
|
||||||
ListElement { text: qsTr("Import an existing model group"); value: NewCollectionDialog.SourceType.ExistingCollection}
|
|
||||||
}
|
|
||||||
|
|
||||||
textRole: "text"
|
|
||||||
valueRole: "value"
|
|
||||||
actionIndicatorVisible: false
|
|
||||||
|
|
||||||
onCurrentValueChanged: root.updateType()
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer {}
|
|
||||||
|
|
||||||
RowLayout {
|
|
||||||
visible: newCollectionPath.enabled
|
|
||||||
|
|
||||||
NameField {
|
|
||||||
text: qsTr("File location")
|
|
||||||
visible: newCollectionPath.enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
Text {
|
|
||||||
id: newCollectionPath
|
|
||||||
|
|
||||||
readonly property bool isValid: !newCollectionPath.enabled || newCollectionPath.text !== ""
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
|
||||||
Layout.alignment: Qt.AlignRight | Qt.AlignVCenter
|
|
||||||
elide: Text.ElideRight
|
|
||||||
font.family: StudioTheme.Constants.font.family
|
|
||||||
font.pixelSize: StudioTheme.Values.baseIconFontSize
|
|
||||||
color: StudioTheme.Values.themePlaceholderTextColor
|
|
||||||
}
|
|
||||||
|
|
||||||
HelperWidgets.Button {
|
|
||||||
Layout.alignment: Qt.AlignLeft | Qt.AlignVCenter
|
|
||||||
text: qsTr("Select")
|
|
||||||
|
|
||||||
onClicked: newCollectionFileDialog.open()
|
|
||||||
|
|
||||||
PlatformWidgets.FileDialog {
|
|
||||||
id: newCollectionFileDialog
|
|
||||||
|
|
||||||
title: qsTr("Select source file")
|
|
||||||
fileMode: PlatformWidgets.FileDialog.OpenFile
|
|
||||||
acceptLabel: newCollectionFileDialog.fileMode === PlatformWidgets.FileDialog.OpenFile
|
|
||||||
? qsTr("Open")
|
|
||||||
: qsTr("Add")
|
|
||||||
|
|
||||||
onAccepted: newCollectionPath.text = newCollectionFileDialog.currentFile
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrorField {
|
|
||||||
visible: !newCollectionPath.isValid
|
|
||||||
text: qsTr("Select a file to continue")
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer { visible: newCollectionPath.enabled }
|
|
||||||
|
|
||||||
NameField {
|
|
||||||
text: qsTr("JSON model group")
|
|
||||||
visible: jsonCollections.enabled
|
|
||||||
}
|
|
||||||
|
|
||||||
StudioControls.ComboBox {
|
|
||||||
id: jsonCollections
|
|
||||||
|
|
||||||
readonly property bool isValid: !jsonCollections.enabled || jsonCollections.currentIndex !== -1
|
|
||||||
|
|
||||||
Layout.fillWidth: true
|
|
||||||
|
|
||||||
implicitWidth: 300
|
|
||||||
textRole: "sourceName"
|
|
||||||
valueRole: "sourceNode"
|
|
||||||
visible: jsonCollections.enabled
|
|
||||||
actionIndicatorVisible: false
|
|
||||||
|
|
||||||
model: CollectionJsonSourceFilterModel {
|
|
||||||
sourceModel: root.sourceModel
|
|
||||||
onRowsInserted: root.updateJsonSourceIndex()
|
|
||||||
onModelReset: root.updateJsonSourceIndex()
|
|
||||||
onRowsRemoved: root.updateJsonSourceIndex()
|
|
||||||
}
|
|
||||||
|
|
||||||
onEnabledChanged: root.updateJsonSourceIndex()
|
|
||||||
onCurrentValueChanged: root.updateCollectionExists()
|
|
||||||
}
|
|
||||||
|
|
||||||
ErrorField {
|
|
||||||
visible: !jsonCollections.isValid
|
|
||||||
text: qsTr("Add a JSON resource to continue")
|
|
||||||
}
|
|
||||||
|
|
||||||
Spacer {visible: jsonCollections.visible }
|
|
||||||
|
|
||||||
NameField {
|
NameField {
|
||||||
text: qsTr("The model name")
|
text: qsTr("The model name")
|
||||||
visible: collectionName.enabled
|
visible: collectionName.enabled
|
||||||
|
@@ -314,6 +314,26 @@ bool CollectionWidget::importCollectionToDataStore(const QString &collectionName
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CollectionWidget::addCollectionToDataStore(const QString &collectionName)
|
||||||
|
{
|
||||||
|
const ModelNode node = dataStoreNode();
|
||||||
|
if (!node.isValid()) {
|
||||||
|
warn(tr("Can not import to the main model"), tr("The default model node is not available."));
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString errorMsg;
|
||||||
|
bool added = m_sourceModel->addCollectionToSource(node,
|
||||||
|
generateUniqueCollectionName(node,
|
||||||
|
collectionName),
|
||||||
|
CollectionEditor::defaultCollectionArray(),
|
||||||
|
&errorMsg);
|
||||||
|
if (!added)
|
||||||
|
warn(tr("Failed to add a model to the default model group"), errorMsg);
|
||||||
|
|
||||||
|
return added;
|
||||||
|
}
|
||||||
|
|
||||||
void CollectionWidget::assignSourceNodeToSelectedItem(const QVariant &sourceNode)
|
void CollectionWidget::assignSourceNodeToSelectedItem(const QVariant &sourceNode)
|
||||||
{
|
{
|
||||||
ModelNode sourceModel = sourceNode.value<ModelNode>();
|
ModelNode sourceModel = sourceNode.value<ModelNode>();
|
||||||
|
@@ -50,6 +50,8 @@ public:
|
|||||||
|
|
||||||
Q_INVOKABLE bool importCollectionToDataStore(const QString &collectionName, const QUrl &url);
|
Q_INVOKABLE bool importCollectionToDataStore(const QString &collectionName, const QUrl &url);
|
||||||
|
|
||||||
|
Q_INVOKABLE bool addCollectionToDataStore(const QString &collectionName);
|
||||||
|
|
||||||
Q_INVOKABLE void assignSourceNodeToSelectedItem(const QVariant &sourceNode);
|
Q_INVOKABLE void assignSourceNodeToSelectedItem(const QVariant &sourceNode);
|
||||||
|
|
||||||
Q_INVOKABLE ModelNode dataStoreNode() const;
|
Q_INVOKABLE ModelNode dataStoreNode() const;
|
||||||
|
Reference in New Issue
Block a user