diff options
Diffstat (limited to 'src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp')
-rw-r--r-- | src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp | 64 |
1 files changed, 39 insertions, 25 deletions
diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 45e5601135..10a253f5b6 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -27,19 +27,21 @@ #include "customfilesystemmodel.h" #include "itemlibraryassetimportdialog.h" +#include "itemlibraryiconimageprovider.h" #include <theme.h> -#include <itemlibrarymodel.h> +#include <designeractionmanager.h> +#include <designermcumanager.h> #include <itemlibraryimageprovider.h> #include <itemlibraryinfo.h> +#include <itemlibrarymodel.h> #include <metainfo.h> #include <model.h> +#include <previewtooltip/previewtooltipbackend.h> #include <rewritingexception.h> -#include <qmldesignerplugin.h> #include <qmldesignerconstants.h> -#include <designeractionmanager.h> -#include <designermcumanager.h> +#include <qmldesignerplugin.h> #include <utils/algorithm.h> #include <utils/flowlayout.h> @@ -81,14 +83,14 @@ static QString propertyEditorResourcesPath() { return Core::ICore::resourcePath() + QStringLiteral("/qmldesigner/propertyEditorQmlSources"); } -ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : - QFrame(parent), - m_itemIconSize(24, 24), - m_itemViewQuickWidget(new QQuickWidget(this)), - m_resourcesView(new ItemLibraryResourceView(this)), - m_importTagsWidget(new QWidget(this)), - m_addResourcesWidget(new QWidget(this)), - m_filterFlag(QtBasic) +ItemLibraryWidget::ItemLibraryWidget(ImageCache &imageCache) + : m_itemIconSize(24, 24) + , m_itemViewQuickWidget(new QQuickWidget(this)) + , m_resourcesView(new ItemLibraryResourceView(this)) + , m_importTagsWidget(new QWidget(this)) + , m_addResourcesWidget(new QWidget(this)) + , m_imageCache{imageCache} + , m_filterFlag(QtBasic) { m_compressionTimer.setInterval(200); m_compressionTimer.setSingleShot(true); @@ -102,16 +104,20 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : m_itemViewQuickWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); m_itemLibraryModel = new ItemLibraryModel(this); - m_itemViewQuickWidget->rootContext()->setContextProperties( - QVector<QQmlContext::PropertyPair>{ - {{"itemLibraryModel"}, QVariant::fromValue(m_itemLibraryModel.data())}, - {{"itemLibraryIconWidth"}, m_itemIconSize.width()}, - {{"itemLibraryIconHeight"}, m_itemIconSize.height()}, - {{"rootView"}, QVariant::fromValue(this)}, - {{"highlightColor"}, Utils::StyleHelper::notTooBrightHighlightColor()} - } - ); - m_itemViewQuickWidget->setClearColor(Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); + m_itemViewQuickWidget->rootContext()->setContextProperties(QVector<QQmlContext::PropertyPair>{ + {{"itemLibraryModel"}, QVariant::fromValue(m_itemLibraryModel.data())}, + {{"itemLibraryIconWidth"}, m_itemIconSize.width()}, + {{"itemLibraryIconHeight"}, m_itemIconSize.height()}, + {{"rootView"}, QVariant::fromValue(this)}, + {{"highlightColor"}, Utils::StyleHelper::notTooBrightHighlightColor()}, + }); + + m_previewTooltipBackend = std::make_unique<PreviewTooltipBackend>(m_imageCache); + m_itemViewQuickWidget->rootContext()->setContextProperty("tooltipBackend", + m_previewTooltipBackend.get()); + + m_itemViewQuickWidget->setClearColor( + Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); /* create Resources view and its model */ m_resourcesFileSystemModel = new CustomFileSystemModel(this); @@ -119,6 +125,7 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : /* create image provider for loading item icons */ m_itemViewQuickWidget->engine()->addImageProvider(QStringLiteral("qmldesigner_itemlibrary"), new Internal::ItemLibraryImageProvider); + Theme::setupTheme(m_itemViewQuickWidget->engine()); /* other widgets */ @@ -243,6 +250,8 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : reloadQmlSource(); } +ItemLibraryWidget::~ItemLibraryWidget() = default; + void ItemLibraryWidget::setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo) { if (m_itemLibraryInfo.data() == itemLibraryInfo) @@ -306,9 +315,14 @@ void ItemLibraryWidget::delayedUpdateModel() void ItemLibraryWidget::setModel(Model *model) { + m_itemViewQuickWidget->engine()->removeImageProvider("itemlibrary_preview"); m_model = model; if (!model) return; + + m_itemViewQuickWidget->engine()->addImageProvider("itemlibrary_preview", + new ItemLibraryIconImageProvider{m_imageCache}); + setItemLibraryInfo(model->metaInfo().itemLibraryInfo()); } @@ -318,7 +332,8 @@ void ItemLibraryWidget::setCurrentIndexOfStackedWidget(int index) m_filterLineEdit->setVisible(false); m_importTagsWidget->setVisible(true); m_addResourcesWidget->setVisible(false); - } if (index == 1) { + } + if (index == 1) { m_filterLineEdit->setVisible(true); m_importTagsWidget->setVisible(false); m_addResourcesWidget->setVisible(true); @@ -564,5 +579,4 @@ void ItemLibraryWidget::addResources() } } } - -} +} // namespace QmlDesigner |