forked from qt-creator/qt-creator
QmlDesigner: Add QmlTimelineKeyframeGroup tracing
Change-Id: I6677896f6f55c5ee71d05b2d6b932404c2ab443e Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -18,51 +18,98 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
QmlTimelineKeyframeGroup::QmlTimelineKeyframeGroup() = default;
|
static auto category = ModelTracing::category;
|
||||||
|
|
||||||
QmlTimelineKeyframeGroup::QmlTimelineKeyframeGroup(const ModelNode &modelNode)
|
bool QmlTimelineKeyframeGroup::isValid(SL sl) const
|
||||||
: QmlModelNodeFacade(modelNode)
|
|
||||||
{}
|
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isValid() const
|
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is valid",
|
||||||
|
category(),
|
||||||
|
keyValue("mode node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return isValidQmlTimelineKeyframeGroup(modelNode());
|
return isValidQmlTimelineKeyframeGroup(modelNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isValidQmlTimelineKeyframeGroup(const ModelNode &modelNode)
|
bool QmlTimelineKeyframeGroup::isValidQmlTimelineKeyframeGroup(const ModelNode &modelNode, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is valid",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", modelNode),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return modelNode.isValid() && modelNode.metaInfo().isQtQuickTimelineKeyframeGroup();
|
return modelNode.isValid() && modelNode.metaInfo().isQtQuickTimelineKeyframeGroup();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::destroy()
|
void QmlTimelineKeyframeGroup::destroy(SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group destroy",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
modelNode().destroy();
|
modelNode().destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelNode QmlTimelineKeyframeGroup::target() const
|
ModelNode QmlTimelineKeyframeGroup::target(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group target",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return modelNode().bindingProperty("target").resolveToModelNode();
|
return modelNode().bindingProperty("target").resolveToModelNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::setTarget(const ModelNode &target)
|
void QmlTimelineKeyframeGroup::setTarget(const ModelNode &target, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group target",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("target", target),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
ModelNode nonConstTarget = target;
|
ModelNode nonConstTarget = target;
|
||||||
|
|
||||||
modelNode().bindingProperty("target").setExpression(nonConstTarget.validId());
|
modelNode().bindingProperty("target").setExpression(nonConstTarget.validId());
|
||||||
}
|
}
|
||||||
|
|
||||||
PropertyName QmlTimelineKeyframeGroup::propertyName() const
|
PropertyName QmlTimelineKeyframeGroup::propertyName(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group property name",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return modelNode().variantProperty("property").value().toString().toUtf8();
|
return modelNode().variantProperty("property").value().toString().toUtf8();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::setPropertyName(PropertyNameView propertyName)
|
void QmlTimelineKeyframeGroup::setPropertyName(PropertyNameView propertyName, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group property name",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("property name", propertyName),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
modelNode().variantProperty("property").setValue(QString::fromUtf8(propertyName));
|
modelNode().variantProperty("property").setValue(QString::fromUtf8(propertyName));
|
||||||
}
|
}
|
||||||
|
|
||||||
int QmlTimelineKeyframeGroup::getSupposedTargetIndex(qreal newFrame) const
|
int QmlTimelineKeyframeGroup::getSupposedTargetIndex(qreal newFrame, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group target index",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("new frame", newFrame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
const NodeListProperty nodeListProperty = modelNode().defaultNodeListProperty();
|
const NodeListProperty nodeListProperty = modelNode().defaultNodeListProperty();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
for (const auto &node : nodeListProperty.toModelNodeList()) {
|
for (const auto &node : nodeListProperty.toModelNodeList()) {
|
||||||
@@ -79,32 +126,56 @@ int QmlTimelineKeyframeGroup::getSupposedTargetIndex(qreal newFrame) const
|
|||||||
return nodeListProperty.count();
|
return nodeListProperty.count();
|
||||||
}
|
}
|
||||||
|
|
||||||
int QmlTimelineKeyframeGroup::indexOfKeyframe(const ModelNode &frame) const
|
int QmlTimelineKeyframeGroup::indexOfKeyframe(const ModelNode &frame, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group index of key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("frame", frame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
return modelNode().defaultNodeListProperty().indexOf(frame);
|
return modelNode().defaultNodeListProperty().indexOf(frame);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::slideKeyframe(int /*sourceIndex*/, int /*targetIndex*/)
|
void QmlTimelineKeyframeGroup::slideKeyframe(int /*sourceIndex*/, int /*targetIndex*/, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group slide key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
/*
|
/*
|
||||||
if (targetIndex != sourceIndex)
|
if (targetIndex != sourceIndex)
|
||||||
modelNode().defaultNodeListProperty().slide(sourceIndex, targetIndex);
|
modelNode().defaultNodeListProperty().slide(sourceIndex, targetIndex);
|
||||||
*/
|
*/
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isRecording() const
|
bool QmlTimelineKeyframeGroup::isRecording(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is recording",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
return modelNode().hasAuxiliaryData(recordProperty);
|
return modelNode().hasAuxiliaryData(recordProperty);
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::toogleRecording(bool record) const
|
void QmlTimelineKeyframeGroup::toogleRecording(bool record, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group toggle recording",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("record", record),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
if (!record) {
|
if (!record) {
|
||||||
@@ -115,26 +186,52 @@ void QmlTimelineKeyframeGroup::toogleRecording(bool record) const
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QmlTimeline QmlTimelineKeyframeGroup::timeline() const
|
QmlTimeline QmlTimelineKeyframeGroup::timeline(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group timeline",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
return modelNode().parentProperty().parentModelNode();
|
return modelNode().parentProperty().parentModelNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isDangling(const ModelNode &node)
|
bool QmlTimelineKeyframeGroup::isDangling(const ModelNode &node, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is dangling",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", node),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QmlTimelineKeyframeGroup group{node};
|
QmlTimelineKeyframeGroup group{node};
|
||||||
return group.isDangling();
|
return group.isDangling();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isDangling() const
|
bool QmlTimelineKeyframeGroup::isDangling(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is dangling",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return !target().isValid() || keyframes().isEmpty();
|
return !target().isValid() || keyframes().isEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::setValue(const QVariant &value, qreal currentFrame)
|
void QmlTimelineKeyframeGroup::setValue(const QVariant &value, qreal currentFrame, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group set value",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("value", value),
|
||||||
|
keyValue("current frame", currentFrame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
if (!isValid())
|
if (!isValid())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -163,8 +260,15 @@ void QmlTimelineKeyframeGroup::setValue(const QVariant &value, qreal currentFram
|
|||||||
slideKeyframe(sourceIndex, targetIndex);
|
slideKeyframe(sourceIndex, targetIndex);
|
||||||
}
|
}
|
||||||
|
|
||||||
QVariant QmlTimelineKeyframeGroup::value(qreal frame) const
|
QVariant QmlTimelineKeyframeGroup::value(qreal frame, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group value",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("frame", frame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
||||||
@@ -176,8 +280,14 @@ QVariant QmlTimelineKeyframeGroup::value(qreal frame) const
|
|||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
NodeMetaInfo QmlTimelineKeyframeGroup::valueType() const
|
NodeMetaInfo QmlTimelineKeyframeGroup::valueType(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group value type",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
const ModelNode targetNode = target();
|
const ModelNode targetNode = target();
|
||||||
@@ -188,8 +298,15 @@ NodeMetaInfo QmlTimelineKeyframeGroup::valueType() const
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::hasKeyframe(qreal frame)
|
bool QmlTimelineKeyframeGroup::hasKeyframe(qreal frame, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group has key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("frame", frame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
||||||
if (qFuzzyCompare(childNode.variantProperty("frame").value().toReal(), frame))
|
if (qFuzzyCompare(childNode.variantProperty("frame").value().toReal(), frame))
|
||||||
return true;
|
return true;
|
||||||
@@ -198,8 +315,15 @@ bool QmlTimelineKeyframeGroup::hasKeyframe(qreal frame)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelNode QmlTimelineKeyframeGroup::keyframe(qreal frame) const
|
ModelNode QmlTimelineKeyframeGroup::keyframe(qreal frame, SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("frame", frame),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
||||||
if (qFuzzyCompare(childNode.variantProperty("frame").value().toReal(), frame))
|
if (qFuzzyCompare(childNode.variantProperty("frame").value().toReal(), frame))
|
||||||
return childNode;
|
return childNode;
|
||||||
@@ -208,8 +332,14 @@ ModelNode QmlTimelineKeyframeGroup::keyframe(qreal frame) const
|
|||||||
return ModelNode();
|
return ModelNode();
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QmlTimelineKeyframeGroup::minActualKeyframe() const
|
qreal QmlTimelineKeyframeGroup::minActualKeyframe(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group min actual key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
qreal min = std::numeric_limits<double>::max();
|
qreal min = std::numeric_limits<double>::max();
|
||||||
@@ -222,8 +352,14 @@ qreal QmlTimelineKeyframeGroup::minActualKeyframe() const
|
|||||||
return min;
|
return min;
|
||||||
}
|
}
|
||||||
|
|
||||||
qreal QmlTimelineKeyframeGroup::maxActualKeyframe() const
|
qreal QmlTimelineKeyframeGroup::maxActualKeyframe(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group max actual key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(isValid());
|
QTC_CHECK(isValid());
|
||||||
|
|
||||||
qreal max = std::numeric_limits<double>::lowest();
|
qreal max = std::numeric_limits<double>::lowest();
|
||||||
@@ -236,30 +372,61 @@ qreal QmlTimelineKeyframeGroup::maxActualKeyframe() const
|
|||||||
return max;
|
return max;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ModelNode> QmlTimelineKeyframeGroup::keyframes() const
|
QList<ModelNode> QmlTimelineKeyframeGroup::keyframes(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group key frames",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return modelNode().defaultNodeListProperty().toModelNodeList();
|
return modelNode().defaultNodeListProperty().toModelNodeList();
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ModelNode> QmlTimelineKeyframeGroup::keyframePositions() const
|
QList<ModelNode> QmlTimelineKeyframeGroup::keyframePositions(SL sl) const
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group key frame positions",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return Utils::filtered(modelNode().defaultNodeListProperty().toModelNodeList(), [](auto &&node) {
|
return Utils::filtered(modelNode().defaultNodeListProperty().toModelNodeList(), [](auto &&node) {
|
||||||
return node.variantProperty("frame").value().isValid();
|
return node.variantProperty("frame").value().isValid();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::isValidKeyframe(const ModelNode &node)
|
bool QmlTimelineKeyframeGroup::isValidKeyframe(const ModelNode &node, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group is valid key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", node),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return isValidQmlModelNodeFacade(node) && node.metaInfo().isQtQuickTimelineKeyframe();
|
return isValidQmlModelNodeFacade(node) && node.metaInfo().isQtQuickTimelineKeyframe();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool QmlTimelineKeyframeGroup::checkKeyframesType(const ModelNode &node)
|
bool QmlTimelineKeyframeGroup::checkKeyframesType(const ModelNode &node, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group check keyframes type",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", node),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
return node.isValid() && node.type() == "QtQuick.Timeline.KeyframeGroup";
|
return node.isValid() && node.type() == "QtQuick.Timeline.KeyframeGroup";
|
||||||
}
|
}
|
||||||
|
|
||||||
QmlTimelineKeyframeGroup QmlTimelineKeyframeGroup::keyframeGroupForKeyframe(const ModelNode &node)
|
QmlTimelineKeyframeGroup QmlTimelineKeyframeGroup::keyframeGroupForKeyframe(const ModelNode &node,
|
||||||
|
SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group for key frame",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", node),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
if (isValidKeyframe(node) && node.hasParentProperty()) {
|
if (isValidKeyframe(node) && node.hasParentProperty()) {
|
||||||
const QmlTimelineKeyframeGroup timeline(node.parentProperty().parentModelNode());
|
const QmlTimelineKeyframeGroup timeline(node.parentProperty().parentModelNode());
|
||||||
if (timeline.isValid())
|
if (timeline.isValid())
|
||||||
@@ -270,8 +437,14 @@ QmlTimelineKeyframeGroup QmlTimelineKeyframeGroup::keyframeGroupForKeyframe(cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
QList<QmlTimelineKeyframeGroup> QmlTimelineKeyframeGroup::allInvalidTimelineKeyframeGroups(
|
QList<QmlTimelineKeyframeGroup> QmlTimelineKeyframeGroup::allInvalidTimelineKeyframeGroups(
|
||||||
AbstractView *view)
|
AbstractView *view, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group all invalid timeline key frame groups",
|
||||||
|
category(),
|
||||||
|
keyValue("view", view),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
QTC_CHECK(view);
|
QTC_CHECK(view);
|
||||||
QTC_CHECK(view->model());
|
QTC_CHECK(view->model());
|
||||||
|
|
||||||
@@ -286,8 +459,15 @@ QList<QmlTimelineKeyframeGroup> QmlTimelineKeyframeGroup::allInvalidTimelineKeyf
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::moveAllKeyframes(qreal offset)
|
void QmlTimelineKeyframeGroup::moveAllKeyframes(qreal offset, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group move all key frames",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("offset", offset),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
||||||
auto property = childNode.variantProperty("frame");
|
auto property = childNode.variantProperty("frame");
|
||||||
if (property.isValid())
|
if (property.isValid())
|
||||||
@@ -295,8 +475,15 @@ void QmlTimelineKeyframeGroup::moveAllKeyframes(qreal offset)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void QmlTimelineKeyframeGroup::scaleAllKeyframes(qreal factor)
|
void QmlTimelineKeyframeGroup::scaleAllKeyframes(qreal factor, SL sl)
|
||||||
{
|
{
|
||||||
|
using NanotraceHR::keyValue;
|
||||||
|
NanotraceHR::Tracer tracer{"qml timeline key frame group scale all key frames",
|
||||||
|
category(),
|
||||||
|
keyValue("model node", *this),
|
||||||
|
keyValue("factor", factor),
|
||||||
|
keyValue("caller location", sl)};
|
||||||
|
|
||||||
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
for (const ModelNode &childNode : modelNode().defaultNodeListProperty().toModelNodeList()) {
|
||||||
auto property = childNode.variantProperty("frame");
|
auto property = childNode.variantProperty("frame");
|
||||||
|
|
||||||
|
@@ -15,57 +15,62 @@ class QmlTimeline;
|
|||||||
class QMLDESIGNER_EXPORT QmlTimelineKeyframeGroup final : public QmlModelNodeFacade
|
class QMLDESIGNER_EXPORT QmlTimelineKeyframeGroup final : public QmlModelNodeFacade
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
QmlTimelineKeyframeGroup();
|
QmlTimelineKeyframeGroup() = default;
|
||||||
QmlTimelineKeyframeGroup(const ModelNode &modelNode);
|
|
||||||
|
|
||||||
bool isValid() const;
|
QmlTimelineKeyframeGroup(const ModelNode &modelNode)
|
||||||
|
: QmlModelNodeFacade(modelNode)
|
||||||
|
{}
|
||||||
|
|
||||||
|
bool isValid(SL sl = {}) const;
|
||||||
explicit operator bool() const { return isValid(); }
|
explicit operator bool() const { return isValid(); }
|
||||||
static bool isValidQmlTimelineKeyframeGroup(const ModelNode &modelNode);
|
|
||||||
void destroy();
|
|
||||||
|
|
||||||
ModelNode target() const;
|
static bool isValidQmlTimelineKeyframeGroup(const ModelNode &modelNode, SL sl = {});
|
||||||
void setTarget(const ModelNode &target);
|
void destroy(SL sl = {});
|
||||||
|
|
||||||
PropertyName propertyName() const;
|
ModelNode target(SL sl = {}) const;
|
||||||
void setPropertyName(PropertyNameView propertyName);
|
void setTarget(const ModelNode &target, SL sl = {});
|
||||||
|
|
||||||
void setValue(const QVariant &value, qreal frame);
|
PropertyName propertyName(SL sl = {}) const;
|
||||||
QVariant value(qreal frame) const;
|
void setPropertyName(PropertyNameView propertyName, SL sl = {});
|
||||||
|
|
||||||
NodeMetaInfo valueType() const;
|
void setValue(const QVariant &value, qreal frame, SL sl = {});
|
||||||
|
QVariant value(qreal frame, SL sl = {}) const;
|
||||||
|
|
||||||
qreal currentFrame() const;
|
NodeMetaInfo valueType(SL sl = {}) const;
|
||||||
|
|
||||||
bool hasKeyframe(qreal frame);
|
qreal currentFrame(SL sl = {}) const;
|
||||||
|
|
||||||
qreal minActualKeyframe() const;
|
bool hasKeyframe(qreal frame, SL sl = {});
|
||||||
qreal maxActualKeyframe() const;
|
|
||||||
|
|
||||||
ModelNode keyframe(qreal position) const;
|
qreal minActualKeyframe(SL sl = {}) const;
|
||||||
|
qreal maxActualKeyframe(SL sl = {}) const;
|
||||||
|
|
||||||
QList<ModelNode> keyframes() const;
|
ModelNode keyframe(qreal position, SL sl = {}) const;
|
||||||
|
|
||||||
QList<ModelNode> keyframePositions() const;
|
QList<ModelNode> keyframes(SL sl = {}) const;
|
||||||
|
|
||||||
static bool isValidKeyframe(const ModelNode &node);
|
QList<ModelNode> keyframePositions(SL sl = {}) const;
|
||||||
static bool checkKeyframesType(const ModelNode &node);
|
|
||||||
static QmlTimelineKeyframeGroup keyframeGroupForKeyframe(const ModelNode &node);
|
|
||||||
static QList<QmlTimelineKeyframeGroup> allInvalidTimelineKeyframeGroups(AbstractView *view);
|
|
||||||
|
|
||||||
void moveAllKeyframes(qreal offset);
|
static bool isValidKeyframe(const ModelNode &node, SL sl = {});
|
||||||
void scaleAllKeyframes(qreal factor);
|
static bool checkKeyframesType(const ModelNode &node, SL sl = {});
|
||||||
int getSupposedTargetIndex(qreal newFrame) const;
|
static QmlTimelineKeyframeGroup keyframeGroupForKeyframe(const ModelNode &node, SL sl = {});
|
||||||
|
static QList<QmlTimelineKeyframeGroup> allInvalidTimelineKeyframeGroups(AbstractView *view,
|
||||||
|
SL sl = {});
|
||||||
|
|
||||||
int indexOfKeyframe(const ModelNode &frame) const;
|
void moveAllKeyframes(qreal offset, SL sl = {});
|
||||||
void slideKeyframe(int sourceIndex, int targetIndex);
|
void scaleAllKeyframes(qreal factor, SL sl = {});
|
||||||
|
int getSupposedTargetIndex(qreal newFrame, SL sl = {}) const;
|
||||||
|
|
||||||
bool isRecording() const;
|
int indexOfKeyframe(const ModelNode &frame, SL sl = {}) const;
|
||||||
void toogleRecording(bool b) const;
|
void slideKeyframe(int sourceIndex, int targetIndex, SL sl = {});
|
||||||
|
|
||||||
QmlTimeline timeline() const;
|
bool isRecording(SL sl = {}) const;
|
||||||
|
void toogleRecording(bool b, SL sl = {}) const;
|
||||||
|
|
||||||
static bool isDangling(const ModelNode &node);
|
QmlTimeline timeline(SL sl = {}) const;
|
||||||
bool isDangling() const;
|
|
||||||
|
static bool isDangling(const ModelNode &node, SL sl = {});
|
||||||
|
bool isDangling(SL sl = {}) const;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
Reference in New Issue
Block a user