diff --git a/share/qtcreator/qml/qmlpuppet/commands/commands.pri b/share/qtcreator/qml/qmlpuppet/commands/commands.pri index 270c326a33b..2a0913f72b1 100644 --- a/share/qtcreator/qml/qmlpuppet/commands/commands.pri +++ b/share/qtcreator/qml/qmlpuppet/commands/commands.pri @@ -1,4 +1,4 @@ -INCLUDEPATH += $$PWD +INCLUDEPATH += $$PWD $$PWD/../interfaces HEADERS += $$PWD/synchronizecommand.h \ \ $$PWD/captureddatacommand.h \ diff --git a/src/plugins/qmldesigner/CMakeLists.txt b/src/plugins/qmldesigner/CMakeLists.txt index 14f060a191a..89ddbed9d9d 100644 --- a/src/plugins/qmldesigner/CMakeLists.txt +++ b/src/plugins/qmldesigner/CMakeLists.txt @@ -509,6 +509,7 @@ extend_qtc_plugin(QmlDesigner include/variantproperty.h include/viewmanager.h include/imagecache.h + include/imagecacheinterface.h ) extend_qtc_plugin(QmlDesigner diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp index 79d559c0a0f..2799cc345d6 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.cpp @@ -164,6 +164,11 @@ void ItemLibraryView::setResourcePath(const QString &resourcePath) m_widget->setResourcePath(resourcePath); } +ImageCache &ItemLibraryView::imageCache() +{ + return m_imageCacheData->cache; +} + void ItemLibraryView::documentMessagesChanged(const QList &errors, const QList &) { if (m_hasErrors && errors.isEmpty()) diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h index 3d4af5d21c9..5eb0beffae2 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibraryview.h @@ -35,6 +35,7 @@ namespace QmlDesigner { class ItemLibraryWidget; class ImportManagerView; class ImageCacheData; +class ImageCache; class ItemLibraryView : public AbstractView { @@ -55,6 +56,8 @@ public: void setResourcePath(const QString &resourcePath); + ImageCache &imageCache(); + protected: void updateImports(); diff --git a/src/plugins/qmldesigner/designercore/include/imagecache.h b/src/plugins/qmldesigner/designercore/include/imagecache.h index f044dbd5d5d..83e6c444a7d 100644 --- a/src/plugins/qmldesigner/designercore/include/imagecache.h +++ b/src/plugins/qmldesigner/designercore/include/imagecache.h @@ -25,22 +25,20 @@ #pragma once -#include +#include "imagecacheinterface.h" #include #include #include #include -#include - namespace QmlDesigner { class TimeStampProviderInterface; class ImageCacheStorageInterface; class ImageCacheGeneratorInterface; -class ImageCache +class ImageCache final : public ImageCacheInterface { public: using CaptureCallback = std::function; @@ -55,11 +53,11 @@ public: void requestImage(Utils::PathString name, CaptureCallback captureCallback, AbortCallback abortCallback, - Utils::SmallString state = {}); + Utils::SmallString state = {}) override; void requestIcon(Utils::PathString name, CaptureCallback captureCallback, AbortCallback abortCallback, - Utils::SmallString state = {}); + Utils::SmallString state = {}) override; void clean(); void waitForFinished(); diff --git a/src/plugins/qmldesigner/designercore/include/imagecacheinterface.h b/src/plugins/qmldesigner/designercore/include/imagecacheinterface.h new file mode 100644 index 00000000000..640b717cc05 --- /dev/null +++ b/src/plugins/qmldesigner/designercore/include/imagecacheinterface.h @@ -0,0 +1,57 @@ +/**************************************************************************** +** +** Copyright (C) 2020 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 as published by the Free Software +** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +****************************************************************************/ + +#pragma once + +#include + +#include + +namespace QmlDesigner { + +class ImageCacheInterface +{ +public: + using CaptureCallback = std::function; + using AbortCallback = std::function; + + virtual void requestImage(Utils::PathString name, + CaptureCallback captureCallback, + AbortCallback abortCallback, + Utils::SmallString state = {}) + = 0; + virtual void requestIcon(Utils::PathString name, + CaptureCallback captureCallback, + AbortCallback abortCallback, + Utils::SmallString state = {}) + = 0; + + void clean(); + +protected: + ~ImageCacheInterface() = default; +}; + +} // namespace QmlDesigner diff --git a/src/plugins/qmldesigner/designercore/include/viewmanager.h b/src/plugins/qmldesigner/designercore/include/viewmanager.h index cad7d552219..a3d11685069 100644 --- a/src/plugins/qmldesigner/designercore/include/viewmanager.h +++ b/src/plugins/qmldesigner/designercore/include/viewmanager.h @@ -47,6 +47,7 @@ class Edit3DView; namespace Internal { class DesignModeWidget; } class ViewManagerData; +class ImageCache; class QMLDESIGNERCORE_EXPORT ViewManager { @@ -103,6 +104,8 @@ public: void disableStandardViews(); void enableStandardViews(); + ImageCache &imageCache(); + private: // functions Q_DISABLE_COPY(ViewManager) diff --git a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp index 3177e122d16..dd8190be8a2 100644 --- a/src/plugins/qmldesigner/designercore/model/viewmanager.cpp +++ b/src/plugins/qmldesigner/designercore/model/viewmanager.cpp @@ -453,6 +453,11 @@ void ViewManager::enableStandardViews() attachViewsExceptRewriterAndComponetView(); } +ImageCache &ViewManager::imageCache() +{ + return d->itemLibraryView.imageCache(); +} + } // namespace QmlDesigner #endif //QMLDESIGNER_TEST diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp index c14599c204d..7b078f10f59 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.cpp +++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp @@ -561,6 +561,11 @@ void QmlDesignerPlugin::emitUsageStatisticsContextAction(const QString &identifi emitUsageStatistics(Constants::EVENT_ACTION_EXECUTED + identifier); } +ImageCache &QmlDesignerPlugin::imageCache() +{ + return m_instance->d->viewManager.imageCache(); +} + QmlDesignerPlugin *QmlDesignerPlugin::instance() { return m_instance; diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h index f5a8242ae74..721ab84b100 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.h +++ b/src/plugins/qmldesigner/qmldesignerplugin.h @@ -42,6 +42,7 @@ namespace Core { namespace QmlDesigner { class QmlDesignerPluginPrivate; +class ImageCache; namespace Internal { class DesignModeWidget; } @@ -85,6 +86,8 @@ public: static void emitUsageStatistics(const QString &identifier); static void emitUsageStatisticsContextAction(const QString &identifier); + static ImageCache &imageCache(); + signals: void usageStatisticsNotifier(const QString &identifier); diff --git a/src/plugins/qmldesigner/qmldesignerplugin.qbs b/src/plugins/qmldesigner/qmldesignerplugin.qbs index a0c919b91b3..1463b169457 100644 --- a/src/plugins/qmldesigner/qmldesignerplugin.qbs +++ b/src/plugins/qmldesigner/qmldesignerplugin.qbs @@ -413,6 +413,7 @@ Project { "pluginmanager/widgetpluginpath.cpp", "pluginmanager/widgetpluginpath.h", "include/imagecache.h", + "include/imagecacheinterface.h", "imagecache/imagecachecollector.cpp", "imagecache/imagecachecollector.h", "imagecache/imagecache.cpp", diff --git a/src/plugins/qmldesigner/qmldesignerunittestfiles.pri b/src/plugins/qmldesigner/qmldesignerunittestfiles.pri index b5ae93f2f1c..e729bd10cbd 100644 --- a/src/plugins/qmldesigner/qmldesignerunittestfiles.pri +++ b/src/plugins/qmldesigner/qmldesignerunittestfiles.pri @@ -43,6 +43,7 @@ HEADERS += \ $$PWD/designercore/imagecache/imagecachegeneratorinterface.h \ $$PWD/designercore/imagecache/timestampproviderinterface.h \ $$PWD/designercore/include/imagecache.h \ + $$PWD/designercore/include/imagecacheinterface.h \ $$PWD/designercore/include/modelnode.h \ $$PWD/designercore/include/model.h \ $$PWD/../../../share/qtcreator/qml/qmlpuppet/interfaces/commondefines.h \ diff --git a/tests/unit/unittest/CMakeLists.txt b/tests/unit/unittest/CMakeLists.txt index a56cc0e27a0..e28079d40b8 100644 --- a/tests/unit/unittest/CMakeLists.txt +++ b/tests/unit/unittest/CMakeLists.txt @@ -397,6 +397,7 @@ extend_qtc_test(unittest model/variantproperty.cpp include/variantproperty.h rewritertransaction.cpp rewritertransaction.h imagecache/imagecache.cpp include/imagecache.h + include/imagecacheinterface.h imagecache/imagecachecollectorinterface.h imagecache/imagecachegenerator.cpp imagecache/imagecachegenerator.h imagecache/imagecachegeneratorinterface.h