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 {
|
||||
|
||||
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)
|
||||
|
@@ -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
|
||||
|
@@ -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()
|
||||
|
@@ -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);
|
||||
|
||||
|
@@ -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*/)
|
||||
{
|
||||
}
|
||||
|
@@ -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())
|
||||
|
@@ -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
|
||||
|
Reference in New Issue
Block a user