diff options
author | Janne Kangas <janne.kangas@qt.io> | 2018-02-07 14:14:36 +0200 |
---|---|---|
committer | Tomi Korpipää <tomi.korpipaa@qt.io> | 2018-02-20 07:48:27 +0000 |
commit | 40a597216960072a25f178244e27d862bea5c61a (patch) | |
tree | 2956b0e89988de72950f6ff8986c8053a763361c | |
parent | 91571c6a16fc34f663b1adce37f5015929aef78a (diff) |
Show controlling datainput name in inspector panelv1.1.0-rc
Adds datainput name above text control in inspector panel. For now,
this does not add excessive clutter in inspector panel. When datainput
control is enabled for several properties, we might want to dynamically
show controller name label only for properties that are actually
controlled to keep inspector panel size smaller.
Change-Id: I6ea0dee1c9bc7b30b6faa82acb68c2f5c338c62d
Task-Id: QT3DS-1152
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
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; } + } } } |