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