QmlDesigner: Expose CurveEditor in PropertyEditor

Change-Id: I3b9b74b206a5b4948d8353b7fbc2572429dcbed0
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Thomas Hartmann
2020-04-01 18:44:07 +02:00
parent be66d1250c
commit 6d0bcb7665
3 changed files with 67 additions and 0 deletions

View File

@@ -24,11 +24,13 @@
****************************************************************************/
#include "propertyeditorcontextobject.h"
#include "timelineeditor/easingcurvedialog.h"
#include <abstractview.h>
#include <nodemetainfo.h>
#include <qmldesignerplugin.h>
#include <qmlobjectnode.h>
#include <qmlmodelnodeproxy.h>
#include <rewritingexception.h>
#include <coreplugin/messagebox.h>
@@ -39,6 +41,8 @@
#include <QCursor>
#include <QQmlContext>
#include <coreplugin/icore.h>
static uchar fromHex(const uchar c, const uchar c2)
{
uchar rv = 0;
@@ -406,4 +410,38 @@ void PropertyEditorContextObject::restoreCursor()
QApplication::restoreOverrideCursor();
}
void EasingCurveEditor::registerDeclarativeType()
{
qmlRegisterType<EasingCurveEditor>("HelperWidgets", 2, 0, "EasingCurveEditor");
}
void EasingCurveEditor::runDialog()
{
if (m_modelNode.isValid())
EasingCurveDialog::runDialog({ m_modelNode }, Core::ICore::dialogParent());
}
void EasingCurveEditor::setModelNodeBackend(const QVariant &modelNodeBackend)
{
if (!modelNodeBackend.isNull() && modelNodeBackend.isValid()) {
m_modelNodeBackend = modelNodeBackend;
const auto modelNodeBackendObject = m_modelNodeBackend.value<QObject*>();
const auto backendObjectCasted =
qobject_cast<const QmlDesigner::QmlModelNodeProxy *>(modelNodeBackendObject);
if (backendObjectCasted) {
m_modelNode = backendObjectCasted->qmlObjectNode().modelNode();
}
emit modelNodeBackendChanged();
}
}
QVariant EasingCurveEditor::modelNodeBackend() const
{
return m_modelNodeBackend;
}
} //QmlDesigner

View File

@@ -26,6 +26,7 @@
#pragma once
#include <model.h>
#include <modelnode.h>
#include <QObject>
#include <QUrl>
@@ -170,4 +171,30 @@ private:
bool m_setHasActiveTimeline = false;
};
class EasingCurveEditor : public QObject
{
Q_OBJECT
Q_PROPERTY(QVariant modelNodeBackendProperty READ modelNodeBackend WRITE setModelNodeBackend NOTIFY modelNodeBackendChanged)
public:
EasingCurveEditor(QObject *parent = nullptr) : QObject(parent)
{}
static void registerDeclarativeType();
Q_INVOKABLE void runDialog();
void setModelNodeBackend(const QVariant &modelNodeBackend);
signals:
void modelNodeBackendChanged();
private:
QVariant modelNodeBackend() const;
private:
QVariant m_modelNodeBackend;
QmlDesigner::ModelNode m_modelNode;
};
} //QmlDesigner {

View File

@@ -38,6 +38,7 @@
#include "qmlanchorbindingproxy.h"
#include "theme.h"
#include "aligndistribute.h"
#include "propertyeditorcontextobject.h"
#include "tooltip.h"
namespace QmlDesigner {
@@ -67,6 +68,7 @@ void Quick2PropertyEditorView::registerQmlTypes()
AnnotationEditor::registerDeclarativeType();
AlignDistribute::registerDeclarativeType();
Tooltip::registerDeclarativeType();
EasingCurveEditor::registerDeclarativeType();
}
}