From ef87889b638aa4b24589766e4cc0ff2a6c23e714 Mon Sep 17 00:00:00 2001 From: Tim Jenssen Date: Wed, 11 Jun 2014 13:44:04 +0200 Subject: [PATCH] QmlDesigner: add reload feature to item library view Change-Id: Ib71dc235abd059056063c5d9b9072c8bdc932762 Reviewed-by: Thomas Hartmann --- .../itemLibraryQmlSources}/ItemsView.qml | 0 .../itemLibraryQmlSources}/ItemsViewStyle.qml | 0 .../itemLibraryQmlSources}/SectionView.qml | 0 .../itemLibraryQmlSources}/Selector.qml | 0 .../itemLibraryQmlSources}/SingleItemView.qml | 0 .../components/itemlibrary/itemlibrary.pri | 8 ---- .../components/itemlibrary/itemlibrary.qrc | 6 --- .../itemlibrary/itemlibrarywidget.cpp | 38 ++++++++++++++----- .../itemlibrary/itemlibrarywidget.h | 4 ++ 9 files changed, 33 insertions(+), 23 deletions(-) rename {src/plugins/qmldesigner/components/itemlibrary/qml => share/qtcreator/qmldesigner/itemLibraryQmlSources}/ItemsView.qml (100%) rename {src/plugins/qmldesigner/components/itemlibrary/qml => share/qtcreator/qmldesigner/itemLibraryQmlSources}/ItemsViewStyle.qml (100%) rename {src/plugins/qmldesigner/components/itemlibrary/qml => share/qtcreator/qmldesigner/itemLibraryQmlSources}/SectionView.qml (100%) rename {src/plugins/qmldesigner/components/itemlibrary/qml => share/qtcreator/qmldesigner/itemLibraryQmlSources}/Selector.qml (100%) rename {src/plugins/qmldesigner/components/itemlibrary/qml => share/qtcreator/qmldesigner/itemLibraryQmlSources}/SingleItemView.qml (100%) diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml similarity index 100% rename from src/plugins/qmldesigner/components/itemlibrary/qml/ItemsView.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsView.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsViewStyle.qml similarity index 100% rename from src/plugins/qmldesigner/components/itemlibrary/qml/ItemsViewStyle.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/ItemsViewStyle.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/SectionView.qml similarity index 100% rename from src/plugins/qmldesigner/components/itemlibrary/qml/SectionView.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/SectionView.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/Selector.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/Selector.qml similarity index 100% rename from src/plugins/qmldesigner/components/itemlibrary/qml/Selector.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/Selector.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/qml/SingleItemView.qml b/share/qtcreator/qmldesigner/itemLibraryQmlSources/SingleItemView.qml similarity index 100% rename from src/plugins/qmldesigner/components/itemlibrary/qml/SingleItemView.qml rename to share/qtcreator/qmldesigner/itemLibraryQmlSources/SingleItemView.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.pri b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.pri index ce02c9c8deb..b15f88dc2d7 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.pri +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.pri @@ -22,11 +22,3 @@ SOURCES += itemlibraryview.cpp \ itemlibrarysection.cpp RESOURCES += itemlibrary.qrc - -OTHER_FILES += \ - qml/Selector.qml \ - qml/SectionView.qml \ - qml/Scrollbar.qml \ - qml/ItemView.qml \ - qml/ItemsViewStyle.qml \ - qml/ItemsView.qml diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc index 1529745db18..c9899d2ac5f 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrary.qrc @@ -1,11 +1,5 @@ - qml/ItemsView.qml - qml/ItemsViewStyle.qml - qml/SectionView.qml - qml/SingleItemView.qml - qml/Selector.qml - images/item-default-icon.png images/item-invalid-icon.png diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp index 00dba5f69cd..32933e9aabf 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.cpp @@ -30,7 +30,9 @@ #include "itemlibrarywidget.h" #include +#include #include +#include #include "itemlibrarymodel.h" #include "itemlibraryimageprovider.h" #include @@ -48,7 +50,7 @@ #include #include #include - +#include #include enum { @@ -87,14 +89,6 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : highlightColor.setHsvF(highlightColor.hsvHueF(),0.1 + highlightColor.saturationF()*2.0, highlightColor.valueF()); m_itemsView->rootContext()->setContextProperty(QStringLiteral("highlightColor"), highlightColor); - // loading the qml has to come after all needed context properties are set - m_itemsView->setSource(QUrl("qrc:/ItemLibrary/qml/ItemsView.qml")); - - QQuickItem *rootItem = qobject_cast(m_itemsView->rootObject()); - connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int))); - connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDropDelayed(int))); - connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant))); - connect(this, SIGNAL(resetItemsView()), rootItem, SLOT(resetView())); /* create Resources view and its model */ m_resourcesFileSystemModel = new QFileSystemModel(this); @@ -155,6 +149,12 @@ ItemLibraryWidget::ItemLibraryWidget(QWidget *parent) : /* style sheets */ setStyleSheet(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))); m_resourcesView->setStyleSheet(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css"))); + + m_qmlSourceUpdateShortcut = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_F5), this); + connect(m_qmlSourceUpdateShortcut, SIGNAL(activated()), this, SLOT(reloadQmlSource())); + + // init the first load of the QML UI elements + reloadQmlSource(); } void ItemLibraryWidget::setItemLibraryInfo(ItemLibraryInfo *itemLibraryInfo) @@ -295,6 +295,26 @@ void ItemLibraryWidget::setCurrentIndexOfStackedWidget(int index) m_stackedWidget->setCurrentIndex(index); } +QString ItemLibraryWidget::qmlSourcesPath() +{ + return Core::ICore::resourcePath() + QStringLiteral("/qmldesigner/itemLibraryQmlSources"); +} + +void ItemLibraryWidget::reloadQmlSource() +{ + QString itemLibraryQmlFilePath = qmlSourcesPath() + QStringLiteral("/ItemsView.qml"); + QTC_ASSERT(QFileInfo::exists(itemLibraryQmlFilePath), return); + m_itemsView->engine()->clearComponentCache(); + m_itemsView->setSource(QUrl::fromLocalFile(itemLibraryQmlFilePath)); + + QQuickItem *rootItem = qobject_cast(m_itemsView->rootObject()); + connect(rootItem, SIGNAL(itemSelected(int)), this, SLOT(showItemInfo(int))); + connect(rootItem, SIGNAL(itemDragged(int)), this, SLOT(startDragAndDropDelayed(int))); + connect(this, SIGNAL(scrollItemsView(QVariant)), rootItem, SLOT(scrollView(QVariant))); + connect(this, SIGNAL(resetItemsView()), rootItem, SLOT(resetView())); + +} + void ItemLibraryWidget::setImportFilter(FilterChangeFlag flag) { return; diff --git a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h index 53d13fa0242..5fe31d4bfa1 100644 --- a/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h +++ b/src/plugins/qmldesigner/components/itemlibrary/itemlibrarywidget.h @@ -43,6 +43,7 @@ QT_BEGIN_NAMESPACE class QFileSystemModel; class QStackedWidget; +class QShortcut; QT_END_NAMESPACE namespace QmlDesigner { @@ -87,6 +88,7 @@ public: void setImportsWidget(QWidget *importsWidget); + static QString qmlSourcesPath(); public slots: void setSearchFilter(const QString &searchFilter); void updateModel(); @@ -119,6 +121,7 @@ signals: private slots: void setCurrentIndexOfStackedWidget(int index); + void reloadQmlSource(); private: QSize m_itemIconSize; @@ -135,6 +138,7 @@ private: QPointer m_filterLineEdit; QScopedPointer m_itemsView; QScopedPointer m_resourcesView; + QShortcut *m_qmlSourceUpdateShortcut; QPointer m_model; FilterChangeFlag m_filterFlag;