diff options
3 files changed, 120 insertions, 100 deletions
diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp index f910a4bb..da15c053 100644 --- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp @@ -417,7 +417,6 @@ qt3dsdm::SValue InspectorControlModel::currentPropertyValue(long instance, int h void InspectorControlModel::updateControlledToggleState(InspectorControlBase* inItem) const { const auto studio = g_StudioApp.GetCore()->GetDoc()->GetStudioSystem(); - bool wasControlled = inItem->m_controlled; // toggle if controlledproperty contains the name of this property qt3dsdm::SValue currPropVal = currentPropertyValue( @@ -431,6 +430,7 @@ void InspectorControlModel::updateControlledToggleState(InspectorControlBase* in inItem->m_controlled = false; inItem->m_tooltip = Q3DStudio::CString( inItem->m_metaProperty.m_Description.c_str()).toQString(); + inItem->m_controller = ""; } else { Q3DStudio::CString propName = studio->GetPropertySystem()->GetName(inItem->m_property).c_str(); @@ -447,6 +447,7 @@ void InspectorControlModel::updateControlledToggleState(InspectorControlBase* in inItem->m_controlled = false; inItem->m_tooltip = Q3DStudio::CString( inItem->m_metaProperty.m_Description.c_str()).toQString(); + inItem->m_controller = ""; } else { inItem->m_controlled = true; // TODO just get the first whitespace-delimited string from @@ -458,12 +459,14 @@ void InspectorControlModel::updateControlledToggleState(InspectorControlBase* in const QString ctrlName = (currPropValStr.Left( currPropValStr.find(" "))).toQString(); inItem->m_tooltip = tr("Controlling Datainput:\n%1").arg(ctrlName); + inItem->m_controller = ctrlName; } } Q_EMIT inItem->tooltipChanged(); - if (wasControlled != inItem->m_controlled) - Q_EMIT inItem->controlledChanged(); + // Emit signal always to trigger updating of controller name in UI + // also when user switches from one controller to another + Q_EMIT inItem->controlledChanged(); } void InspectorControlModel::updateAnimateToggleState(InspectorControlBase* inItem) diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.h b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.h index bcb2c07f..9e0009f2 100644 --- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.h +++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.h @@ -69,6 +69,7 @@ class InspectorControlBase : public QObject Q_PROPERTY(bool animated MEMBER m_animated NOTIFY animatedChanged) Q_PROPERTY(bool controlled MEMBER m_controlled NOTIFY controlledChanged) Q_PROPERTY(bool controllable MEMBER m_controllable CONSTANT) + Q_PROPERTY(QString controller MEMBER m_controller NOTIFY controlledChanged) public: virtual ~InspectorControlBase(); @@ -96,7 +97,7 @@ public: bool m_animated = false; bool m_controlled = false; bool m_controllable = false; - + QString m_controller; std::vector<qt3dsdm::TSignalConnectionPtr> m_connections; }; diff --git a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.qml b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.qml index 3e3b2f8d..edf65193 100644 --- a/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.qml +++ b/src/Authoring/Studio/Palettes/Inspector/InspectorControlView.qml @@ -294,106 +294,122 @@ Rectangle { } } - Loader { - id: loader - readonly property var modelData: propertyRow.modelData - sourceComponent: { - const dataType = modelData.dataType; - switch (dataType) { - case DataModelDataType.Long: - if (modelData.propertyType === - AdditionalMetaDataType.ShadowMapResolution) { - return shadowResolutionComponent; - } - if (modelData.propertyType === AdditionalMetaDataType.Range) { - return intSliderComponent; - } - console.warn("KDAB_TODO: implement handler for type \"Long\", property:", - modelData.propertyType); - return null; - case DataModelDataType.Long4: - if (modelData.propertyType === AdditionalMetaDataType.Image) { - return imageChooser; - } - console.warn("KDAB_TODO: implement handler for type \"long4\" property:", - modelData.propertyType); - return null; - case DataModelDataType.ObjectRef: - if (modelData.propertyType === AdditionalMetaDataType.ObjectRef) - return objectReference; - console.warn("KDAB_TODO: implement handler for type: \"objectref\" property:", - modelData.propertyType); - return null; - case DataModelDataType.StringOrInt: - //TODO: Maybe do some further check if the right combo is used - if (modelData.propertyType === AdditionalMetaDataType.StringList) - return slideSelectionDropDown; - console.warn("KDAB_TODO: (String) implement handler for type \"stringOrInt\" property:", - modelData.propertyType); - return null; - case DataModelDataType.String: - if (modelData.propertyType === AdditionalMetaDataType.Import) - return fileChooser; - if (modelData.propertyType === AdditionalMetaDataType.StringList) - return comboDropDown; - if (modelData.propertyType === AdditionalMetaDataType.Renderable) - return renderableDropDown; - if (modelData.propertyType === AdditionalMetaDataType.Mesh) - return meshChooser; - // Show DataInput selector if this item is controlled - if (modelData.propertyType === AdditionalMetaDataType.MultiLine) + ColumnLayout { + StyledLabel { + id: dataInputName + Layout.preferredWidth: _valueWidth + // use visible: modelData.controlled instead + // if label needs to be shown + // only when item is actually controlled + // (causes re-layouting of inspector panel) + visible: modelData.controllable + text: modelData.controlled ? + modelData.controller : "[No datainput control]"; + color: modelData.controlled ? + _dataInputColor : _disabledColor; + } + + Loader { + id: loader + readonly property var modelData: propertyRow.modelData + sourceComponent: { + const dataType = modelData.dataType; + switch (dataType) { + case DataModelDataType.Long: + if (modelData.propertyType === + AdditionalMetaDataType.ShadowMapResolution) { + return shadowResolutionComponent; + } + if (modelData.propertyType === AdditionalMetaDataType.Range) { + return intSliderComponent; + } + console.warn("KDAB_TODO: implement handler for type \"Long\", property:", + modelData.propertyType); + return null; + case DataModelDataType.Long4: + if (modelData.propertyType === AdditionalMetaDataType.Image) { + return imageChooser; + } + console.warn("KDAB_TODO: implement handler for type \"long4\" property:", + modelData.propertyType); + return null; + case DataModelDataType.ObjectRef: + if (modelData.propertyType === AdditionalMetaDataType.ObjectRef) + return objectReference; + console.warn("KDAB_TODO: implement handler for type: \"objectref\" property:", + modelData.propertyType); + return null; + case DataModelDataType.StringOrInt: + //TODO: Maybe do some further check if the right combo is used + if (modelData.propertyType === AdditionalMetaDataType.StringList) + return slideSelectionDropDown; + console.warn("KDAB_TODO: (String) implement handler for type \"stringOrInt\" property:", + modelData.propertyType); + return null; + case DataModelDataType.String: + if (modelData.propertyType === AdditionalMetaDataType.Import) + return fileChooser; + if (modelData.propertyType === AdditionalMetaDataType.StringList) + return comboDropDown; + if (modelData.propertyType === AdditionalMetaDataType.Renderable) + return renderableDropDown; + if (modelData.propertyType === AdditionalMetaDataType.Mesh) + return meshChooser; + if (modelData.propertyType === AdditionalMetaDataType.MultiLine) return multiLine; - if (modelData.propertyType === AdditionalMetaDataType.Font) - return comboDropDown; - if (modelData.propertyType === AdditionalMetaDataType.Texture) - return textureChooser; - console.warn("KDAB_TODO: (String) implement handler for type \"string\" property:", - modelData.propertyType); - return null; - case DataModelDataType.Bool: - return checkBox; - case DataModelDataType.Float: - if (modelData.propertyType === AdditionalMetaDataType.None) - return valueComponent; - if (modelData.propertyType === AdditionalMetaDataType.Range) - return sliderComponent; - if (modelData.propertyType === AdditionalMetaDataType.FontSize) - return fontSizeComponent; - console.warn("KDAB_TODO: implement handler for type\"float\" property:", - modelData.propertyType); - return null; - case DataModelDataType.Float2: - if (modelData.propertyType === AdditionalMetaDataType.None) - return xyPropertyComponent; - console.warn("TODO: implement handler for type:\"float2\" property:", - modelData.propertyType, "text ", - model.modelData.title); - return null; - case DataModelDataType.Float3: - if (modelData.propertyType === AdditionalMetaDataType.Color) - return colorBox; - if (modelData.propertyType === AdditionalMetaDataType.Rotation) - return xyzPropertyComponent; - if (modelData.propertyType === AdditionalMetaDataType.None) - return xyzPropertyComponent; - console.warn("KDAB_TODO: implement handler for type:\"float3\" property:", - modelData.propertyType, "text ", - model.modelData.title); - return null; - case DataModelDataType.StringRef: - if (modelData.propertyType === AdditionalMetaDataType.None) - return materialDropDown; - console.warn("KDAB_TODO: implement handler for type:\"StringRef\" text ", - model.modelData.title); + if (modelData.propertyType === AdditionalMetaDataType.Font) + return comboDropDown; + if (modelData.propertyType === AdditionalMetaDataType.Texture) + return textureChooser; + console.warn("KDAB_TODO: (String) implement handler for type \"string\" property:", + modelData.propertyType); + return null; + case DataModelDataType.Bool: + return checkBox; + case DataModelDataType.Float: + if (modelData.propertyType === AdditionalMetaDataType.None) + return valueComponent; + if (modelData.propertyType === AdditionalMetaDataType.Range) + return sliderComponent; + if (modelData.propertyType === AdditionalMetaDataType.FontSize) + return fontSizeComponent; + console.warn("KDAB_TODO: implement handler for type\"float\" property:", + modelData.propertyType); + return null; + case DataModelDataType.Float2: + if (modelData.propertyType === AdditionalMetaDataType.None) + return xyPropertyComponent; + console.warn("TODO: implement handler for type:\"float2\" property:", + modelData.propertyType, "text ", + model.modelData.title); + return null; + case DataModelDataType.Float3: + if (modelData.propertyType === AdditionalMetaDataType.Color) + return colorBox; + if (modelData.propertyType === AdditionalMetaDataType.Rotation) + return xyzPropertyComponent; + if (modelData.propertyType === AdditionalMetaDataType.None) + return xyzPropertyComponent; + console.warn("KDAB_TODO: implement handler for type:\"float3\" property:", + modelData.propertyType, "text ", + model.modelData.title); + return null; + case DataModelDataType.StringRef: + if (modelData.propertyType === AdditionalMetaDataType.None) + return materialDropDown; + console.warn("KDAB_TODO: implement handler for type:\"StringRef\" text ", + model.modelData.title); + return null; + default: + console.warn("KDAB_TODO: implement handler for type", + dataType, "property", + modelData.propertyType, "text ", + model.modelData.title); + } return null; - default: - console.warn("KDAB_TODO: implement handler for type", - dataType, "property", - modelData.propertyType, "text ", - model.modelData.title); } - return null; } + } } } |