diff options
Diffstat (limited to 'src/Authoring/Studio/Application/DataInputSelectView.cpp')
-rw-r--r-- | src/Authoring/Studio/Application/DataInputSelectView.cpp | 27 |
1 files changed, 23 insertions, 4 deletions
diff --git a/src/Authoring/Studio/Application/DataInputSelectView.cpp b/src/Authoring/Studio/Application/DataInputSelectView.cpp index 11c45e6e..40b8e0d8 100644 --- a/src/Authoring/Studio/Application/DataInputSelectView.cpp +++ b/src/Authoring/Studio/Application/DataInputSelectView.cpp @@ -38,12 +38,17 @@ #include "DataInputDlg.h" #include "StudioApp.h" -DataInputSelectView::DataInputSelectView(QWidget *parent, EDataType defaultType) +// Empty acceptedTypes vector means all types are accepted +DataInputSelectView::DataInputSelectView(const QVector<EDataType> &acceptedTypes, QWidget *parent) : QQuickWidget(parent) , m_model(new DataInputSelectModel(this)) - , m_defaultType(defaultType) + , m_defaultType(EDataType::DataTypeFloat) + , m_acceptedTypes(acceptedTypes) { + if (!m_acceptedTypes.isEmpty()) + m_defaultType = m_acceptedTypes[0]; + setWindowTitle(tr("Datainputs")); setWindowFlags(Qt::Tool | Qt::FramelessWindowHint); setResizeMode(QQuickWidget::SizeRootObjectToView); @@ -60,6 +65,13 @@ void DataInputSelectView::setData(const QVector<QPair<QString, int>> &dataInputL updateData(dataInputList); } +void DataInputSelectView::setAcceptedTypes(const QVector<EDataType> &acceptedTypes) +{ + m_acceptedTypes = acceptedTypes; + if (!m_acceptedTypes.isEmpty()) + m_defaultType = m_acceptedTypes[0]; +} + void DataInputSelectView::updateData(const QVector<QPair<QString, int>> &dataInputList) { m_selection = -1; @@ -139,8 +151,15 @@ void DataInputSelectView::setSelection(int index) if (dataInputDlg.result() == QDialog::Accepted) { m_mostRecentlyAdded = dataInputDlg.getAddedDataInput(); - if (m_mostRecentlyAdded.size()) - Q_EMIT dataInputChanged(m_handle, m_instance, m_mostRecentlyAdded); + if (m_mostRecentlyAdded.size()) { + CDataInputDialogItem *diItem = g_StudioApp.m_dataInputDialogItems.value( + m_mostRecentlyAdded); + if (m_acceptedTypes.isEmpty() + || (diItem && m_acceptedTypes.contains( + static_cast<EDataType>(diItem->type)))) { + Q_EMIT dataInputChanged(m_handle, m_instance, m_mostRecentlyAdded); + } + } g_StudioApp.SaveUIAFile(false); } } |