File indexing completed on 2024-04-14 04:46:35
0001 /* 0002 SPDX-FileCopyrightText: 2015 Jean-Baptiste Mardelle <jb@kdenlive.org> 0003 0004 SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 */ 0006 0007 #include "effectbasket.h" 0008 #include "effects/effectsrepository.hpp" 0009 #include "kdenlivesettings.h" 0010 #include <KLocalizedString> 0011 0012 #include <QMimeData> 0013 0014 EffectBasket::EffectBasket(QWidget *parent) 0015 : QListWidget(parent) 0016 { 0017 setFrameStyle(QFrame::NoFrame); 0018 setSelectionMode(QAbstractItemView::SingleSelection); 0019 setDragEnabled(true); 0020 slotReloadBasket(); 0021 connect(this, &QListWidget::itemActivated, this, &EffectBasket::slotAddEffect); 0022 } 0023 0024 void EffectBasket::slotReloadBasket() 0025 { 0026 clear(); 0027 for (const QString &effectId : KdenliveSettings::favorite_effects()) { 0028 if (EffectsRepository::get()->exists(effectId)) { 0029 QListWidgetItem *it = new QListWidgetItem(EffectsRepository::get()->getName(effectId)); 0030 it->setData(Qt::UserRole, effectId); 0031 addItem(it); 0032 } 0033 } 0034 sortItems(); 0035 } 0036 0037 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) 0038 QMimeData *EffectBasket::mimeData(const QList<QListWidgetItem *> list) const 0039 #else 0040 QMimeData *EffectBasket::mimeData(const QList<QListWidgetItem *> &list) const 0041 #endif 0042 { 0043 if (list.isEmpty()) { 0044 return new QMimeData; 0045 } 0046 QDomDocument doc; 0047 QListWidgetItem *item = list.at(0); 0048 QString effectId = item->data(Qt::UserRole).toString(); 0049 auto *mime = new QMimeData; 0050 mime->setData(QStringLiteral("kdenlive/effect"), effectId.toUtf8()); 0051 return mime; 0052 } 0053 0054 void EffectBasket::showEvent(QShowEvent *event) 0055 { 0056 QListWidget::showEvent(event); 0057 if (!currentItem()) { 0058 setCurrentRow(0); 0059 } 0060 } 0061 0062 void EffectBasket::slotAddEffect(QListWidgetItem *item) 0063 { 0064 QString assetId = item->data(Qt::UserRole).toString(); 0065 QVariantMap mimeData; 0066 mimeData.insert(QStringLiteral("kdenlive/effect"), assetId); 0067 Q_EMIT activateAsset(mimeData); 0068 }