File indexing completed on 2024-05-19 04:54:24

0001 /*
0002     SPDX-FileCopyrightText: 2017 Jean-Baptiste Mardelle <jb@kdenlive.org>
0003     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #include <KLocalizedContext>
0007 
0008 #include "assets/assetpanel.hpp"
0009 #include "builtstack.hpp"
0010 #include "core.h"
0011 #include "effects/effectstack/model/effectstackmodel.hpp"
0012 //#include "qml/colorwheelitem.h"
0013 
0014 #include <QQmlContext>
0015 #include <QQuickItem>
0016 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
0017 #include "kdeclarative_version.h"
0018 #endif
0019 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) || KDECLARATIVE_VERSION > QT_VERSION_CHECK(5, 98, 0)
0020 #include <KQuickIconProvider>
0021 #else
0022 #include <KDeclarative/KDeclarative>
0023 #endif
0024 
0025 BuiltStack::BuiltStack(AssetPanel *parent)
0026     : QQuickWidget(parent)
0027     , m_model(nullptr)
0028 {
0029 #if QT_VERSION > QT_VERSION_CHECK(6, 0, 0) || KDECLARATIVE_VERSION > QT_VERSION_CHECK(5, 98, 0)
0030     engine()->addImageProvider(QStringLiteral("icon"), new KQuickIconProvider);
0031 #else
0032     KDeclarative::KDeclarative kdeclarative;
0033     kdeclarative.setDeclarativeEngine(engine());
0034     kdeclarative.setupEngine(engine());
0035 #endif
0036     engine()->rootContext()->setContextObject(new KLocalizedContext(this));
0037 
0038     // qmlRegisterType<ColorWheelItem>("Kdenlive.Controls", 1, 0, "ColorWheelItem");
0039     setSizePolicy(QSizePolicy::MinimumExpanding, QSizePolicy::MinimumExpanding);
0040     setMinimumHeight(300);
0041     // setClearColor(palette().base().color());
0042     // setSource(QUrl(QStringLiteral("qrc:/qml/BuiltStack.qml")));
0043     setFocusPolicy(Qt::StrongFocus);
0044     QQuickItem *root = rootObject();
0045     QObject::connect(root, SIGNAL(valueChanged(QString, int)), parent, SLOT(parameterChanged(QString, int)));
0046     setResizeMode(QQuickWidget::SizeRootObjectToView);
0047 }
0048 
0049 BuiltStack::~BuiltStack() = default;
0050 
0051 void BuiltStack::setModel(const std::shared_ptr<EffectStackModel> &model, ObjectId ownerId)
0052 {
0053     m_model = model;
0054     if (ownerId.type == KdenliveObjectType::TimelineClip) {
0055         QVariant current_speed(int(100.0 * pCore->getClipSpeed(ownerId.itemId)));
0056         qDebug() << " CLIP SPEED OFR: " << ownerId.itemId << " = " << current_speed;
0057         QMetaObject::invokeMethod(rootObject(), "setSpeed", Qt::QueuedConnection, Q_ARG(QVariant, current_speed));
0058     }
0059     rootContext()->setContextProperty("effectstackmodel", model.get());
0060     QMetaObject::invokeMethod(rootObject(), "resetStack", Qt::QueuedConnection);
0061 }