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 "propertyeditorcontextobject.h"
#include "timelineeditor/easingcurvedialog.h"
#include <abstractview.h> #include <abstractview.h>
#include <nodemetainfo.h> #include <nodemetainfo.h>
#include <qmldesignerplugin.h> #include <qmldesignerplugin.h>
#include <qmlobjectnode.h> #include <qmlobjectnode.h>
#include <qmlmodelnodeproxy.h>
#include <rewritingexception.h> #include <rewritingexception.h>
#include <coreplugin/messagebox.h> #include <coreplugin/messagebox.h>
@@ -39,6 +41,8 @@
#include <QCursor> #include <QCursor>
#include <QQmlContext> #include <QQmlContext>
#include <coreplugin/icore.h>
static uchar fromHex(const uchar c, const uchar c2) static uchar fromHex(const uchar c, const uchar c2)
{ {
uchar rv = 0; uchar rv = 0;
@@ -406,4 +410,38 @@ void PropertyEditorContextObject::restoreCursor()
QApplication::restoreOverrideCursor(); 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 } //QmlDesigner

View File

@@ -26,6 +26,7 @@
#pragma once #pragma once
#include <model.h> #include <model.h>
#include <modelnode.h>
#include <QObject> #include <QObject>
#include <QUrl> #include <QUrl>
@@ -170,4 +171,30 @@ private:
bool m_setHasActiveTimeline = false; 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 { } //QmlDesigner {

View File

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