summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJanne Kangas <janne.kangas@qt.io>2018-02-07 14:14:36 +0200
committerTomi Korpipää <tomi.korpipaa@qt.io>2018-02-20 07:48:27 +0000
commit40a597216960072a25f178244e27d862bea5c61a (patch)
tree2956b0e89988de72950f6ff8986c8053a763361c
parent91571c6a16fc34f663b1adce37f5015929aef78a (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>
-rw-r--r--src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.cpp9
-rw-r--r--src/Authoring/Studio/Palettes/Inspector/InspectorControlModel.h3
-rw-r--r--src/Authoring/Studio/Palettes/Inspector/InspectorControlView.qml208
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;
}
+
}
}
}