Warning, file /multimedia/kdenlive/src/assets/assetlist/model/assettreemodel.hpp was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 /*
0002     SPDX-FileCopyrightText: 2017 Nicolas Carion
0003     SPDX-License-Identifier: GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0004 */
0005 
0006 #pragma once
0007 
0008 #include "abstractmodel/abstracttreemodel.hpp"
0009 #include "assets/assetlist/view/asseticonprovider.hpp"
0010 
0011 /** @brief This class represents an effect hierarchy to be displayed as a tree
0012  */
0013 class TreeItem;
0014 class QMenu;
0015 class KActionCategory;
0016 
0017 class AssetTreeModel : public AbstractTreeModel
0018 {
0019 
0020 public:
0021     explicit AssetTreeModel(QObject *parent = nullptr);
0022 
0023     enum { IdRole = Qt::UserRole + 1, NameRole, FavoriteRole, TypeRole };
0024     enum { NameCol = 0, IdCol = 1, TypeCol = 2, FavCol = 3, PreferredCol = 5 };
0025 
0026     /** @brief Helper function to retrieve name */
0027     QString getName(const QModelIndex &index) const;
0028     /** @brief  Helper function to retrieve description */
0029     QString getDescription(bool isEffect, const QModelIndex &index) const;
0030     /** @brief Helper function to retrieve if an effect is categorized as favorite */
0031     bool isFavorite(const QModelIndex &index) const;
0032     QHash<int, QByteArray> roleNames() const override;
0033     QVariant data(const QModelIndex &index, int role) const override;
0034     virtual void reloadAssetMenu(QMenu *effectsMenu, KActionCategory *effectActions) = 0;
0035     virtual void setFavorite(const QModelIndex &index, bool favorite, bool isEffect) = 0;
0036     virtual void deleteEffect(const QModelIndex &index) = 0;
0037     virtual void editCustomAsset(const QString &newName, const QString &newDescription, const QModelIndex &index) = 0;
0038     Qt::ItemFlags flags(const QModelIndex &index) const override;
0039 
0040 protected:
0041     AssetIconProvider *m_assetIconProvider;
0042 };