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

0001 /*
0002     SPDX-FileCopyrightText: 2017 Nicolas Carion
0003     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #include "effectgroupmodel.hpp"
0007 
0008 #include "effectstackmodel.hpp"
0009 #include <utility>
0010 
0011 EffectGroupModel::EffectGroupModel(const QList<QVariant> &data, QString name, const std::shared_ptr<AbstractTreeModel> &stack, bool isRoot)
0012     : AbstractEffectItem(EffectItemType::Group, data, stack, isRoot)
0013     , m_name(std::move(name))
0014 {
0015 }
0016 
0017 // static
0018 std::shared_ptr<EffectGroupModel> EffectGroupModel::construct(const QString &name, std::shared_ptr<AbstractTreeModel> stack, bool isRoot)
0019 {
0020     QList<QVariant> data;
0021     data << name << name;
0022 
0023     std::shared_ptr<EffectGroupModel> self(new EffectGroupModel(data, name, stack, isRoot));
0024 
0025     baseFinishConstruct(self);
0026 
0027     return self;
0028 }
0029 
0030 void EffectGroupModel::updateEnable(bool updateTimeline)
0031 {
0032     Q_UNUSED(updateTimeline);
0033     for (int i = 0; i < childCount(); ++i) {
0034         std::static_pointer_cast<AbstractEffectItem>(child(i))->updateEnable();
0035     }
0036 }
0037 
0038 bool EffectGroupModel::isAudio() const
0039 {
0040     bool result = false;
0041     for (int i = 0; i < childCount() && !result; ++i) {
0042         result = result || std::static_pointer_cast<AbstractEffectItem>(child(i))->isAudio();
0043     }
0044     return result;
0045 }
0046 
0047 bool EffectGroupModel::isUnique() const
0048 {
0049     return false;
0050 }
0051 
0052 void EffectGroupModel::plant(const std::weak_ptr<Mlt::Service> &service)
0053 {
0054     for (int i = 0; i < childCount(); ++i) {
0055         std::static_pointer_cast<AbstractEffectItem>(child(i))->plant(service);
0056     }
0057 }
0058 void EffectGroupModel::plantClone(const std::weak_ptr<Mlt::Service> &service)
0059 {
0060     for (int i = 0; i < childCount(); ++i) {
0061         std::static_pointer_cast<AbstractEffectItem>(child(i))->plantClone(service);
0062     }
0063 }
0064 void EffectGroupModel::unplant(const std::weak_ptr<Mlt::Service> &service)
0065 {
0066     for (int i = 0; i < childCount(); ++i) {
0067         std::static_pointer_cast<AbstractEffectItem>(child(i))->unplant(service);
0068     }
0069 }
0070 void EffectGroupModel::unplantClone(const std::weak_ptr<Mlt::Service> &service)
0071 {
0072     for (int i = 0; i < childCount(); ++i) {
0073         std::static_pointer_cast<AbstractEffectItem>(child(i))->unplantClone(service);
0074     }
0075 }