// Copyright (C) 2022 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0+ OR GPL-3.0 WITH Qt-GPL-exception-1.0 #pragma once #include #include "assetslibrarymodel.h" #include "createtexture.h" #include #include #include #include #include #include #include #include QT_BEGIN_NAMESPACE class QShortcut; QT_END_NAMESPACE namespace Utils { class QtcProcess; } namespace QmlDesigner { class MetaInfo; class Model; class AssetsLibraryIconProvider; class AssetsLibraryModel; class SynchronousImageCache; class AsynchronousImageCache; class ImageCacheCollector; class AssetsLibraryWidget : public QFrame { Q_OBJECT public: AssetsLibraryWidget(AsynchronousImageCache &asynchronousFontImageCache, SynchronousImageCache &synchronousFontImageCache); ~AssetsLibraryWidget() = default; QList createToolBarWidgets(); static QString qmlSourcesPath(); void clearSearchFilter(); void delayedUpdateModel(); void updateModel(); void setResourcePath(const QString &resourcePath); void setModel(Model *model); static QPair getAssetTypeAndData(const QString &assetPath); Q_INVOKABLE void startDragAsset(const QStringList &assetPaths, const QPointF &mousePos); Q_INVOKABLE void handleAddAsset(); Q_INVOKABLE void handleSearchFilterChanged(const QString &filterText); Q_INVOKABLE void handleExtFilesDrop(const QList &simpleFilePaths, const QList &complexFilePaths, const QString &targetDirPath); Q_INVOKABLE void emitExtFilesDrop(const QList &simpleFilePaths, const QList &complexFilePaths, const QString &targetDirPath = {}); Q_INVOKABLE QSet supportedAssetSuffixes(bool complex); Q_INVOKABLE void openEffectMaker(const QString &filePath); Q_INVOKABLE bool qtVersionIsAtLeast6_4() const; Q_INVOKABLE void invalidateThumbnail(const QString &id); Q_INVOKABLE void addTextures(const QStringList &filePaths); Q_INVOKABLE void addLightProbe(const QString &filePaths); signals: void itemActivated(const QString &itemName); void extFilesDrop(const QList &simpleFilePaths, const QList &complexFilePaths, const QString &targetDirPath); void directoryCreated(const QString &path); void addTexturesRequested(const QStringList &filePaths, QmlDesigner::AddTextureMode mode); protected: bool eventFilter(QObject *obj, QEvent *event) override; private: void reloadQmlSource(); void addResources(const QStringList &files); void updateSearch(); QSize m_itemIconSize; SynchronousImageCache &m_fontImageCache; AssetsLibraryIconProvider *m_assetsIconProvider = nullptr; AssetsLibraryModel *m_assetsModel = nullptr; QScopedPointer m_assetsWidget; std::unique_ptr m_fontPreviewTooltipBackend; QShortcut *m_qmlSourceUpdateShortcut = nullptr; QPointer m_model; QStringList m_assetsToDrag; bool m_updateRetry = false; QString m_filterText; QPoint m_dragStartPoint; }; } // namespace QmlDesigner