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:
Mahmoud Badri
2020-04-07 20:48:58 +03:00
parent c0ea5736f3
commit a6af0bb908
7 changed files with 51 additions and 27 deletions

View File

@@ -31,10 +31,8 @@
namespace QmlDesigner {
ImportManagerView::ImportManagerView(QObject *parent) :
AbstractView(parent),
m_importsWidget(nullptr)
ImportManagerView::ImportManagerView(QObject *parent)
: AbstractView(parent)
{
}
@@ -81,25 +79,22 @@ void ImportManagerView::modelAboutToBeDetached(Model *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*/)
{
if (m_importsWidget) {
if (m_importsWidget)
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)

View File

@@ -35,6 +35,7 @@ class ImportsWidget;
class ImportManagerView : public AbstractView
{
Q_OBJECT
public:
explicit ImportManagerView(QObject *parent = nullptr);
~ImportManagerView() override;
@@ -45,17 +46,16 @@ public:
void modelAttached(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 possibleImportsChanged(const QList<Import> &possibleImports) override;
void usedImportsChanged(const QList<Import> &usedImports) override;
private:
void removeImport(const Import &import);
void addImport(const Import &import);
private:
QPointer<ImportsWidget> m_importsWidget;
QPointer<ImportsWidget> m_importsWidget = nullptr;
};
} // namespace QmlDesigner

View File

@@ -101,12 +101,13 @@ void ImportsWidget::setPossibleImports(QList<Import> possibleImports)
const QStringList mcuWhiteList = {"QtQuick", "QtQuick.Controls"};
if (isQtForMCUs)
if (isQtForMCUs) {
filteredImports = Utils::filtered(possibleImports, [mcuWhiteList](const Import &import) {
return mcuWhiteList.contains(import.url()) || !import.url().startsWith("Qt");
});
else
} else {
filteredImports = possibleImports;
}
for (const Import &possibleImport : filteredImports) {
if (!isImportAlreadyUsed(possibleImport, m_importLabels))
@@ -123,7 +124,6 @@ void ImportsWidget::setUsedImports(const QList<Import> &usedImports)
{
foreach (ImportLabel *importLabel, m_importLabels)
importLabel->setReadOnly(usedImports.contains(importLabel->import()));
}
void ImportsWidget::removeUsedImports()

View File

@@ -229,6 +229,8 @@ public:
virtual void nodeOrderChanged(const NodeListProperty &listProperty, const ModelNode &movedNode, int oldIndex);
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);

View File

@@ -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*/)
{
}

View File

@@ -170,6 +170,22 @@ void ModelPrivate::notifyImportsChanged(const QList<Import> &addedImports, const
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
{
return m_fileUrl;
@@ -1879,14 +1895,15 @@ void Model::changeImports(const QList<Import> &importsToBeAdded, const QList<Imp
void Model::setPossibleImports(const QList<Import> &possibleImports)
{
d->m_possibleImportList = possibleImports;
d->notifyPossibleImportsChanged(possibleImports);
}
void Model::setUsedImports(const QList<Import> &usedImports)
{
d->m_usedImportList = usedImports;
d->notifyUsedImportsChanged(usedImports);
}
static bool compareVersions(const QString &version1, const QString &version2, bool allowHigherVersion)
{
if (version2.isEmpty())

View File

@@ -185,6 +185,8 @@ public:
void removeImport(const Import &import);
void changeImports(const QList<Import> &importsToBeAdded, const QList<Import> &importToBeRemoved);
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