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 }