forked from qt-creator/qt-creator
QmlDesigner: Fix import list doesn't show all imports issue
Also fix updating the state of 'x' button beside imports correctly. Task-number: QDS-1592 Change-Id: I15af390effff0bfa71f3b8b1e450e36c9dca00fb Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -31,10 +31,8 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
ImportManagerView::ImportManagerView(QObject *parent) :
|
ImportManagerView::ImportManagerView(QObject *parent)
|
||||||
AbstractView(parent),
|
: AbstractView(parent)
|
||||||
m_importsWidget(nullptr)
|
|
||||||
|
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,25 +79,22 @@ void ImportManagerView::modelAboutToBeDetached(Model *model)
|
|||||||
AbstractView::modelAboutToBeDetached(model);
|
AbstractView::modelAboutToBeDetached(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImportManagerView::nodeCreated(const ModelNode &/*createdNode*/)
|
|
||||||
{
|
|
||||||
if (m_importsWidget)
|
|
||||||
m_importsWidget->setUsedImports(model()->usedImports());
|
|
||||||
}
|
|
||||||
|
|
||||||
void ImportManagerView::nodeAboutToBeRemoved(const ModelNode &/*removedNode*/)
|
|
||||||
{
|
|
||||||
if (m_importsWidget)
|
|
||||||
m_importsWidget->setUsedImports(model()->usedImports());
|
|
||||||
}
|
|
||||||
|
|
||||||
void ImportManagerView::importsChanged(const QList<Import> &/*addedImports*/, const QList<Import> &/*removedImports*/)
|
void ImportManagerView::importsChanged(const QList<Import> &/*addedImports*/, const QList<Import> &/*removedImports*/)
|
||||||
{
|
{
|
||||||
if (m_importsWidget) {
|
if (m_importsWidget)
|
||||||
m_importsWidget->setImports(model()->imports());
|
m_importsWidget->setImports(model()->imports());
|
||||||
m_importsWidget->setPossibleImports(model()->possibleImports());
|
|
||||||
m_importsWidget->setUsedImports(model()->usedImports());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ImportManagerView::possibleImportsChanged(const QList<Import> &/*possibleImports*/)
|
||||||
|
{
|
||||||
|
if (m_importsWidget)
|
||||||
|
m_importsWidget->setPossibleImports(model()->possibleImports());
|
||||||
|
}
|
||||||
|
|
||||||
|
void ImportManagerView::usedImportsChanged(const QList<Import> &/*usedImports*/)
|
||||||
|
{
|
||||||
|
if (m_importsWidget)
|
||||||
|
m_importsWidget->setUsedImports(model()->usedImports());
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImportManagerView::removeImport(const Import &import)
|
void ImportManagerView::removeImport(const Import &import)
|
||||||
|
@@ -35,6 +35,7 @@ class ImportsWidget;
|
|||||||
class ImportManagerView : public AbstractView
|
class ImportManagerView : public AbstractView
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit ImportManagerView(QObject *parent = nullptr);
|
explicit ImportManagerView(QObject *parent = nullptr);
|
||||||
~ImportManagerView() override;
|
~ImportManagerView() override;
|
||||||
@@ -45,17 +46,16 @@ public:
|
|||||||
void modelAttached(Model *model) override;
|
void modelAttached(Model *model) override;
|
||||||
void modelAboutToBeDetached(Model *model) override;
|
void modelAboutToBeDetached(Model *model) override;
|
||||||
|
|
||||||
void nodeCreated(const ModelNode &createdNode) override;
|
|
||||||
void nodeAboutToBeRemoved(const ModelNode &removedNode) override;
|
|
||||||
|
|
||||||
void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports) override;
|
void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports) override;
|
||||||
|
void possibleImportsChanged(const QList<Import> &possibleImports) override;
|
||||||
|
void usedImportsChanged(const QList<Import> &usedImports) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void removeImport(const Import &import);
|
void removeImport(const Import &import);
|
||||||
void addImport(const Import &import);
|
void addImport(const Import &import);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
QPointer<ImportsWidget> m_importsWidget;
|
QPointer<ImportsWidget> m_importsWidget = nullptr;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace QmlDesigner
|
} // namespace QmlDesigner
|
||||||
|
@@ -101,12 +101,13 @@ void ImportsWidget::setPossibleImports(QList<Import> possibleImports)
|
|||||||
|
|
||||||
const QStringList mcuWhiteList = {"QtQuick", "QtQuick.Controls"};
|
const QStringList mcuWhiteList = {"QtQuick", "QtQuick.Controls"};
|
||||||
|
|
||||||
if (isQtForMCUs)
|
if (isQtForMCUs) {
|
||||||
filteredImports = Utils::filtered(possibleImports, [mcuWhiteList](const Import &import) {
|
filteredImports = Utils::filtered(possibleImports, [mcuWhiteList](const Import &import) {
|
||||||
return mcuWhiteList.contains(import.url()) || !import.url().startsWith("Qt");
|
return mcuWhiteList.contains(import.url()) || !import.url().startsWith("Qt");
|
||||||
});
|
});
|
||||||
else
|
} else {
|
||||||
filteredImports = possibleImports;
|
filteredImports = possibleImports;
|
||||||
|
}
|
||||||
|
|
||||||
for (const Import &possibleImport : filteredImports) {
|
for (const Import &possibleImport : filteredImports) {
|
||||||
if (!isImportAlreadyUsed(possibleImport, m_importLabels))
|
if (!isImportAlreadyUsed(possibleImport, m_importLabels))
|
||||||
@@ -123,7 +124,6 @@ void ImportsWidget::setUsedImports(const QList<Import> &usedImports)
|
|||||||
{
|
{
|
||||||
foreach (ImportLabel *importLabel, m_importLabels)
|
foreach (ImportLabel *importLabel, m_importLabels)
|
||||||
importLabel->setReadOnly(usedImports.contains(importLabel->import()));
|
importLabel->setReadOnly(usedImports.contains(importLabel->import()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImportsWidget::removeUsedImports()
|
void ImportsWidget::removeUsedImports()
|
||||||
|
@@ -229,6 +229,8 @@ public:
|
|||||||
virtual void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex);
|
virtual void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex);
|
||||||
|
|
||||||
virtual void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
virtual void importsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
||||||
|
virtual void possibleImportsChanged(const QList<Import> &possibleImports);
|
||||||
|
virtual void usedImportsChanged(const QList<Import> &usedImports);
|
||||||
|
|
||||||
virtual void auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data);
|
virtual void auxiliaryDataChanged(const ModelNode &node, const PropertyName &name, const QVariant &data);
|
||||||
|
|
||||||
|
@@ -345,6 +345,14 @@ void AbstractView::importsChanged(const QList<Import> &/*addedImports*/, const Q
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void AbstractView::possibleImportsChanged(const QList<Import> &/*possibleImports*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void AbstractView::usedImportsChanged(const QList<Import> &/*usedImports*/)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
void AbstractView::auxiliaryDataChanged(const ModelNode &/*node*/, const PropertyName &/*name*/, const QVariant &/*data*/)
|
void AbstractView::auxiliaryDataChanged(const ModelNode &/*node*/, const PropertyName &/*name*/, const QVariant &/*data*/)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
@@ -170,6 +170,22 @@ void ModelPrivate::notifyImportsChanged(const QList<Import> &addedImports, const
|
|||||||
resetModelByRewriter(description);
|
resetModelByRewriter(description);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModelPrivate::notifyPossibleImportsChanged(const QList<Import> &possibleImports)
|
||||||
|
{
|
||||||
|
for (const QPointer<AbstractView> &view : qAsConst(m_viewList)) {
|
||||||
|
Q_ASSERT(view != nullptr);
|
||||||
|
view->possibleImportsChanged(possibleImports);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelPrivate::notifyUsedImportsChanged(const QList<Import> &usedImports)
|
||||||
|
{
|
||||||
|
for (const QPointer<AbstractView> &view : qAsConst(m_viewList)) {
|
||||||
|
Q_ASSERT(view != nullptr);
|
||||||
|
view->usedImportsChanged(usedImports);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
QUrl ModelPrivate::fileUrl() const
|
QUrl ModelPrivate::fileUrl() const
|
||||||
{
|
{
|
||||||
return m_fileUrl;
|
return m_fileUrl;
|
||||||
@@ -1879,14 +1895,15 @@ void Model::changeImports(const QList<Import> &importsToBeAdded, const QList<Imp
|
|||||||
void Model::setPossibleImports(const QList<Import> &possibleImports)
|
void Model::setPossibleImports(const QList<Import> &possibleImports)
|
||||||
{
|
{
|
||||||
d->m_possibleImportList = possibleImports;
|
d->m_possibleImportList = possibleImports;
|
||||||
|
d->notifyPossibleImportsChanged(possibleImports);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Model::setUsedImports(const QList<Import> &usedImports)
|
void Model::setUsedImports(const QList<Import> &usedImports)
|
||||||
{
|
{
|
||||||
d->m_usedImportList = usedImports;
|
d->m_usedImportList = usedImports;
|
||||||
|
d->notifyUsedImportsChanged(usedImports);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static bool compareVersions(const QString &version1, const QString &version2, bool allowHigherVersion)
|
static bool compareVersions(const QString &version1, const QString &version2, bool allowHigherVersion)
|
||||||
{
|
{
|
||||||
if (version2.isEmpty())
|
if (version2.isEmpty())
|
||||||
|
@@ -185,6 +185,8 @@ public:
|
|||||||
void removeImport(const Import &import);
|
void removeImport(const Import &import);
|
||||||
void changeImports(const QList<Import> &importsToBeAdded, const QList<Import> &importToBeRemoved);
|
void changeImports(const QList<Import> &importsToBeAdded, const QList<Import> &importToBeRemoved);
|
||||||
void notifyImportsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
void notifyImportsChanged(const QList<Import> &addedImports, const QList<Import> &removedImports);
|
||||||
|
void notifyPossibleImportsChanged(const QList<Import> &possibleImports);
|
||||||
|
void notifyUsedImportsChanged(const QList<Import> &usedImportsChanged);
|
||||||
|
|
||||||
|
|
||||||
//node state property manipulation
|
//node state property manipulation
|
||||||
|
Reference in New Issue
Block a user