diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/addimport.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/AddImport.qml similarity index 97% rename from src/plugins/qmldesigner/components/itemlibrary/qml/addimport.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/AddImport.qml index e73623bd7ee..53712827700 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/qml/addimport.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/AddImport.qml @@ -30,8 +30,6 @@ import QtQuickDesignerTheme 1.0 Column { id: root - signal addImport(int index) - Text { id: header text: qsTr("Select a Module to Add") @@ -78,7 +76,7 @@ Column { id: mouseArea anchors.fill: parent hoverEnabled: true - onClicked: addImport(index) + onClicked: rootView.handleAddImport(index) enabled: !isSeparator } } diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/libraryheader.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/LibraryHeader.qml similarity index 74% rename from src/plugins/qmldesigner/components/itemlibrary/qml/libraryheader.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/LibraryHeader.qml index 18587c07ff4..12052d2a3cb 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/qml/libraryheader.qml +++ b/share/qtcreator/qmldesigner/itemLibraryQmlSources/LibraryHeader.qml @@ -26,17 +26,14 @@ import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuickDesignerTheme 1.0 +import StudioControls 1.0 as StudioControls +import StudioTheme 1.0 as StudioTheme Item { id: root width: 200 height: 75 - signal tabChanged(int index) - signal filterChanged(string filterText) - signal addModuleClicked() - signal addAssetClicked() - function setTab(index) { tabBar.setCurrentIndex(index); @@ -86,26 +83,30 @@ Item { anchors.bottom: parent.bottom anchors.rightMargin: 2 anchors.bottomMargin: 2 - width: img.width + 10 - height: img.height + 10 + width: 25 + height: 25 color: mouseArea.containsMouse ? "#353535" : "#262626" ToolTip.delay: 500 ToolTip.text: modelData.addToolTip ToolTip.visible: mouseArea.containsMouse - Image { - id: img - source: tabBar.currentIndex === index ? "../images/add.png" - : "../images/add_unselected.png" + Label { // + sign + text: StudioTheme.Constants.plus + font.family: StudioTheme.Constants.iconFont.family + font.pixelSize: StudioTheme.Values.myIconFontSize + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter anchors.centerIn: parent + color: tabBar.currentIndex === index ? "#0094ce" : "#a8a8a8" } MouseArea { id: mouseArea anchors.fill: parent hoverEnabled: true - onClicked: index == 0 ? addModuleClicked() : addAssetClicked() + onClicked: index == 0 ? rootView.handleAddModule() + : rootView.handleAddAsset() } } @@ -117,7 +118,7 @@ Item { } } - onClicked: tabChanged(index) + onClicked: rootView.handleTabChanged(index); } } } @@ -138,16 +139,30 @@ Item { anchors.rightMargin: 5 selectByMouse: true - onTextChanged: filterChanged(text) + onTextChanged: rootView.handleSearchfilterChanged(text) - Image { // clear text button - source: "../images/x.png" + Rectangle { // x button + width: 15 + height: 15 anchors.right: parent.right anchors.rightMargin: 5 anchors.verticalCenter: parent.verticalCenter visible: searchFilterText.text !== "" + color: xMouseArea.containsMouse ? "#353535" : "transparent" + + Label { + text: StudioTheme.Constants.closeCross + font.family: StudioTheme.Constants.iconFont.family + font.pixelSize: StudioTheme.Values.myIconFontSize + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + anchors.centerIn: parent + color: "#dadada" + } MouseArea { + id: xMouseArea + hoverEnabled: true anchors.fill: parent onClicked: searchFilterText.text = "" } diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/add.png b/src/plugins/qmldesigner/components/itemlibrary/images/add.png deleted file mode 100644 index 1b9edadee58..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/add.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/add@2x.png b/src/plugins/qmldesigner/components/itemlibrary/images/add@2x.png deleted file mode 100644 index ba352300c65..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/add@2x.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected.png b/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected.png deleted file mode 100644 index 8e237ce4a12..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected@2x.png b/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected@2x.png deleted file mode 100644 index 8be6882f3d9..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/add_unselected@2x.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/down.png b/src/plugins/qmldesigner/components/itemlibrary/images/down.png deleted file mode 100644 index d2772546bc8..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/down.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/down@2x.png b/src/plugins/qmldesigner/components/itemlibrary/images/down@2x.png deleted file mode 100644 index a635f09e554..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/down@2x.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon.png b/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon.png deleted file mode 100644 index df8abc4b794..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon@2x.png b/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon@2x.png deleted file mode 100644 index a5adb189877..00000000000 Binary files a/src/plugins/qmldesigner/components/itemlibrary/images/tab_icon@2x.png and /dev/null differ diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc index 69ef5b2c1f8..197dd87655b 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc @@ -29,17 +29,7 @@ images/asset_sound_192.png images/asset_sound_256.png images/asset_sound_384.png - images/tab_icon.png - images/tab_icon@2x.png images/x.png images/x@2x.png - images/add.png - images/add@2x.png - images/add_unselected.png - images/add_unselected@2x.png - images/down.png - images/down@2x.png - qml/libraryheader.qml - qml/addimport.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 7ce542de024..8571f7a7d4b 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -141,27 +141,19 @@ ItemLibraryWidget::ItemLibraryWidget(AsynchronousImageCache &imageCache, // create header widget m_headerWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); - m_headerWidget->setClearColor(Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); Theme::setupTheme(m_headerWidget->engine()); - m_headerWidget->setSource(QUrl("qrc:/ItemLibrary/qml/libraryheader.qml")); - QObject::connect(m_headerWidget->rootObject(), SIGNAL(tabChanged(int)), this, - SLOT(handleTabChanged(int))); - QObject::connect(m_headerWidget->rootObject(), SIGNAL(filterChanged(QString)), this, - SLOT(handleFilterChanged(QString))); - QObject::connect(m_headerWidget->rootObject(), SIGNAL(addModuleClicked()), this, - SLOT(handleAddModule())); - QObject::connect(m_headerWidget->rootObject(), SIGNAL(addAssetClicked()), this, - SLOT(handleAddAsset())); + m_headerWidget->engine()->addImportPath(propertyEditorResourcesPath() + "/imports"); + m_headerWidget->setClearColor(Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); + m_headerWidget->rootContext()->setContextProperty("rootView", QVariant::fromValue(this)); // create add imports widget m_addImportWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); m_addImportWidget->setClearColor(Theme::getColor(Theme::Color::QmlDesigner_BackgroundColorDarkAlternate)); Theme::setupTheme(m_addImportWidget->engine()); - m_addImportWidget->setSource(QUrl("qrc:/ItemLibrary/qml/addimport.qml")); - m_addImportWidget->rootContext()->setContextProperty( - "addImportModel", QVariant::fromValue(m_itemLibraryAddImportModel.data())); - QObject::connect(m_addImportWidget->rootObject(), SIGNAL(addImport(int)), this, - SLOT(handleAddImport(int))); + m_addImportWidget->rootContext()->setContextProperties({ + {"addImportModel", QVariant::fromValue(m_itemLibraryAddImportModel.data())}, + {"rootView", QVariant::fromValue(this)}, + }); // set up Item Library view and model m_itemViewQuickWidget->setResizeMode(QQuickWidget::SizeRootObjectToView); @@ -270,7 +262,7 @@ QList ItemLibraryWidget::createToolBarWidgets() return buttons; } -void ItemLibraryWidget::handleFilterChanged(const QString &filterText) +void ItemLibraryWidget::handleSearchfilterChanged(const QString &filterText) { m_filterText = filterText; @@ -339,11 +331,20 @@ void ItemLibraryWidget::clearSearchFilter() void ItemLibraryWidget::reloadQmlSource() { - QString itemLibraryQmlFilePath = qmlSourcesPath() + QStringLiteral("/ItemsView.qml"); + const QString libraryHeaderQmlPath = qmlSourcesPath() + "/LibraryHeader.qml"; + QTC_ASSERT(QFileInfo::exists(libraryHeaderQmlPath), return); + m_headerWidget->engine()->clearComponentCache(); + m_headerWidget->setSource(QUrl::fromLocalFile(libraryHeaderQmlPath)); - QTC_ASSERT(QFileInfo::exists(itemLibraryQmlFilePath), return); + const QString addImportQmlPath = qmlSourcesPath() + "/AddImport.qml"; + QTC_ASSERT(QFileInfo::exists(addImportQmlPath), return); + m_addImportWidget->engine()->clearComponentCache(); + m_addImportWidget->setSource(QUrl::fromLocalFile(addImportQmlPath)); + + const QString itemLibraryQmlPath = qmlSourcesPath() + "/ItemsView.qml"; + QTC_ASSERT(QFileInfo::exists(itemLibraryQmlPath), return); m_itemViewQuickWidget->engine()->clearComponentCache(); - m_itemViewQuickWidget->setSource(QUrl::fromLocalFile(itemLibraryQmlFilePath)); + m_itemViewQuickWidget->setSource(QUrl::fromLocalFile(itemLibraryQmlPath)); } void ItemLibraryWidget::updateModel() diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index 0b78c485e58..1a34c7e96a1 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -91,6 +91,11 @@ public: Q_INVOKABLE void startDragAndDrop(const QVariant &itemLibEntry, const QPointF &mousePos); Q_INVOKABLE void removeImport(const QString &importUrl); Q_INVOKABLE void addImportForItem(const QVariant &entry); + Q_INVOKABLE void handleTabChanged(int index); + Q_INVOKABLE void handleAddModule(); + Q_INVOKABLE void handleAddAsset(); + Q_INVOKABLE void handleSearchfilterChanged(const QString &filterText); + Q_INVOKABLE void handleAddImport(int index); signals: void itemActivated(const QString& itemName); @@ -130,13 +135,6 @@ private: bool m_updateRetry = false; QString m_filterText; QPoint m_dragStartPoint; - -private slots: - void handleTabChanged(int index); - void handleFilterChanged(const QString &filterText); - void handleAddModule(); - void handleAddAsset(); - void handleAddImport(int index); }; -} +} // namespace QmlDesigner