forked from qt-creator/qt-creator
QmlDesigner: Add hints for visibility in library and navigator
Change-Id: If5d3a4c34a0010cc5a826296aa428a5915142659 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -30,6 +30,7 @@
|
|||||||
#include "itemlibrarysection.h"
|
#include "itemlibrarysection.h"
|
||||||
|
|
||||||
#include <model.h>
|
#include <model.h>
|
||||||
|
#include <nodehints.h>
|
||||||
#include <nodemetainfo.h>
|
#include <nodemetainfo.h>
|
||||||
|
|
||||||
#include <utils/algorithm.h>
|
#include <utils/algorithm.h>
|
||||||
@@ -184,8 +185,10 @@ void ItemLibraryModel::update(ItemLibraryInfo *itemLibraryInfo, Model *model)
|
|||||||
qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName);
|
qDebug() << Utils::transform(metaInfo.superClasses(), &NodeMetaInfo::typeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool forceVisiblity = valid && NodeHints::fromItemLibraryEntry(entry).visibleInLibrary();
|
||||||
|
|
||||||
if (valid
|
if (valid
|
||||||
&& isItem //We can change if the navigator does support pure QObjects
|
&& (isItem || forceVisiblity) //We can change if the navigator does support pure QObjects
|
||||||
&& (entry.requiredImport().isEmpty()
|
&& (entry.requiredImport().isEmpty()
|
||||||
|| model->hasImport(entryToImport(entry), true, true))) {
|
|| model->hasImport(entryToImport(entry), true, true))) {
|
||||||
QString itemSectionName = entry.category();
|
QString itemSectionName = entry.category();
|
||||||
|
@@ -252,7 +252,7 @@ QList<ModelNode> filteredList(const NodeListProperty &property, bool filter)
|
|||||||
return property.toModelNodeList();
|
return property.toModelNodeList();
|
||||||
|
|
||||||
return Utils::filtered(property.toModelNodeList(), [] (const ModelNode &arg) {
|
return Utils::filtered(property.toModelNodeList(), [] (const ModelNode &arg) {
|
||||||
return QmlItemNode::isValidQmlItemNode(arg);
|
return QmlItemNode::isValidQmlItemNode(arg) || NodeHints::fromModelNode(arg).visibleInNavigator();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -48,6 +48,7 @@
|
|||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QHeaderView>
|
#include <QHeaderView>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
|
||||||
static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos)
|
static inline void setScenePos(const QmlDesigner::ModelNode &modelNode,const QPointF &pos)
|
||||||
@@ -147,15 +148,21 @@ void NavigatorView::modelAttached(Model *model)
|
|||||||
{
|
{
|
||||||
AbstractView::modelAttached(model);
|
AbstractView::modelAttached(model);
|
||||||
|
|
||||||
m_currentModelInterface->setFilter(
|
|
||||||
DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
|
|
||||||
|
|
||||||
QTreeView *treeView = treeWidget();
|
QTreeView *treeView = treeWidget();
|
||||||
treeView->expandAll();
|
|
||||||
|
|
||||||
treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
treeView->header()->setSectionResizeMode(0, QHeaderView::Stretch);
|
||||||
treeView->header()->resizeSection(1,26);
|
treeView->header()->resizeSection(1,26);
|
||||||
treeView->setIndentation(20);
|
treeView->setIndentation(20);
|
||||||
|
|
||||||
|
m_currentModelInterface->setFilter(false);
|
||||||
|
|
||||||
|
|
||||||
|
QTimer::singleShot(0, this, [this, treeView]() {
|
||||||
|
m_currentModelInterface->setFilter(
|
||||||
|
DesignerSettings::getValue(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS).toBool());
|
||||||
|
treeView->expandAll();
|
||||||
|
});
|
||||||
|
|
||||||
#ifdef _LOCK_ITEMS_
|
#ifdef _LOCK_ITEMS_
|
||||||
treeView->header()->resizeSection(2,20);
|
treeView->header()->resizeSection(2,20);
|
||||||
#endif
|
#endif
|
||||||
|
@@ -65,6 +65,8 @@ public:
|
|||||||
bool canBeReparentedTo(const ModelNode &potenialParent);
|
bool canBeReparentedTo(const ModelNode &potenialParent);
|
||||||
QString indexPropertyForStackedContainer() const;
|
QString indexPropertyForStackedContainer() const;
|
||||||
bool takesOverRenderingOfChildren() const;
|
bool takesOverRenderingOfChildren() const;
|
||||||
|
bool visibleInNavigator() const;
|
||||||
|
bool visibleInLibrary() const;
|
||||||
|
|
||||||
QHash<QString, QString> hints() const;
|
QHash<QString, QString> hints() const;
|
||||||
static NodeHints fromModelNode(const ModelNode &modelNode);
|
static NodeHints fromModelNode(const ModelNode &modelNode);
|
||||||
|
@@ -201,6 +201,19 @@ bool NodeHints::takesOverRenderingOfChildren() const
|
|||||||
return evaluateBooleanExpression("takesOverRenderingOfChildren", false);
|
return evaluateBooleanExpression("takesOverRenderingOfChildren", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool NodeHints::visibleInNavigator() const
|
||||||
|
{
|
||||||
|
if (!isValid())
|
||||||
|
return false;
|
||||||
|
|
||||||
|
return evaluateBooleanExpression("visibleInNavigator", false);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NodeHints::visibleInLibrary() const
|
||||||
|
{
|
||||||
|
return evaluateBooleanExpression("visibleInLibrary", true);
|
||||||
|
}
|
||||||
|
|
||||||
QHash<QString, QString> NodeHints::hints() const
|
QHash<QString, QString> NodeHints::hints() const
|
||||||
{
|
{
|
||||||
return m_hints;
|
return m_hints;
|
||||||
|
Reference in New Issue
Block a user