summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Application/DataInputSelectView.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Studio/Application/DataInputSelectView.cpp')
-rw-r--r--src/Authoring/Studio/Application/DataInputSelectView.cpp27
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);
}
}