aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp')
-rw-r--r--src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp64
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