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 }