forked from qt-creator/qt-creator
QmlDesigner: Add Navigator tracing
Change-Id: I970a75012b5451a12214389ba01dfdb5ca2b5f59 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
@@ -40,7 +40,9 @@ env_with_default("QTC_ENABLE_FORM_EDITOR_TRACING" ENV_QTC_ENABLE_FORM_EDITOR_TRA
|
|||||||
option(ENABLE_FORM_EDITOR_TRACING "Enable form editor tracing" ${ENV_QTC_ENABLE_FORM_EDITOR_TRACING})
|
option(ENABLE_FORM_EDITOR_TRACING "Enable form editor tracing" ${ENV_QTC_ENABLE_FORM_EDITOR_TRACING})
|
||||||
add_feature_info("Form editor tracing" ${ENABLE_FORM_EDITOR_TRACING} "")
|
add_feature_info("Form editor tracing" ${ENABLE_FORM_EDITOR_TRACING} "")
|
||||||
|
|
||||||
|
env_with_default("QTC_ENABLE_NAVIGATOR_TRACING" ENV_QTC_ENABLE_NAVIGATOR_TRACING OFF)
|
||||||
|
option(ENABLE_NAVIGATOR_TRACING "Enable navigator tracing" ${ENV_QTC_ENABLE_NAVIGATOR_TRACING})
|
||||||
|
add_feature_info("Navigator tracing" ${ENABLE_NAVIGATOR_TRACING} "")
|
||||||
|
|
||||||
if(QDS_DESIGNVIEWER_USE_STAGING)
|
if(QDS_DESIGNVIEWER_USE_STAGING)
|
||||||
add_definitions(-DQDS_DESIGNVIEWER_USE_STAGING)
|
add_definitions(-DQDS_DESIGNVIEWER_USE_STAGING)
|
||||||
@@ -396,12 +398,15 @@ extend_qtc_plugin(QmlDesigner
|
|||||||
|
|
||||||
extend_qtc_plugin(QmlDesigner
|
extend_qtc_plugin(QmlDesigner
|
||||||
SOURCES_PREFIX components/navigator
|
SOURCES_PREFIX components/navigator
|
||||||
|
PUBLIC_DEFINES
|
||||||
|
$<$<BOOL:${ENABLE_NAVIGATOR_TRACING}>:ENABLE_NAVIGATOR_TRACING>
|
||||||
SOURCES
|
SOURCES
|
||||||
iconcheckboxitemdelegate.cpp iconcheckboxitemdelegate.h
|
iconcheckboxitemdelegate.cpp iconcheckboxitemdelegate.h
|
||||||
nameitemdelegate.cpp nameitemdelegate.h
|
nameitemdelegate.cpp nameitemdelegate.h
|
||||||
navigator.qrc
|
navigator.qrc
|
||||||
navigatormodelinterface.h
|
navigatormodelinterface.h
|
||||||
navigatorsearchwidget.cpp navigatorsearchwidget.h
|
navigatorsearchwidget.cpp navigatorsearchwidget.h
|
||||||
|
navigatortracing.cpp navigatortracing.h
|
||||||
navigatortreemodel.cpp navigatortreemodel.h
|
navigatortreemodel.cpp navigatortreemodel.h
|
||||||
navigatortreeview.cpp navigatortreeview.h
|
navigatortreeview.cpp navigatortreeview.h
|
||||||
navigatorview.cpp navigatorview.h
|
navigatorview.cpp navigatorview.h
|
||||||
|
@@ -2,18 +2,24 @@
|
|||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
#include "choosefrompropertylistdialog.h"
|
#include "choosefrompropertylistdialog.h"
|
||||||
#include "nodemetainfo.h"
|
|
||||||
|
#include "navigatortracing.h"
|
||||||
#include "ui_choosefrompropertylistdialog.h"
|
#include "ui_choosefrompropertylistdialog.h"
|
||||||
|
|
||||||
|
#include <nodemetainfo.h>
|
||||||
#include <qmldesignerplugin.h>
|
#include <qmldesignerplugin.h>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
// This will filter and return possible properties that the given type can be bound to
|
// This will filter and return possible properties that the given type can be bound to
|
||||||
ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &insertInfo,
|
ChooseFromPropertyListFilter::ChooseFromPropertyListFilter(const NodeMetaInfo &insertInfo,
|
||||||
const NodeMetaInfo &parentInfo,
|
const NodeMetaInfo &parentInfo,
|
||||||
bool breakOnFirst)
|
bool breakOnFirst)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter constructor", category()};
|
||||||
|
|
||||||
// TODO: Metainfo based matching system (QDS-6240)
|
// TODO: Metainfo based matching system (QDS-6240)
|
||||||
|
|
||||||
// Fall back to a hardcoded list of supported cases:
|
// Fall back to a hardcoded list of supported cases:
|
||||||
@@ -136,11 +142,15 @@ ChooseFromPropertyListDialog::ChooseFromPropertyListDialog(const QStringList &pr
|
|||||||
|
|
||||||
ChooseFromPropertyListDialog::~ChooseFromPropertyListDialog()
|
ChooseFromPropertyListDialog::~ChooseFromPropertyListDialog()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter destructor", category()};
|
||||||
|
|
||||||
delete m_ui;
|
delete m_ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
TypeName ChooseFromPropertyListDialog::selectedProperty() const
|
TypeName ChooseFromPropertyListDialog::selectedProperty() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter selected property", category()};
|
||||||
|
|
||||||
return m_selectedProperty;
|
return m_selectedProperty;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -149,6 +159,8 @@ TypeName ChooseFromPropertyListDialog::selectedProperty() const
|
|||||||
ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
||||||
const ModelNode &targetNode, const ModelNode &newNode, QWidget *parent)
|
const ModelNode &targetNode, const ModelNode &newNode, QWidget *parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter create if needed", category()};
|
||||||
|
|
||||||
const NodeMetaInfo info = newNode.metaInfo();
|
const NodeMetaInfo info = newNode.metaInfo();
|
||||||
const NodeMetaInfo targetInfo = targetNode.metaInfo();
|
const NodeMetaInfo targetInfo = targetNode.metaInfo();
|
||||||
ChooseFromPropertyListFilter *filter = new ChooseFromPropertyListFilter(info, targetInfo);
|
ChooseFromPropertyListFilter *filter = new ChooseFromPropertyListFilter(info, targetInfo);
|
||||||
@@ -163,6 +175,9 @@ ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
|||||||
ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
||||||
const ModelNode &targetNode, const NodeMetaInfo &propertyType, QWidget *parent)
|
const ModelNode &targetNode, const NodeMetaInfo &propertyType, QWidget *parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter create if needed for type",
|
||||||
|
category()};
|
||||||
|
|
||||||
const NodeMetaInfo metaInfo = targetNode.metaInfo();
|
const NodeMetaInfo metaInfo = targetNode.metaInfo();
|
||||||
QStringList matchingNames;
|
QStringList matchingNames;
|
||||||
for (const auto &property : metaInfo.properties()) {
|
for (const auto &property : metaInfo.properties()) {
|
||||||
@@ -178,6 +193,8 @@ ChooseFromPropertyListDialog *ChooseFromPropertyListDialog::createIfNeeded(
|
|||||||
|
|
||||||
void ChooseFromPropertyListDialog::fillList(const QStringList &propNames)
|
void ChooseFromPropertyListDialog::fillList(const QStringList &propNames)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"choose from property list filter fill list", category()};
|
||||||
|
|
||||||
if (propNames.isEmpty())
|
if (propNames.isEmpty())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@@ -5,31 +5,38 @@
|
|||||||
|
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
|
|
||||||
#include "navigatorview.h"
|
#include "navigatortracing.h"
|
||||||
#include "navigatortreeview.h"
|
|
||||||
#include "navigatortreemodel.h"
|
#include "navigatortreemodel.h"
|
||||||
#include "qproxystyle.h"
|
#include "navigatortreeview.h"
|
||||||
|
#include "navigatorview.h"
|
||||||
|
|
||||||
#include <theme.h>
|
#include <theme.h>
|
||||||
|
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
|
#include <qproxystyle.h>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QPen>
|
|
||||||
#include <QPixmapCache>
|
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
#include <QPen>
|
||||||
|
#include <QPixmapCache>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
IconCheckboxItemDelegate::IconCheckboxItemDelegate(QObject *parent, const QIcon &icon)
|
IconCheckboxItemDelegate::IconCheckboxItemDelegate(QObject *parent, const QIcon &icon)
|
||||||
: QStyledItemDelegate(parent),
|
: QStyledItemDelegate(parent),
|
||||||
m_icon(icon)
|
m_icon(icon)
|
||||||
{}
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"icon checkbox item delegate constructor", category()};
|
||||||
|
}
|
||||||
|
|
||||||
QSize IconCheckboxItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/,
|
QSize IconCheckboxItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/,
|
||||||
const QModelIndex & /*modelIndex*/) const
|
const QModelIndex & /*modelIndex*/) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"icon checkbox item delegate size hint", category()};
|
||||||
|
|
||||||
return {15, 20};
|
return {15, 20};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -63,6 +70,8 @@ void IconCheckboxItemDelegate::paint(QPainter *painter,
|
|||||||
const QStyleOptionViewItem &styleOption,
|
const QStyleOptionViewItem &styleOption,
|
||||||
const QModelIndex &modelIndex) const
|
const QModelIndex &modelIndex) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"icon checkbox item delegate paint", category()};
|
||||||
|
|
||||||
if (isReference(modelIndex))
|
if (isReference(modelIndex))
|
||||||
return; // Do not paint hover selection and icons for reference nodes
|
return; // Do not paint hover selection and icons for reference nodes
|
||||||
|
|
||||||
@@ -109,12 +118,13 @@ void IconCheckboxItemDelegate::paint(QPainter *painter,
|
|||||||
painter->restore();
|
painter->restore();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool IconCheckboxItemDelegate::editorEvent(QEvent *event,
|
bool IconCheckboxItemDelegate::editorEvent(QEvent *event,
|
||||||
QAbstractItemModel *model,
|
QAbstractItemModel *model,
|
||||||
const QStyleOptionViewItem &option,
|
const QStyleOptionViewItem &option,
|
||||||
const QModelIndex &index)
|
const QModelIndex &index)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"icon checkbox item delegate editor event", category()};
|
||||||
|
|
||||||
Q_ASSERT(event);
|
Q_ASSERT(event);
|
||||||
Q_ASSERT(model);
|
Q_ASSERT(model);
|
||||||
|
|
||||||
@@ -130,10 +140,9 @@ bool IconCheckboxItemDelegate::editorEvent(QEvent *event,
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// make sure that we have the right event type
|
// make sure that we have the right event type
|
||||||
if ((event->type() == QEvent::MouseButtonRelease)
|
if ((event->type() == QEvent::MouseButtonRelease) || (event->type() == QEvent::MouseButtonDblClick)
|
||||||
|| (event->type() == QEvent::MouseButtonDblClick)
|
|
||||||
|| (event->type() == QEvent::MouseButtonPress)) {
|
|| (event->type() == QEvent::MouseButtonPress)) {
|
||||||
QMouseEvent *me = static_cast<QMouseEvent*>(event);
|
QMouseEvent *me = static_cast<QMouseEvent *>(event);
|
||||||
if (me->button() != Qt::LeftButton || !option.rect.contains(me->pos()))
|
if (me->button() != Qt::LeftButton || !option.rect.contains(me->pos()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -142,8 +151,8 @@ bool IconCheckboxItemDelegate::editorEvent(QEvent *event,
|
|||||||
return true;
|
return true;
|
||||||
|
|
||||||
} else if (event->type() == QEvent::KeyPress) {
|
} else if (event->type() == QEvent::KeyPress) {
|
||||||
if (static_cast<QKeyEvent*>(event)->key() != Qt::Key_Space
|
if (static_cast<QKeyEvent *>(event)->key() != Qt::Key_Space
|
||||||
&& static_cast<QKeyEvent*>(event)->key() != Qt::Key_Select)
|
&& static_cast<QKeyEvent *>(event)->key() != Qt::Key_Select)
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
return false;
|
return false;
|
||||||
@@ -151,7 +160,7 @@ bool IconCheckboxItemDelegate::editorEvent(QEvent *event,
|
|||||||
|
|
||||||
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
|
Qt::CheckState state = static_cast<Qt::CheckState>(value.toInt());
|
||||||
if (flags & Qt::ItemIsUserTristate)
|
if (flags & Qt::ItemIsUserTristate)
|
||||||
state = ((Qt::CheckState)((state + 1) % 3));
|
state = ((Qt::CheckState) ((state + 1) % 3));
|
||||||
else
|
else
|
||||||
state = (state == Qt::Checked) ? Qt::Unchecked : Qt::Checked;
|
state = (state == Qt::Checked) ? Qt::Unchecked : Qt::Checked;
|
||||||
return model->setData(index, state, Qt::CheckStateRole);
|
return model->setData(index, state, Qt::CheckStateRole);
|
||||||
|
@@ -3,12 +3,13 @@
|
|||||||
|
|
||||||
#include "nameitemdelegate.h"
|
#include "nameitemdelegate.h"
|
||||||
|
|
||||||
#include <qmath.h>
|
|
||||||
|
|
||||||
#include "choosefrompropertylistdialog.h"
|
#include "choosefrompropertylistdialog.h"
|
||||||
|
#include "navigatortracing.h"
|
||||||
#include "navigatortreeview.h"
|
#include "navigatortreeview.h"
|
||||||
#include "navigatorview.h"
|
#include "navigatorview.h"
|
||||||
#include "navigatorwidget.h"
|
#include "navigatorwidget.h"
|
||||||
|
|
||||||
#include <dialogutils.h>
|
#include <dialogutils.h>
|
||||||
#include <modelnodecontextmenu.h>
|
#include <modelnodecontextmenu.h>
|
||||||
#include <modelutils.h>
|
#include <modelutils.h>
|
||||||
@@ -20,15 +21,18 @@
|
|||||||
#include <coreplugin/messagebox.h>
|
#include <coreplugin/messagebox.h>
|
||||||
#include <utils/qtcassert.h>
|
#include <utils/qtcassert.h>
|
||||||
|
|
||||||
|
#include <qmath.h>
|
||||||
#include <QLineEdit>
|
#include <QLineEdit>
|
||||||
#include <QPen>
|
|
||||||
#include <QPixmapCache>
|
|
||||||
#include <QMouseEvent>
|
#include <QMouseEvent>
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QPainterPath>
|
#include <QPainterPath>
|
||||||
|
#include <QPen>
|
||||||
|
#include <QPixmapCache>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
int NameItemDelegate::iconOffset = 0;
|
int NameItemDelegate::iconOffset = 0;
|
||||||
|
|
||||||
static QPixmap generateWavyPixmap(qreal maxRadius, const QPen &pen)
|
static QPixmap generateWavyPixmap(qreal maxRadius, const QPen &pen)
|
||||||
@@ -91,6 +95,7 @@ static QPixmap getWavyPixmap(qreal maxRadius, const QPen &pen)
|
|||||||
NameItemDelegate::NameItemDelegate(QObject *parent)
|
NameItemDelegate::NameItemDelegate(QObject *parent)
|
||||||
: QStyledItemDelegate(parent)
|
: QStyledItemDelegate(parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate constructor", category()};
|
||||||
}
|
}
|
||||||
|
|
||||||
static int drawIcon(QPainter *painter, const QStyleOptionViewItem &styleOption, const QModelIndex &modelIndex)
|
static int drawIcon(QPainter *painter, const QStyleOptionViewItem &styleOption, const QModelIndex &modelIndex)
|
||||||
@@ -194,6 +199,8 @@ static void openContextMenu(const QModelIndex &index, const QPoint &pos)
|
|||||||
QSize NameItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/,
|
QSize NameItemDelegate::sizeHint(const QStyleOptionViewItem & /*option*/,
|
||||||
const QModelIndex & /*modelIndex*/) const
|
const QModelIndex & /*modelIndex*/) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate size hint", category()};
|
||||||
|
|
||||||
return {15, 20 + (2 * delegateMargin)};
|
return {15, 20 + (2 * delegateMargin)};
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -201,6 +208,8 @@ void NameItemDelegate::paint(QPainter *painter,
|
|||||||
const QStyleOptionViewItem &styleOption,
|
const QStyleOptionViewItem &styleOption,
|
||||||
const QModelIndex &modelIndex) const
|
const QModelIndex &modelIndex) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate paint", category()};
|
||||||
|
|
||||||
painter->save();
|
painter->save();
|
||||||
|
|
||||||
painter->setPen(Theme::getColor(Theme::Color::DSnavigatorText));
|
painter->setPen(Theme::getColor(Theme::Color::DSnavigatorText));
|
||||||
@@ -283,6 +292,8 @@ QWidget *NameItemDelegate::createEditor(QWidget *parent,
|
|||||||
const QStyleOptionViewItem &/*option*/,
|
const QStyleOptionViewItem &/*option*/,
|
||||||
const QModelIndex &index) const
|
const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate create editor", category()};
|
||||||
|
|
||||||
if (!getModelNode(index).isValid())
|
if (!getModelNode(index).isValid())
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
@@ -291,6 +302,8 @@ QWidget *NameItemDelegate::createEditor(QWidget *parent,
|
|||||||
|
|
||||||
void NameItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
|
void NameItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate set editor data", category()};
|
||||||
|
|
||||||
const ModelNode node = getModelNode(index);
|
const ModelNode node = getModelNode(index);
|
||||||
const QString value = node.id();
|
const QString value = node.id();
|
||||||
|
|
||||||
@@ -302,6 +315,8 @@ void NameItemDelegate::setModelData(QWidget *editor,
|
|||||||
[[maybe_unused]] QAbstractItemModel *model,
|
[[maybe_unused]] QAbstractItemModel *model,
|
||||||
const QModelIndex &index) const
|
const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate set model data", category()};
|
||||||
|
|
||||||
auto lineEdit = static_cast<QLineEdit*>(editor);
|
auto lineEdit = static_cast<QLineEdit*>(editor);
|
||||||
setId(index, lineEdit->text());
|
setId(index, lineEdit->text());
|
||||||
lineEdit->clearFocus();
|
lineEdit->clearFocus();
|
||||||
@@ -309,6 +324,8 @@ void NameItemDelegate::setModelData(QWidget *editor,
|
|||||||
|
|
||||||
bool NameItemDelegate::editorEvent(QEvent *event, QAbstractItemModel *, const QStyleOptionViewItem &, const QModelIndex &index)
|
bool NameItemDelegate::editorEvent(QEvent *event, QAbstractItemModel *, const QStyleOptionViewItem &, const QModelIndex &index)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate editor event", category()};
|
||||||
|
|
||||||
if (event->type() == QEvent::MouseButtonRelease) {
|
if (event->type() == QEvent::MouseButtonRelease) {
|
||||||
auto mouseEvent = static_cast<QMouseEvent *>(event);
|
auto mouseEvent = static_cast<QMouseEvent *>(event);
|
||||||
if (mouseEvent->button() == Qt::RightButton) {
|
if (mouseEvent->button() == Qt::RightButton) {
|
||||||
@@ -324,6 +341,8 @@ void NameItemDelegate::updateEditorGeometry(QWidget *editor,
|
|||||||
const QStyleOptionViewItem &option,
|
const QStyleOptionViewItem &option,
|
||||||
const QModelIndex &/*index*/) const
|
const QModelIndex &/*index*/) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"name item delegate update editor geometry", category()};
|
||||||
|
|
||||||
auto lineEdit = static_cast<QLineEdit*>(editor);
|
auto lineEdit = static_cast<QLineEdit*>(editor);
|
||||||
lineEdit->setTextMargins(0, 0, 0, 2);
|
lineEdit->setTextMargins(0, 0, 0, 2);
|
||||||
// + 2 is shifting the QLineEdit to the left so it will align with the text when activated
|
// + 2 is shifting the QLineEdit to the left so it will align with the text when activated
|
||||||
|
@@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#include "navigatorsearchwidget.h"
|
#include "navigatorsearchwidget.h"
|
||||||
|
|
||||||
|
#include "navigatortracing.h"
|
||||||
|
|
||||||
#include <utils/stylehelper.h>
|
#include <utils/stylehelper.h>
|
||||||
#include <theme.h>
|
#include <theme.h>
|
||||||
|
|
||||||
@@ -15,9 +17,13 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
LineEdit::LineEdit(QWidget *parent)
|
LineEdit::LineEdit(QWidget *parent)
|
||||||
: QLineEdit(parent)
|
: QLineEdit(parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit constructor", category()};
|
||||||
|
|
||||||
clearButton = new QToolButton(this);
|
clearButton = new QToolButton(this);
|
||||||
|
|
||||||
const QString fontName = "qtds_propertyIconFont.ttf";
|
const QString fontName = "qtds_propertyIconFont.ttf";
|
||||||
@@ -74,6 +80,8 @@ LineEdit::LineEdit(QWidget *parent)
|
|||||||
|
|
||||||
void LineEdit::resizeEvent([[maybe_unused]] QResizeEvent *event)
|
void LineEdit::resizeEvent([[maybe_unused]] QResizeEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit resize event", category()};
|
||||||
|
|
||||||
QSize hint = clearButton->sizeHint();
|
QSize hint = clearButton->sizeHint();
|
||||||
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
|
int frameWidth = style()->pixelMetric(QStyle::PM_DefaultFrameWidth);
|
||||||
|
|
||||||
@@ -83,6 +91,8 @@ void LineEdit::resizeEvent([[maybe_unused]] QResizeEvent *event)
|
|||||||
|
|
||||||
void LineEdit::keyPressEvent(QKeyEvent *event)
|
void LineEdit::keyPressEvent(QKeyEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit key press event", category()};
|
||||||
|
|
||||||
if (event->key() == Qt::Key_Escape && event->modifiers() == Qt::NoModifier) {
|
if (event->key() == Qt::Key_Escape && event->modifiers() == Qt::NoModifier) {
|
||||||
clear();
|
clear();
|
||||||
event->accept();
|
event->accept();
|
||||||
@@ -93,6 +103,8 @@ void LineEdit::keyPressEvent(QKeyEvent *event)
|
|||||||
|
|
||||||
void LineEdit::paintEvent(QPaintEvent *event)
|
void LineEdit::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit paint event", category()};
|
||||||
|
|
||||||
if (text().isEmpty()) {
|
if (text().isEmpty()) {
|
||||||
QPalette p(palette());
|
QPalette p(palette());
|
||||||
p.setColor(QPalette::Active,
|
p.setColor(QPalette::Active,
|
||||||
@@ -108,12 +120,16 @@ void LineEdit::paintEvent(QPaintEvent *event)
|
|||||||
|
|
||||||
void LineEdit::updateClearButton(const QString& text)
|
void LineEdit::updateClearButton(const QString& text)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit update clear button", category()};
|
||||||
|
|
||||||
clearButton->setVisible(!text.isEmpty());
|
clearButton->setVisible(!text.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigatorSearchWidget::NavigatorSearchWidget(QWidget *parent)
|
NavigatorSearchWidget::NavigatorSearchWidget(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit constructor", category()};
|
||||||
|
|
||||||
auto layout = new QBoxLayout(QBoxLayout::LeftToRight);
|
auto layout = new QBoxLayout(QBoxLayout::LeftToRight);
|
||||||
layout->setSpacing(0);
|
layout->setSpacing(0);
|
||||||
layout->setContentsMargins(10, 6, 10, 6);
|
layout->setContentsMargins(10, 6, 10, 6);
|
||||||
@@ -136,6 +152,8 @@ NavigatorSearchWidget::NavigatorSearchWidget(QWidget *parent)
|
|||||||
|
|
||||||
void NavigatorSearchWidget::clear()
|
void NavigatorSearchWidget::clear()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"line edit clear", category()};
|
||||||
|
|
||||||
m_textField->clear();
|
m_textField->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (C) 2025 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
#include "navigatortracing.h"
|
||||||
|
|
||||||
|
#include <tracing/qmldesignertracing.h>
|
||||||
|
|
||||||
|
#include <sqlitebasestatement.h>
|
||||||
|
|
||||||
|
namespace QmlDesigner::NavigatorTracing {
|
||||||
|
using namespace NanotraceHR::Literals;
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
thread_local Category category_{"model",
|
||||||
|
Tracing::eventQueueWithStringArguments(),
|
||||||
|
Tracing::eventQueueWithoutArguments(),
|
||||||
|
category};
|
||||||
|
|
||||||
|
} // namespace
|
||||||
|
|
||||||
|
Category &category()
|
||||||
|
{
|
||||||
|
return category_;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace QmlDesigner::NavigatorTracing
|
@@ -0,0 +1,26 @@
|
|||||||
|
// Copyright (C) 2025 The Qt Company Ltd.
|
||||||
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
|
#include <qmldesignercomponents_global.h>
|
||||||
|
|
||||||
|
#include <nanotrace/nanotracehr.h>
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
namespace QmlDesigner::NavigatorTracing {
|
||||||
|
|
||||||
|
constexpr NanotraceHR::Tracing tracingStatus()
|
||||||
|
{
|
||||||
|
#ifdef ENABLE_NAVIGATOR_TRACING
|
||||||
|
return NanotraceHR::Tracing::IsEnabled;
|
||||||
|
#else
|
||||||
|
return NanotraceHR::Tracing::IsDisabled;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
using Category = NanotraceHR::StringViewWithStringArgumentsCategory<tracingStatus()>;
|
||||||
|
using SourceLocation = Category::SourceLocation;
|
||||||
|
|
||||||
|
[[gnu::pure]] QMLDESIGNERCOMPONENTS_EXPORT Category &category();
|
||||||
|
|
||||||
|
} // namespace QmlDesigner::NavigatorTracing
|
@@ -3,13 +3,15 @@
|
|||||||
|
|
||||||
#include "navigatortreemodel.h"
|
#include "navigatortreemodel.h"
|
||||||
|
|
||||||
#include "assetslibrarywidget.h"
|
|
||||||
#include "choosefrompropertylistdialog.h"
|
#include "choosefrompropertylistdialog.h"
|
||||||
#include "createtexture.h"
|
#include "navigatortracing.h"
|
||||||
#include "navigatorview.h"
|
#include "navigatorview.h"
|
||||||
#include "navigatorwidget.h"
|
#include "navigatorwidget.h"
|
||||||
#include "qmldesignerconstants.h"
|
|
||||||
#include "qmldesignerplugin.h"
|
#include <assetslibrarywidget.h>
|
||||||
|
#include <createtexture.h>
|
||||||
|
#include <qmldesignerconstants.h>
|
||||||
|
#include <qmldesignerplugin.h>
|
||||||
#include <qmldesignertr.h>
|
#include <qmldesignertr.h>
|
||||||
|
|
||||||
#include <abstractview.h>
|
#include <abstractview.h>
|
||||||
@@ -55,6 +57,8 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
static QList<ModelNode> modelNodesFromMimeData(const QMimeData *mimeData, AbstractView *view)
|
static QList<ModelNode> modelNodesFromMimeData(const QMimeData *mimeData, AbstractView *view)
|
||||||
{
|
{
|
||||||
QByteArray encodedModelNodeData = mimeData->data(Constants::MIME_TYPE_MODELNODE_LIST);
|
QByteArray encodedModelNodeData = mimeData->data(Constants::MIME_TYPE_MODELNODE_LIST);
|
||||||
@@ -223,13 +227,20 @@ static QColor nodeColor(const ModelNode &node)
|
|||||||
NavigatorTreeModel::NavigatorTreeModel(QObject *parent)
|
NavigatorTreeModel::NavigatorTreeModel(QObject *parent)
|
||||||
: QAbstractItemModel(parent)
|
: QAbstractItemModel(parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model constructor", category()};
|
||||||
|
|
||||||
m_actionManager = &QmlDesignerPlugin::instance()->viewManager().designerActionManager();
|
m_actionManager = &QmlDesignerPlugin::instance()->viewManager().designerActionManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigatorTreeModel::~NavigatorTreeModel() = default;
|
NavigatorTreeModel::~NavigatorTreeModel()
|
||||||
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model destructor", category()};
|
||||||
|
}
|
||||||
|
|
||||||
QVariant NavigatorTreeModel::data(const QModelIndex &index, int role) const
|
QVariant NavigatorTreeModel::data(const QModelIndex &index, int role) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model data", category()};
|
||||||
|
|
||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return QVariant();
|
return QVariant();
|
||||||
|
|
||||||
@@ -309,6 +320,8 @@ QVariant NavigatorTreeModel::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
Qt::ItemFlags NavigatorTreeModel::flags(const QModelIndex &index) const
|
Qt::ItemFlags NavigatorTreeModel::flags(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model flags", category()};
|
||||||
|
|
||||||
if (modelNodeForIndex(index).isRootNode()) {
|
if (modelNodeForIndex(index).isRootNode()) {
|
||||||
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
|
Qt::ItemFlags flags = Qt::ItemIsSelectable | Qt::ItemIsEnabled | Qt::ItemIsDropEnabled;
|
||||||
if (index.column() == ColumnType::Name)
|
if (index.column() == ColumnType::Name)
|
||||||
@@ -353,6 +366,8 @@ static void appendForcedNodes(const NodeListProperty &property, QList<ModelNode>
|
|||||||
|
|
||||||
QList<ModelNode> NavigatorTreeModel::filteredList(const NodeListProperty &property, bool filter, bool reverseOrder) const
|
QList<ModelNode> NavigatorTreeModel::filteredList(const NodeListProperty &property, bool filter, bool reverseOrder) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model filtered list", category()};
|
||||||
|
|
||||||
auto it = m_rowCache.find(property.parentModelNode());
|
auto it = m_rowCache.find(property.parentModelNode());
|
||||||
|
|
||||||
if (it != m_rowCache.end())
|
if (it != m_rowCache.end())
|
||||||
@@ -395,6 +410,8 @@ QList<ModelNode> NavigatorTreeModel::filteredList(const NodeListProperty &proper
|
|||||||
|
|
||||||
QModelIndex NavigatorTreeModel::index(int row, int column, const QModelIndex &parent) const
|
QModelIndex NavigatorTreeModel::index(int row, int column, const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model index", category()};
|
||||||
|
|
||||||
if (!m_view->model())
|
if (!m_view->model())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -432,11 +449,15 @@ QModelIndex NavigatorTreeModel::index(int row, int column, const QModelIndex &pa
|
|||||||
|
|
||||||
QVariant NavigatorTreeModel::headerData(int, Qt::Orientation, int) const
|
QVariant NavigatorTreeModel::headerData(int, Qt::Orientation, int) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model header data", category()};
|
||||||
|
|
||||||
return QVariant();
|
return QVariant();
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex NavigatorTreeModel::parent(const QModelIndex &index) const
|
QModelIndex NavigatorTreeModel::parent(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model parent", category()};
|
||||||
|
|
||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -467,6 +488,8 @@ QModelIndex NavigatorTreeModel::parent(const QModelIndex &index) const
|
|||||||
|
|
||||||
int NavigatorTreeModel::rowCount(const QModelIndex &parent) const
|
int NavigatorTreeModel::rowCount(const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model row count", category()};
|
||||||
|
|
||||||
if (!m_view->isAttached() || parent.column() > 0 || isReference(parent))
|
if (!m_view->isAttached() || parent.column() > 0 || isReference(parent))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -491,6 +514,8 @@ int NavigatorTreeModel::rowCount(const QModelIndex &parent) const
|
|||||||
|
|
||||||
int NavigatorTreeModel::columnCount(const QModelIndex &parent) const
|
int NavigatorTreeModel::columnCount(const QModelIndex &parent) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model column count", category()};
|
||||||
|
|
||||||
if (parent.column() > 0)
|
if (parent.column() > 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@@ -499,6 +524,8 @@ int NavigatorTreeModel::columnCount(const QModelIndex &parent) const
|
|||||||
|
|
||||||
ModelNode NavigatorTreeModel::modelNodeForIndex(const QModelIndex &index) const
|
ModelNode NavigatorTreeModel::modelNodeForIndex(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model model node for index", category()};
|
||||||
|
|
||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return ModelNode();
|
return ModelNode();
|
||||||
|
|
||||||
@@ -513,6 +540,8 @@ ModelNode NavigatorTreeModel::modelNodeForIndex(const QModelIndex &index) const
|
|||||||
|
|
||||||
bool NavigatorTreeModel::hasModelNodeForIndex(const QModelIndex &index) const
|
bool NavigatorTreeModel::hasModelNodeForIndex(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model has model node for index", category()};
|
||||||
|
|
||||||
if (!index.isValid())
|
if (!index.isValid())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
@@ -521,11 +550,15 @@ bool NavigatorTreeModel::hasModelNodeForIndex(const QModelIndex &index) const
|
|||||||
|
|
||||||
void NavigatorTreeModel::setView(NavigatorView *view)
|
void NavigatorTreeModel::setView(NavigatorView *view)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model set view", category()};
|
||||||
|
|
||||||
m_view = view;
|
m_view = view;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList NavigatorTreeModel::mimeTypes() const
|
QStringList NavigatorTreeModel::mimeTypes() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model mime types", category()};
|
||||||
|
|
||||||
static const QStringList types({Constants::MIME_TYPE_MODELNODE_LIST,
|
static const QStringList types({Constants::MIME_TYPE_MODELNODE_LIST,
|
||||||
Constants::MIME_TYPE_ITEM_LIBRARY_INFO,
|
Constants::MIME_TYPE_ITEM_LIBRARY_INFO,
|
||||||
Constants::MIME_TYPE_TEXTURE,
|
Constants::MIME_TYPE_TEXTURE,
|
||||||
@@ -540,6 +573,8 @@ QStringList NavigatorTreeModel::mimeTypes() const
|
|||||||
|
|
||||||
QMimeData *NavigatorTreeModel::mimeData(const QModelIndexList &modelIndexList) const
|
QMimeData *NavigatorTreeModel::mimeData(const QModelIndexList &modelIndexList) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model mime data", category()};
|
||||||
|
|
||||||
auto mimeData = new QMimeData();
|
auto mimeData = new QMimeData();
|
||||||
|
|
||||||
QByteArray encodedModelNodeData;
|
QByteArray encodedModelNodeData;
|
||||||
@@ -563,11 +598,15 @@ QMimeData *NavigatorTreeModel::mimeData(const QModelIndexList &modelIndexList) c
|
|||||||
|
|
||||||
QModelIndex NavigatorTreeModel::indexForModelNode(const ModelNode &node) const
|
QModelIndex NavigatorTreeModel::indexForModelNode(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model index for model node", category()};
|
||||||
|
|
||||||
return m_nodeIndexHash.value(node);
|
return m_nodeIndexHash.value(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
QModelIndex NavigatorTreeModel::createIndexFromModelNode(int row, int column, const ModelNode &modelNode) const
|
QModelIndex NavigatorTreeModel::createIndexFromModelNode(int row, int column, const ModelNode &modelNode) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model create index from model node", category()};
|
||||||
|
|
||||||
QModelIndex index = createIndex(row, column, modelNode.internalId());
|
QModelIndex index = createIndex(row, column, modelNode.internalId());
|
||||||
if (column == 0)
|
if (column == 0)
|
||||||
m_nodeIndexHash.insert(modelNode, index);
|
m_nodeIndexHash.insert(modelNode, index);
|
||||||
@@ -615,6 +654,8 @@ bool NavigatorTreeModel::dropMimeData(const QMimeData *mimeData,
|
|||||||
int /*columnNumber*/,
|
int /*columnNumber*/,
|
||||||
const QModelIndex &dropModelIndex)
|
const QModelIndex &dropModelIndex)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model drop mime data", category()};
|
||||||
|
|
||||||
if (action == Qt::IgnoreAction)
|
if (action == Qt::IgnoreAction)
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
@@ -777,6 +818,8 @@ void NavigatorTreeModel::handleInternalDrop(const QMimeData *mimeData,
|
|||||||
int rowNumber,
|
int rowNumber,
|
||||||
const QModelIndex &dropModelIndex)
|
const QModelIndex &dropModelIndex)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model handle internal drop", category()};
|
||||||
|
|
||||||
QTC_ASSERT(m_view, return);
|
QTC_ASSERT(m_view, return);
|
||||||
const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0);
|
const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0);
|
||||||
int targetRowNumber = rowNumber;
|
int targetRowNumber = rowNumber;
|
||||||
@@ -804,6 +847,8 @@ static ItemLibraryEntry createItemLibraryEntryFromMimeData(const QByteArray &dat
|
|||||||
|
|
||||||
void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, int rowNumber, const QModelIndex &dropModelIndex)
|
void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, int rowNumber, const QModelIndex &dropModelIndex)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model handle item library item drop", category()};
|
||||||
|
|
||||||
QTC_ASSERT(m_view, return);
|
QTC_ASSERT(m_view, return);
|
||||||
|
|
||||||
const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0);
|
const QModelIndex rowModelIndex = dropModelIndex.sibling(dropModelIndex.row(), 0);
|
||||||
@@ -915,6 +960,8 @@ void NavigatorTreeModel::handleItemLibraryItemDrop(const QMimeData *mimeData, in
|
|||||||
|
|
||||||
void NavigatorTreeModel::addImport(const QString &importName)
|
void NavigatorTreeModel::addImport(const QString &importName)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model add import", category()};
|
||||||
|
|
||||||
#ifdef QDS_USE_PROJECTSTORAGE
|
#ifdef QDS_USE_PROJECTSTORAGE
|
||||||
Import import = Import::createLibraryImport(importName);
|
Import import = Import::createLibraryImport(importName);
|
||||||
m_view->model()->changeImports({import}, {});
|
m_view->model()->changeImports({import}, {});
|
||||||
@@ -927,6 +974,8 @@ void NavigatorTreeModel::addImport(const QString &importName)
|
|||||||
bool QmlDesigner::NavigatorTreeModel::moveNodeToParent(const NodeAbstractProperty &targetProperty,
|
bool QmlDesigner::NavigatorTreeModel::moveNodeToParent(const NodeAbstractProperty &targetProperty,
|
||||||
const ModelNode &node)
|
const ModelNode &node)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model move node to parent", category()};
|
||||||
|
|
||||||
NodeAbstractProperty parentProp = targetProperty.parentProperty();
|
NodeAbstractProperty parentProp = targetProperty.parentProperty();
|
||||||
if (parentProp.isValid()) {
|
if (parentProp.isValid()) {
|
||||||
ModelNode targetModel = parentProp.parentModelNode();
|
ModelNode targetModel = parentProp.parentModelNode();
|
||||||
@@ -938,6 +987,8 @@ bool QmlDesigner::NavigatorTreeModel::moveNodeToParent(const NodeAbstractPropert
|
|||||||
|
|
||||||
QIcon NavigatorTreeModel::colorizeIcon(const QIcon &icon, const QColor &color) const
|
QIcon NavigatorTreeModel::colorizeIcon(const QIcon &icon, const QColor &color) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model colorize icon", category()};
|
||||||
|
|
||||||
if (!color.isValid())
|
if (!color.isValid())
|
||||||
return icon;
|
return icon;
|
||||||
|
|
||||||
@@ -966,6 +1017,8 @@ void NavigatorTreeModel::moveNodesInteractive(NodeAbstractProperty &parentProper
|
|||||||
int targetIndex,
|
int targetIndex,
|
||||||
bool executeInTransaction)
|
bool executeInTransaction)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model move nodes interactive", category()};
|
||||||
|
|
||||||
QTC_ASSERT(m_view, return);
|
QTC_ASSERT(m_view, return);
|
||||||
|
|
||||||
auto doMoveNodesInteractive = [&parentProperty, modelNodes, targetIndex]() {
|
auto doMoveNodesInteractive = [&parentProperty, modelNodes, targetIndex]() {
|
||||||
@@ -1024,16 +1077,22 @@ void NavigatorTreeModel::moveNodesInteractive(NodeAbstractProperty &parentProper
|
|||||||
|
|
||||||
Qt::DropActions NavigatorTreeModel::supportedDropActions() const
|
Qt::DropActions NavigatorTreeModel::supportedDropActions() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model supported drop actions", category()};
|
||||||
|
|
||||||
return Qt::LinkAction | Qt::MoveAction;
|
return Qt::LinkAction | Qt::MoveAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
Qt::DropActions NavigatorTreeModel::supportedDragActions() const
|
Qt::DropActions NavigatorTreeModel::supportedDragActions() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model supported drag actions", category()};
|
||||||
|
|
||||||
return Qt::LinkAction;
|
return Qt::LinkAction;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NavigatorTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
bool NavigatorTreeModel::setData(const QModelIndex &index, const QVariant &value, int role)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model set data", category()};
|
||||||
|
|
||||||
QTC_ASSERT(m_view, return false);
|
QTC_ASSERT(m_view, return false);
|
||||||
ModelNode modelNode = modelNodeForIndex(index);
|
ModelNode modelNode = modelNodeForIndex(index);
|
||||||
if (index.column() == ColumnType::Alias && role == Qt::CheckStateRole) {
|
if (index.column() == ColumnType::Alias && role == Qt::CheckStateRole) {
|
||||||
@@ -1053,6 +1112,8 @@ bool NavigatorTreeModel::setData(const QModelIndex &index, const QVariant &value
|
|||||||
|
|
||||||
void NavigatorTreeModel::notifyDataChanged(const ModelNode &modelNode)
|
void NavigatorTreeModel::notifyDataChanged(const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify data changed", category()};
|
||||||
|
|
||||||
const auto emitDataChanged = [this](const QModelIndex &index) {
|
const auto emitDataChanged = [this](const QModelIndex &index) {
|
||||||
const QAbstractItemModel *model = index.model();
|
const QAbstractItemModel *model = index.model();
|
||||||
const QModelIndex sibling = model ? model->sibling(index.row(), ColumnType::Count - 1, index)
|
const QModelIndex sibling = model ? model->sibling(index.row(), ColumnType::Count - 1, index)
|
||||||
@@ -1081,12 +1142,16 @@ static QList<ModelNode> collectParents(const QList<ModelNode> &modelNodes)
|
|||||||
|
|
||||||
QList<QPersistentModelIndex> NavigatorTreeModel::nodesToPersistentIndex(const QList<ModelNode> &modelNodes)
|
QList<QPersistentModelIndex> NavigatorTreeModel::nodesToPersistentIndex(const QList<ModelNode> &modelNodes)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model nodes to persistent index", category()};
|
||||||
|
|
||||||
return ::Utils::transform<QList<QPersistentModelIndex>>(
|
return ::Utils::transform<QList<QPersistentModelIndex>>(
|
||||||
modelNodes, std::bind_front(&NavigatorTreeModel::indexForModelNode, this));
|
modelNodes, std::bind_front(&NavigatorTreeModel::indexForModelNode, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorTreeModel::notifyModelNodesRemoved(const QList<ModelNode> &modelNodes)
|
void NavigatorTreeModel::notifyModelNodesRemoved(const QList<ModelNode> &modelNodes)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify model nodes removed", category()};
|
||||||
|
|
||||||
for (const ModelNode &modelNode : modelNodes)
|
for (const ModelNode &modelNode : modelNodes)
|
||||||
m_referenceIndexHash.remove(modelNode);
|
m_referenceIndexHash.remove(modelNode);
|
||||||
|
|
||||||
@@ -1099,6 +1164,8 @@ void NavigatorTreeModel::notifyModelNodesRemoved(const QList<ModelNode> &modelNo
|
|||||||
|
|
||||||
void NavigatorTreeModel::notifyModelNodesInserted(const QList<ModelNode> &modelNodes)
|
void NavigatorTreeModel::notifyModelNodesInserted(const QList<ModelNode> &modelNodes)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify model nodes inserted", category()};
|
||||||
|
|
||||||
m_rowReferenceCache.clear();
|
m_rowReferenceCache.clear();
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
QList<QPersistentModelIndex> indexes = nodesToPersistentIndex(collectParents(modelNodes));
|
QList<QPersistentModelIndex> indexes = nodesToPersistentIndex(collectParents(modelNodes));
|
||||||
@@ -1108,6 +1175,8 @@ void NavigatorTreeModel::notifyModelNodesInserted(const QList<ModelNode> &modelN
|
|||||||
|
|
||||||
void NavigatorTreeModel::notifyModelNodesMoved(const QList<ModelNode> &modelNodes)
|
void NavigatorTreeModel::notifyModelNodesMoved(const QList<ModelNode> &modelNodes)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify model nodes moved", category()};
|
||||||
|
|
||||||
m_rowReferenceCache.clear();
|
m_rowReferenceCache.clear();
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
QList<QPersistentModelIndex> indexes = nodesToPersistentIndex(collectParents(modelNodes));
|
QList<QPersistentModelIndex> indexes = nodesToPersistentIndex(collectParents(modelNodes));
|
||||||
@@ -1117,6 +1186,9 @@ void NavigatorTreeModel::notifyModelNodesMoved(const QList<ModelNode> &modelNode
|
|||||||
|
|
||||||
void NavigatorTreeModel::notifyModelReferenceNodesUpdated(const QList<ModelNode> &modelNodes)
|
void NavigatorTreeModel::notifyModelReferenceNodesUpdated(const QList<ModelNode> &modelNodes)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify model reference nodes updated",
|
||||||
|
category()};
|
||||||
|
|
||||||
for (const ModelNode &modelNode : modelNodes)
|
for (const ModelNode &modelNode : modelNodes)
|
||||||
m_rowReferenceCache.remove(modelNode);
|
m_rowReferenceCache.remove(modelNode);
|
||||||
|
|
||||||
@@ -1127,11 +1199,15 @@ void NavigatorTreeModel::notifyModelReferenceNodesUpdated(const QList<ModelNode>
|
|||||||
|
|
||||||
void NavigatorTreeModel::notifyIconsChanged()
|
void NavigatorTreeModel::notifyIconsChanged()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model notify icons changed", category()};
|
||||||
|
|
||||||
emit dataChanged(index(0, 0), index(rowCount(), 0), {Qt::DecorationRole});
|
emit dataChanged(index(0, 0), index(rowCount(), 0), {Qt::DecorationRole});
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorTreeModel::showReferences(bool show)
|
void NavigatorTreeModel::showReferences(bool show)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model show references", category()};
|
||||||
|
|
||||||
m_showReferenceItems = show;
|
m_showReferenceItems = show;
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -1139,6 +1215,8 @@ void NavigatorTreeModel::showReferences(bool show)
|
|||||||
|
|
||||||
void NavigatorTreeModel::setFilter(bool showOnlyVisibleItems)
|
void NavigatorTreeModel::setFilter(bool showOnlyVisibleItems)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model set filter", category()};
|
||||||
|
|
||||||
m_showOnlyVisibleItems = showOnlyVisibleItems;
|
m_showOnlyVisibleItems = showOnlyVisibleItems;
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -1146,6 +1224,8 @@ void NavigatorTreeModel::setFilter(bool showOnlyVisibleItems)
|
|||||||
|
|
||||||
void NavigatorTreeModel::setNameFilter(const QString &filter)
|
void NavigatorTreeModel::setNameFilter(const QString &filter)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model set name filter", category()};
|
||||||
|
|
||||||
m_nameFilter = filter;
|
m_nameFilter = filter;
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
|
|
||||||
@@ -1175,6 +1255,8 @@ void NavigatorTreeModel::setNameFilter(const QString &filter)
|
|||||||
|
|
||||||
void NavigatorTreeModel::setOrder(bool reverseItemOrder)
|
void NavigatorTreeModel::setOrder(bool reverseItemOrder)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model set order", category()};
|
||||||
|
|
||||||
m_reverseItemOrder = reverseItemOrder;
|
m_reverseItemOrder = reverseItemOrder;
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
resetModel();
|
resetModel();
|
||||||
@@ -1182,6 +1264,8 @@ void NavigatorTreeModel::setOrder(bool reverseItemOrder)
|
|||||||
|
|
||||||
void NavigatorTreeModel::resetModel()
|
void NavigatorTreeModel::resetModel()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model reset model", category()};
|
||||||
|
|
||||||
beginResetModel();
|
beginResetModel();
|
||||||
m_rowCache.clear();
|
m_rowCache.clear();
|
||||||
m_nodeIndexHash.clear();
|
m_nodeIndexHash.clear();
|
||||||
@@ -1192,16 +1276,22 @@ void NavigatorTreeModel::resetModel()
|
|||||||
|
|
||||||
void NavigatorTreeModel::updateToolTipPixmap(const ModelNode &node, const QPixmap &pixmap)
|
void NavigatorTreeModel::updateToolTipPixmap(const ModelNode &node, const QPixmap &pixmap)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model update tool tip pixmap", category()};
|
||||||
|
|
||||||
emit toolTipPixmapUpdated(node.id(), pixmap);
|
emit toolTipPixmapUpdated(node.id(), pixmap);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NavigatorTreeModel::isReferenceNodesVisible() const
|
bool NavigatorTreeModel::isReferenceNodesVisible() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model is reference nodes visible", category()};
|
||||||
|
|
||||||
return m_showReferenceItems;
|
return m_showReferenceItems;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NavigatorTreeModel::canBeReference(const ModelNode &modelNode) const
|
bool NavigatorTreeModel::canBeReference(const ModelNode &modelNode) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model can be reference", category()};
|
||||||
|
|
||||||
return modelNode.hasMetaInfo();
|
return modelNode.hasMetaInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1209,6 +1299,8 @@ QModelIndex NavigatorTreeModel::createReferenceIndex(int row,
|
|||||||
int column,
|
int column,
|
||||||
const ReferenceData &referenceData) const
|
const ReferenceData &referenceData) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model create reference index", category()};
|
||||||
|
|
||||||
const QString uniqueId = QString("%1-%2-%3")
|
const QString uniqueId = QString("%1-%2-%3")
|
||||||
.arg(referenceData.owner.internalId())
|
.arg(referenceData.owner.internalId())
|
||||||
.arg(referenceData.current.internalId())
|
.arg(referenceData.current.internalId())
|
||||||
@@ -1226,6 +1318,8 @@ QModelIndex NavigatorTreeModel::createReferenceIndex(int row,
|
|||||||
|
|
||||||
void NavigatorTreeModel::resetReferences()
|
void NavigatorTreeModel::resetReferences()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model reset references", category()};
|
||||||
|
|
||||||
m_rowReferenceCache.clear();
|
m_rowReferenceCache.clear();
|
||||||
m_referenceIndexHash.clear();
|
m_referenceIndexHash.clear();
|
||||||
m_referenceUnique.clear();
|
m_referenceUnique.clear();
|
||||||
@@ -1235,6 +1329,8 @@ void NavigatorTreeModel::resetReferences()
|
|||||||
|
|
||||||
QList<ModelNode> NavigatorTreeModel::referenceList(const QList<BindingProperty> &bindingProperties, const QList<ModelNode> &unwanted) const
|
QList<ModelNode> NavigatorTreeModel::referenceList(const QList<BindingProperty> &bindingProperties, const QList<ModelNode> &unwanted) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model reference list", category()};
|
||||||
|
|
||||||
if (bindingProperties.isEmpty())
|
if (bindingProperties.isEmpty())
|
||||||
return {};
|
return {};
|
||||||
|
|
||||||
@@ -1261,17 +1357,23 @@ QList<ModelNode> NavigatorTreeModel::referenceList(const QList<BindingProperty>
|
|||||||
|
|
||||||
bool NavigatorTreeModel::isReference(const QModelIndex &index) const
|
bool NavigatorTreeModel::isReference(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model is reference", category()};
|
||||||
|
|
||||||
return m_references.contains(index.internalId());
|
return m_references.contains(index.internalId());
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelNode NavigatorTreeModel::referenceExtractCurrent(const QModelIndex &index) const
|
ModelNode NavigatorTreeModel::referenceExtractCurrent(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model reference extract current", category()};
|
||||||
|
|
||||||
Q_ASSERT(isReference(index));
|
Q_ASSERT(isReference(index));
|
||||||
return m_references[index.internalId()].current;
|
return m_references[index.internalId()].current;
|
||||||
}
|
}
|
||||||
|
|
||||||
ModelNode NavigatorTreeModel::referenceExtractOwner(const QModelIndex &index) const
|
ModelNode NavigatorTreeModel::referenceExtractOwner(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree model reference extract owner", category()};
|
||||||
|
|
||||||
Q_ASSERT(isReference(index));
|
Q_ASSERT(isReference(index));
|
||||||
return m_references[index.internalId()].owner;
|
return m_references[index.internalId()].owner;
|
||||||
}
|
}
|
||||||
|
@@ -3,13 +3,14 @@
|
|||||||
|
|
||||||
#include "navigatortreeview.h"
|
#include "navigatortreeview.h"
|
||||||
|
|
||||||
|
#include "navigatortracing.h"
|
||||||
|
#include "navigatortreemodel.h"
|
||||||
|
#include "navigatorview.h"
|
||||||
|
#include "previewtooltip.h"
|
||||||
|
|
||||||
#include <qmath.h>
|
#include <qmath.h>
|
||||||
|
|
||||||
#include "modelnode.h"
|
#include <modelnode.h>
|
||||||
#include "navigatorview.h"
|
|
||||||
#include "navigatortreemodel.h"
|
|
||||||
#include "qproxystyle.h"
|
|
||||||
#include "previewtooltip.h"
|
|
||||||
|
|
||||||
#include <qmldesignerbase/studio/studiostyle.h>
|
#include <qmldesignerbase/studio/studiostyle.h>
|
||||||
|
|
||||||
@@ -18,19 +19,22 @@
|
|||||||
#include <utils/icon.h>
|
#include <utils/icon.h>
|
||||||
#include <utils/utilsicons.h>
|
#include <utils/utilsicons.h>
|
||||||
|
|
||||||
#include <QLineEdit>
|
#include <qproxystyle.h>
|
||||||
#include <QPen>
|
|
||||||
#include <QPixmapCache>
|
|
||||||
#include <QMouseEvent>
|
|
||||||
#include <QPainter>
|
|
||||||
#include <QStyleFactory>
|
|
||||||
#include <QEvent>
|
#include <QEvent>
|
||||||
#include <QImage>
|
#include <QImage>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QPen>
|
||||||
|
#include <QPixmapCache>
|
||||||
|
#include <QStyleFactory>
|
||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
|
auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
// This style basically allows us to span the entire row
|
// This style basically allows us to span the entire row
|
||||||
// including the arrow indicators which would otherwise not be
|
// including the arrow indicators which would otherwise not be
|
||||||
// drawn by the delegate
|
// drawn by the delegate
|
||||||
@@ -40,6 +44,8 @@ public:
|
|||||||
TableViewStyle(QObject *parent)
|
TableViewStyle(QObject *parent)
|
||||||
: QProxyStyle(new StudioStyle("fusion"))
|
: QProxyStyle(new StudioStyle("fusion"))
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style constructor", category()};
|
||||||
|
|
||||||
setParent(parent);
|
setParent(parent);
|
||||||
baseStyle()->setParent(parent);
|
baseStyle()->setParent(parent);
|
||||||
}
|
}
|
||||||
@@ -49,6 +55,8 @@ public:
|
|||||||
QPainter *painter,
|
QPainter *painter,
|
||||||
const QWidget *widget = nullptr) const override
|
const QWidget *widget = nullptr) const override
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style draw primitive", category()};
|
||||||
|
|
||||||
static QRect mouseOverStateSavedFrameRectangle;
|
static QRect mouseOverStateSavedFrameRectangle;
|
||||||
if (element == QStyle::PE_PanelItemViewRow) {
|
if (element == QStyle::PE_PanelItemViewRow) {
|
||||||
if (option->state & QStyle::State_MouseOver)
|
if (option->state & QStyle::State_MouseOver)
|
||||||
@@ -136,6 +144,8 @@ public:
|
|||||||
const QWidget *widget = nullptr,
|
const QWidget *widget = nullptr,
|
||||||
QStyleHintReturn *returnData = nullptr) const override
|
QStyleHintReturn *returnData = nullptr) const override
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style style hint", category()};
|
||||||
|
|
||||||
if (hint == SH_ItemView_ShowDecorationSelected)
|
if (hint == SH_ItemView_ShowDecorationSelected)
|
||||||
return 0;
|
return 0;
|
||||||
else
|
else
|
||||||
@@ -145,12 +155,16 @@ public:
|
|||||||
private: // functions
|
private: // functions
|
||||||
QColor highlightBrushColor() const
|
QColor highlightBrushColor() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style highlight brush color", category()};
|
||||||
|
|
||||||
QColor color = Theme::getColor(Theme::Color::DSnavigatorDropIndicatorBackground);
|
QColor color = Theme::getColor(Theme::Color::DSnavigatorDropIndicatorBackground);
|
||||||
color.setAlphaF(0.7f);
|
color.setAlphaF(0.7f);
|
||||||
return color;
|
return color;
|
||||||
}
|
}
|
||||||
QColor highlightLineColor() const
|
QColor highlightLineColor() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style highlight line color", category()};
|
||||||
|
|
||||||
QColor color = Theme::getColor(Theme::Color::DSnavigatorDropIndicatorOutline);
|
QColor color = Theme::getColor(Theme::Color::DSnavigatorDropIndicatorOutline);
|
||||||
color.setAlphaF(0.7f);
|
color.setAlphaF(0.7f);
|
||||||
return color;
|
return color;
|
||||||
@@ -158,6 +172,8 @@ private: // functions
|
|||||||
|
|
||||||
void drawHighlightFrame(const QRect &frameRectangle, QPainter *painter) const
|
void drawHighlightFrame(const QRect &frameRectangle, QPainter *painter) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style draw highlight frame", category()};
|
||||||
|
|
||||||
painter->setPen(QPen(highlightLineColor(), 2));
|
painter->setPen(QPen(highlightLineColor(), 2));
|
||||||
painter->setBrush(highlightBrushColor());
|
painter->setBrush(highlightBrushColor());
|
||||||
painter->drawRect(frameRectangle);
|
painter->drawRect(frameRectangle);
|
||||||
@@ -165,12 +181,16 @@ private: // functions
|
|||||||
|
|
||||||
void drawIndicatorLine(const QPoint &leftPoint, const QPoint &rightPoint, QPainter *painter) const
|
void drawIndicatorLine(const QPoint &leftPoint, const QPoint &rightPoint, QPainter *painter) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style draw indicator line", category()};
|
||||||
|
|
||||||
painter->setPen(QPen(highlightLineColor(), 3));
|
painter->setPen(QPen(highlightLineColor(), 3));
|
||||||
painter->drawLine(leftPoint, rightPoint);
|
painter->drawLine(leftPoint, rightPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
QRect adjustedRectangleToWidgetWidth(const QRect &originalRectangle, const QWidget *widget) const
|
QRect adjustedRectangleToWidgetWidth(const QRect &originalRectangle, const QWidget *widget) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"table view style adjusted rectangle to widget width", category()};
|
||||||
|
|
||||||
QRect adjustesRectangle = originalRectangle;
|
QRect adjustesRectangle = originalRectangle;
|
||||||
adjustesRectangle.setLeft(0);
|
adjustesRectangle.setLeft(0);
|
||||||
adjustesRectangle.setWidth(widget->rect().width());
|
adjustesRectangle.setWidth(widget->rect().width());
|
||||||
@@ -185,6 +205,8 @@ private: // variables
|
|||||||
NavigatorTreeView::NavigatorTreeView(QWidget *parent)
|
NavigatorTreeView::NavigatorTreeView(QWidget *parent)
|
||||||
: QTreeView(parent)
|
: QTreeView(parent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view constructor", category()};
|
||||||
|
|
||||||
setStyle(new TableViewStyle(this));
|
setStyle(new TableViewStyle(this));
|
||||||
setMinimumWidth(240);
|
setMinimumWidth(240);
|
||||||
setRootIsDecorated(false);
|
setRootIsDecorated(false);
|
||||||
@@ -194,6 +216,8 @@ NavigatorTreeView::NavigatorTreeView(QWidget *parent)
|
|||||||
|
|
||||||
void NavigatorTreeView::drawSelectionBackground(QPainter *painter, const QStyleOption &option)
|
void NavigatorTreeView::drawSelectionBackground(QPainter *painter, const QStyleOption &option)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view draw selection background", category()};
|
||||||
|
|
||||||
painter->save();
|
painter->save();
|
||||||
painter->fillRect(option.rect.adjusted(0, delegateMargin, 0, -delegateMargin),
|
painter->fillRect(option.rect.adjusted(0, delegateMargin, 0, -delegateMargin),
|
||||||
Theme::getColor(Theme::Color::DSnavigatorItemBackgroundSelected));
|
Theme::getColor(Theme::Color::DSnavigatorItemBackgroundSelected));
|
||||||
@@ -202,6 +226,8 @@ void NavigatorTreeView::drawSelectionBackground(QPainter *painter, const QStyleO
|
|||||||
|
|
||||||
bool NavigatorTreeView::viewportEvent(QEvent *event)
|
bool NavigatorTreeView::viewportEvent(QEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view viewport event", category()};
|
||||||
|
|
||||||
const QPoint offset(10, 5);
|
const QPoint offset(10, 5);
|
||||||
|
|
||||||
if (event->type() == QEvent::ToolTip) {
|
if (event->type() == QEvent::ToolTip) {
|
||||||
@@ -260,6 +286,8 @@ bool NavigatorTreeView::viewportEvent(QEvent *event)
|
|||||||
|
|
||||||
void NavigatorTreeView::mousePressEvent(QMouseEvent *event)
|
void NavigatorTreeView::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view mouse press event", category()};
|
||||||
|
|
||||||
m_clickedIndex = indexAt(event->pos());
|
m_clickedIndex = indexAt(event->pos());
|
||||||
if (auto navModel = qobject_cast<NavigatorTreeModel *>(model())) {
|
if (auto navModel = qobject_cast<NavigatorTreeModel *>(model())) {
|
||||||
if (navModel->isReference(m_clickedIndex)) {
|
if (navModel->isReference(m_clickedIndex)) {
|
||||||
@@ -279,6 +307,8 @@ void NavigatorTreeView::mousePressEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
void NavigatorTreeView::mouseReleaseEvent(QMouseEvent *event)
|
void NavigatorTreeView::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view mouse release event", category()};
|
||||||
|
|
||||||
const QModelIndex modelIndex = indexAt(event->pos());
|
const QModelIndex modelIndex = indexAt(event->pos());
|
||||||
if (m_clickedIndex == modelIndex) {
|
if (m_clickedIndex == modelIndex) {
|
||||||
if (auto navModel = qobject_cast<NavigatorTreeModel *>(model())) {
|
if (auto navModel = qobject_cast<NavigatorTreeModel *>(model())) {
|
||||||
@@ -299,6 +329,8 @@ void NavigatorTreeView::mouseReleaseEvent(QMouseEvent *event)
|
|||||||
|
|
||||||
void NavigatorTreeView::startDrag(Qt::DropActions supportedActions)
|
void NavigatorTreeView::startDrag(Qt::DropActions supportedActions)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator tree view start drag", category()};
|
||||||
|
|
||||||
if (m_dragAllowed) {
|
if (m_dragAllowed) {
|
||||||
if (m_previewToolTip) {
|
if (m_previewToolTip) {
|
||||||
// Workaround to ensure tooltip doesn't linger during drag, as drag grabs all mouse
|
// Workaround to ensure tooltip doesn't linger during drag, as drag grabs all mouse
|
||||||
|
@@ -5,6 +5,7 @@
|
|||||||
|
|
||||||
#include "iconcheckboxitemdelegate.h"
|
#include "iconcheckboxitemdelegate.h"
|
||||||
#include "nameitemdelegate.h"
|
#include "nameitemdelegate.h"
|
||||||
|
#include "navigatortracing.h"
|
||||||
#include "navigatortreemodel.h"
|
#include "navigatortreemodel.h"
|
||||||
#include "navigatorwidget.h"
|
#include "navigatorwidget.h"
|
||||||
|
|
||||||
@@ -17,13 +18,13 @@
|
|||||||
#include <nodeinstanceview.h>
|
#include <nodeinstanceview.h>
|
||||||
#include <nodelistproperty.h>
|
#include <nodelistproperty.h>
|
||||||
#include <nodeproperty.h>
|
#include <nodeproperty.h>
|
||||||
#include <rewritingexception.h>
|
|
||||||
#include <theme.h>
|
|
||||||
#include <variantproperty.h>
|
|
||||||
#include <qmldesignerconstants.h>
|
#include <qmldesignerconstants.h>
|
||||||
#include <qmldesignericons.h>
|
#include <qmldesignericons.h>
|
||||||
#include <qmldesignerplugin.h>
|
#include <qmldesignerplugin.h>
|
||||||
#include <qmlitemnode.h>
|
#include <qmlitemnode.h>
|
||||||
|
#include <rewritingexception.h>
|
||||||
|
#include <theme.h>
|
||||||
|
#include <variantproperty.h>
|
||||||
|
|
||||||
#include <coreplugin/editormanager/editormanager.h>
|
#include <coreplugin/editormanager/editormanager.h>
|
||||||
#include <coreplugin/icore.h>
|
#include <coreplugin/icore.h>
|
||||||
@@ -42,6 +43,8 @@
|
|||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
|
|
||||||
|
static auto category = QmlDesigner::NavigatorTracing::category;
|
||||||
|
|
||||||
inline static void setScenePos(const QmlDesigner::ModelNode &modelNode, const QPointF &pos)
|
inline static void setScenePos(const QmlDesigner::ModelNode &modelNode, const QPointF &pos)
|
||||||
{
|
{
|
||||||
if (modelNode.hasParentProperty() && QmlDesigner::QmlItemNode::isValidQmlItemNode(modelNode.parentProperty().parentModelNode())) {
|
if (modelNode.hasParentProperty() && QmlDesigner::QmlItemNode::isValidQmlItemNode(modelNode.parentProperty().parentModelNode())) {
|
||||||
@@ -94,22 +97,28 @@ NavigatorView::NavigatorView(ExternalDependenciesInterface &externalDependencies
|
|||||||
: AbstractView{externalDependencies}
|
: AbstractView{externalDependencies}
|
||||||
, m_blockSelectionChangedSignal(false)
|
, m_blockSelectionChangedSignal(false)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view constructor", category()};
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigatorView::~NavigatorView()
|
NavigatorView::~NavigatorView()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view destructor", category()};
|
||||||
|
|
||||||
if (m_widget && !m_widget->parent())
|
if (m_widget && !m_widget->parent())
|
||||||
delete m_widget.data();
|
delete m_widget.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool NavigatorView::hasWidget() const
|
bool NavigatorView::hasWidget() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view has widget", category()};
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
WidgetInfo NavigatorView::widgetInfo()
|
WidgetInfo NavigatorView::widgetInfo()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view widget info", category()};
|
||||||
|
|
||||||
if (!m_widget)
|
if (!m_widget)
|
||||||
setupWidget();
|
setupWidget();
|
||||||
|
|
||||||
@@ -122,6 +131,8 @@ WidgetInfo NavigatorView::widgetInfo()
|
|||||||
|
|
||||||
void NavigatorView::modelAttached(Model *model)
|
void NavigatorView::modelAttached(Model *model)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view model attached", category()};
|
||||||
|
|
||||||
AbstractView::modelAttached(model);
|
AbstractView::modelAttached(model);
|
||||||
|
|
||||||
QTreeView *treeView = treeWidget();
|
QTreeView *treeView = treeWidget();
|
||||||
@@ -185,6 +196,8 @@ void NavigatorView::modelAttached(Model *model)
|
|||||||
|
|
||||||
void NavigatorView::clearExplorerWarnings()
|
void NavigatorView::clearExplorerWarnings()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view clear explorer warnings", category()};
|
||||||
|
|
||||||
QList<ModelNode> allNodes;
|
QList<ModelNode> allNodes;
|
||||||
allNodes.append(rootModelNode());
|
allNodes.append(rootModelNode());
|
||||||
allNodes.append(rootModelNode().allSubModelNodes());
|
allNodes.append(rootModelNode().allSubModelNodes());
|
||||||
@@ -199,6 +212,8 @@ void NavigatorView::clearExplorerWarnings()
|
|||||||
|
|
||||||
void NavigatorView::modelAboutToBeDetached(Model *model)
|
void NavigatorView::modelAboutToBeDetached(Model *model)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view model about to be detached", category()};
|
||||||
|
|
||||||
QHash<QString, bool> &localExpandMap = m_expandMap[model->fileUrl()];
|
QHash<QString, bool> &localExpandMap = m_expandMap[model->fileUrl()];
|
||||||
|
|
||||||
// If detaching full document model, recreate expand map from scratch to remove stale entries.
|
// If detaching full document model, recreate expand map from scratch to remove stale entries.
|
||||||
@@ -241,12 +256,16 @@ void NavigatorView::modelAboutToBeDetached(Model *model)
|
|||||||
|
|
||||||
void NavigatorView::importsChanged(const Imports &/*addedImports*/, const Imports &/*removedImports*/)
|
void NavigatorView::importsChanged(const Imports &/*addedImports*/, const Imports &/*removedImports*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view imports changed", category()};
|
||||||
|
|
||||||
treeWidget()->update();
|
treeWidget()->update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::bindingPropertiesChanged(const QList<BindingProperty> &propertyList,
|
void NavigatorView::bindingPropertiesChanged(const QList<BindingProperty> &propertyList,
|
||||||
PropertyChangeFlags /*propertyChange*/)
|
PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view binding properties changed", category()};
|
||||||
|
|
||||||
QSet<ModelNode> owners;
|
QSet<ModelNode> owners;
|
||||||
|
|
||||||
for (const BindingProperty &bindingProperty : propertyList) {
|
for (const BindingProperty &bindingProperty : propertyList) {
|
||||||
@@ -274,6 +293,8 @@ void NavigatorView::bindingPropertiesChanged(const QList<BindingProperty> &prope
|
|||||||
|
|
||||||
void NavigatorView::dragStarted(QMimeData *mimeData)
|
void NavigatorView::dragStarted(QMimeData *mimeData)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view drag started", category()};
|
||||||
|
|
||||||
if (mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) {
|
if (mimeData->hasFormat(Constants::MIME_TYPE_ITEM_LIBRARY_INFO)) {
|
||||||
QByteArray data = mimeData->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);
|
QByteArray data = mimeData->data(Constants::MIME_TYPE_ITEM_LIBRARY_INFO);
|
||||||
QDataStream stream(data);
|
QDataStream stream(data);
|
||||||
@@ -345,6 +366,8 @@ void NavigatorView::dragStarted(QMimeData *mimeData)
|
|||||||
|
|
||||||
void NavigatorView::dragEnded()
|
void NavigatorView::dragEnded()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view drag ended", category()};
|
||||||
|
|
||||||
m_widget->setDragType("");
|
m_widget->setDragType("");
|
||||||
m_widget->update();
|
m_widget->update();
|
||||||
}
|
}
|
||||||
@@ -354,12 +377,16 @@ void NavigatorView::customNotification([[maybe_unused]] const AbstractView *view
|
|||||||
[[maybe_unused]] const QList<ModelNode> &nodeList,
|
[[maybe_unused]] const QList<ModelNode> &nodeList,
|
||||||
[[maybe_unused]] const QList<QVariant> &data)
|
[[maybe_unused]] const QList<QVariant> &data)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view custom notification", category()};
|
||||||
|
|
||||||
if (identifier == "asset_import_update")
|
if (identifier == "asset_import_update")
|
||||||
m_currentModelInterface->notifyIconsChanged();
|
m_currentModelInterface->notifyIconsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::handleChangedExport(const ModelNode &modelNode, bool exported)
|
void NavigatorView::handleChangedExport(const ModelNode &modelNode, bool exported)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view handle changed export", category()};
|
||||||
|
|
||||||
const ModelNode rootNode = rootModelNode();
|
const ModelNode rootNode = rootModelNode();
|
||||||
Q_ASSERT(rootNode.isValid());
|
Q_ASSERT(rootNode.isValid());
|
||||||
const PropertyName modelNodeId = modelNode.id().toUtf8();
|
const PropertyName modelNodeId = modelNode.id().toUtf8();
|
||||||
@@ -375,17 +402,23 @@ void NavigatorView::handleChangedExport(const ModelNode &modelNode, bool exporte
|
|||||||
|
|
||||||
bool NavigatorView::isNodeInvisible(const ModelNode &modelNode) const
|
bool NavigatorView::isNodeInvisible(const ModelNode &modelNode) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view is node invisible", category()};
|
||||||
|
|
||||||
return QmlVisualNode(modelNode).visibilityOverride();
|
return QmlVisualNode(modelNode).visibilityOverride();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::disableWidget()
|
void NavigatorView::disableWidget()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view disable widget", category()};
|
||||||
|
|
||||||
if (m_widget)
|
if (m_widget)
|
||||||
m_widget->disableNavigator();
|
m_widget->disableNavigator();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::enableWidget()
|
void NavigatorView::enableWidget()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view enable widget", category()};
|
||||||
|
|
||||||
if (m_widget)
|
if (m_widget)
|
||||||
m_widget->enableNavigator();
|
m_widget->enableNavigator();
|
||||||
}
|
}
|
||||||
@@ -394,6 +427,8 @@ void NavigatorView::modelNodePreviewPixmapChanged(const ModelNode &node,
|
|||||||
const QPixmap &pixmap,
|
const QPixmap &pixmap,
|
||||||
const QByteArray &requestId)
|
const QByteArray &requestId)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view model node preview pixmap changed", category()};
|
||||||
|
|
||||||
// There might be multiple requests for different preview pixmap sizes.
|
// There might be multiple requests for different preview pixmap sizes.
|
||||||
// Here only the one with the default size is picked.
|
// Here only the one with the default size is picked.
|
||||||
if (requestId.isEmpty())
|
if (requestId.isEmpty())
|
||||||
@@ -402,6 +437,8 @@ void NavigatorView::modelNodePreviewPixmapChanged(const ModelNode &node,
|
|||||||
|
|
||||||
ModelNode NavigatorView::modelNodeForIndex(const QModelIndex &modelIndex) const
|
ModelNode NavigatorView::modelNodeForIndex(const QModelIndex &modelIndex) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view model node for index", category()};
|
||||||
|
|
||||||
return modelIndex.model()->data(modelIndex, ModelNodeRole).value<ModelNode>();
|
return modelIndex.model()->data(modelIndex, ModelNodeRole).value<ModelNode>();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -413,6 +450,8 @@ void NavigatorView::nodeRemoved(const ModelNode &removedNode,
|
|||||||
const NodeAbstractProperty & /*parentProperty*/,
|
const NodeAbstractProperty & /*parentProperty*/,
|
||||||
AbstractView::PropertyChangeFlags /*propertyChange*/)
|
AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view node removed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyModelNodesRemoved({removedNode});
|
m_currentModelInterface->notifyModelNodesRemoved({removedNode});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -421,6 +460,8 @@ void NavigatorView::nodeReparented(const ModelNode &modelNode,
|
|||||||
const NodeAbstractProperty & oldPropertyParent,
|
const NodeAbstractProperty & oldPropertyParent,
|
||||||
AbstractView::PropertyChangeFlags /*propertyChange*/)
|
AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view node reparented", category()};
|
||||||
|
|
||||||
if (!oldPropertyParent.isValid())
|
if (!oldPropertyParent.isValid())
|
||||||
m_currentModelInterface->notifyModelNodesInserted({modelNode});
|
m_currentModelInterface->notifyModelNodesInserted({modelNode});
|
||||||
else
|
else
|
||||||
@@ -433,6 +474,8 @@ void NavigatorView::nodeReparented(const ModelNode &modelNode,
|
|||||||
|
|
||||||
void NavigatorView::nodeIdChanged(const ModelNode& modelNode, const QString & /*newId*/, const QString & /*oldId*/)
|
void NavigatorView::nodeIdChanged(const ModelNode& modelNode, const QString & /*newId*/, const QString & /*oldId*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view node id changed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyDataChanged(modelNode);
|
m_currentModelInterface->notifyDataChanged(modelNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -442,6 +485,8 @@ void NavigatorView::propertiesAboutToBeRemoved(const QList<AbstractProperty> &/*
|
|||||||
|
|
||||||
void NavigatorView::propertiesRemoved(const QList<AbstractProperty> &propertyList)
|
void NavigatorView::propertiesRemoved(const QList<AbstractProperty> &propertyList)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view properties removed", category()};
|
||||||
|
|
||||||
QList<ModelNode> modelNodes;
|
QList<ModelNode> modelNodes;
|
||||||
for (const AbstractProperty &property : propertyList) {
|
for (const AbstractProperty &property : propertyList) {
|
||||||
if (property.isNodeAbstractProperty()) {
|
if (property.isNodeAbstractProperty()) {
|
||||||
@@ -455,11 +500,15 @@ void NavigatorView::propertiesRemoved(const QList<AbstractProperty> &propertyLis
|
|||||||
|
|
||||||
void NavigatorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/)
|
void NavigatorView::rootNodeTypeChanged(const QString &/*type*/, int /*majorVersion*/, int /*minorVersion*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view root node type changed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyDataChanged(rootModelNode());
|
m_currentModelInterface->notifyDataChanged(rootModelNode());
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::nodeTypeChanged(const ModelNode &modelNode, const TypeName &, int , int)
|
void NavigatorView::nodeTypeChanged(const ModelNode &modelNode, const TypeName &, int , int)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view node type changed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyDataChanged(modelNode);
|
m_currentModelInterface->notifyDataChanged(modelNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,6 +516,8 @@ void NavigatorView::auxiliaryDataChanged(const ModelNode &modelNode,
|
|||||||
[[maybe_unused]] AuxiliaryDataKeyView key,
|
[[maybe_unused]] AuxiliaryDataKeyView key,
|
||||||
[[maybe_unused]] const QVariant &data)
|
[[maybe_unused]] const QVariant &data)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view auxiliary data changed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyDataChanged(modelNode);
|
m_currentModelInterface->notifyDataChanged(modelNode);
|
||||||
|
|
||||||
if (key == lockedProperty) {
|
if (key == lockedProperty) {
|
||||||
@@ -479,6 +530,8 @@ void NavigatorView::auxiliaryDataChanged(const ModelNode &modelNode,
|
|||||||
|
|
||||||
void NavigatorView::instanceErrorChanged(const QVector<ModelNode> &errorNodeList)
|
void NavigatorView::instanceErrorChanged(const QVector<ModelNode> &errorNodeList)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view instance error changed", category()};
|
||||||
|
|
||||||
for (const ModelNode &modelNode : errorNodeList) {
|
for (const ModelNode &modelNode : errorNodeList) {
|
||||||
m_currentModelInterface->notifyDataChanged(modelNode);
|
m_currentModelInterface->notifyDataChanged(modelNode);
|
||||||
propagateInstanceErrorToExplorer(modelNode);
|
propagateInstanceErrorToExplorer(modelNode);
|
||||||
@@ -487,6 +540,8 @@ void NavigatorView::instanceErrorChanged(const QVector<ModelNode> &errorNodeList
|
|||||||
|
|
||||||
void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty)
|
void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view node order changed", category()};
|
||||||
|
|
||||||
m_currentModelInterface->notifyModelNodesMoved(listProperty.directSubNodes());
|
m_currentModelInterface->notifyModelNodesMoved(listProperty.directSubNodes());
|
||||||
|
|
||||||
// make sure selection is in sync again
|
// make sure selection is in sync again
|
||||||
@@ -495,6 +550,8 @@ void NavigatorView::nodeOrderChanged(const NodeListProperty &listProperty)
|
|||||||
|
|
||||||
void NavigatorView::changeToComponent(const QModelIndex &index)
|
void NavigatorView::changeToComponent(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view change to component", category()};
|
||||||
|
|
||||||
if (index.isValid() && currentModel()->data(index, Qt::UserRole).isValid()) {
|
if (index.isValid() && currentModel()->data(index, Qt::UserRole).isValid()) {
|
||||||
const ModelNode doubleClickNode = modelNodeForIndex(index);
|
const ModelNode doubleClickNode = modelNodeForIndex(index);
|
||||||
if (doubleClickNode.metaInfo().isFileComponent())
|
if (doubleClickNode.metaInfo().isFileComponent())
|
||||||
@@ -507,16 +564,22 @@ void NavigatorView::changeToComponent(const QModelIndex &index)
|
|||||||
|
|
||||||
QModelIndex NavigatorView::indexForModelNode(const ModelNode &modelNode) const
|
QModelIndex NavigatorView::indexForModelNode(const ModelNode &modelNode) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view index for model node", category()};
|
||||||
|
|
||||||
return m_currentModelInterface->indexForModelNode(modelNode);
|
return m_currentModelInterface->indexForModelNode(modelNode);
|
||||||
}
|
}
|
||||||
|
|
||||||
QAbstractItemModel *NavigatorView::currentModel() const
|
QAbstractItemModel *NavigatorView::currentModel() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view current model", category()};
|
||||||
|
|
||||||
return treeWidget()->model();
|
return treeWidget()->model();
|
||||||
}
|
}
|
||||||
|
|
||||||
const ProjectExplorer::FileNode *NavigatorView::fileNodeForModelNode(const ModelNode &node) const
|
const ProjectExplorer::FileNode *NavigatorView::fileNodeForModelNode(const ModelNode &node) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view file node for model node", category()};
|
||||||
|
|
||||||
QString filename = ModelUtils::componentFilePath(node);
|
QString filename = ModelUtils::componentFilePath(node);
|
||||||
Utils::FilePath filePath = Utils::FilePath::fromString(filename);
|
Utils::FilePath filePath = Utils::FilePath::fromString(filename);
|
||||||
ProjectExplorer::Project *currentProject = ProjectExplorer::ProjectManager::projectForFile(
|
ProjectExplorer::Project *currentProject = ProjectExplorer::ProjectManager::projectForFile(
|
||||||
@@ -539,6 +602,8 @@ const ProjectExplorer::FileNode *NavigatorView::fileNodeForModelNode(const Model
|
|||||||
|
|
||||||
const ProjectExplorer::FileNode *NavigatorView::fileNodeForIndex(const QModelIndex &index) const
|
const ProjectExplorer::FileNode *NavigatorView::fileNodeForIndex(const QModelIndex &index) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view file node for index", category()};
|
||||||
|
|
||||||
if (index.isValid() && currentModel()->data(index, Qt::UserRole).isValid()) {
|
if (index.isValid() && currentModel()->data(index, Qt::UserRole).isValid()) {
|
||||||
ModelNode node = modelNodeForIndex(index);
|
ModelNode node = modelNodeForIndex(index);
|
||||||
if (node.metaInfo().isFileComponent()) {
|
if (node.metaInfo().isFileComponent()) {
|
||||||
@@ -549,8 +614,11 @@ const ProjectExplorer::FileNode *NavigatorView::fileNodeForIndex(const QModelInd
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::propagateInstanceErrorToExplorer(const ModelNode &modelNode) {
|
void NavigatorView::propagateInstanceErrorToExplorer(const ModelNode &modelNode)
|
||||||
QModelIndex index = indexForModelNode(modelNode);;
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view propagate instance error to explorer", category()};
|
||||||
|
|
||||||
|
QModelIndex index = indexForModelNode(modelNode);
|
||||||
|
|
||||||
do {
|
do {
|
||||||
const ProjectExplorer::FileNode *fnode = fileNodeForIndex(index);
|
const ProjectExplorer::FileNode *fnode = fileNodeForIndex(index);
|
||||||
@@ -566,6 +634,8 @@ void NavigatorView::propagateInstanceErrorToExplorer(const ModelNode &modelNode)
|
|||||||
|
|
||||||
void NavigatorView::leftButtonClicked()
|
void NavigatorView::leftButtonClicked()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view left button clicked", category()};
|
||||||
|
|
||||||
if (selectedModelNodes().size() > 1)
|
if (selectedModelNodes().size() > 1)
|
||||||
return; //Semantics are unclear for multi selection.
|
return; //Semantics are unclear for multi selection.
|
||||||
|
|
||||||
@@ -590,6 +660,8 @@ void NavigatorView::leftButtonClicked()
|
|||||||
|
|
||||||
void NavigatorView::rightButtonClicked()
|
void NavigatorView::rightButtonClicked()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view right button clicked", category()};
|
||||||
|
|
||||||
if (selectedModelNodes().size() > 1)
|
if (selectedModelNodes().size() > 1)
|
||||||
return; //Semantics are unclear for multi selection.
|
return; //Semantics are unclear for multi selection.
|
||||||
|
|
||||||
@@ -634,6 +706,8 @@ void NavigatorView::rightButtonClicked()
|
|||||||
|
|
||||||
void NavigatorView::upButtonClicked()
|
void NavigatorView::upButtonClicked()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view up button clicked", category()};
|
||||||
|
|
||||||
bool blocked = blockSelectionChangedSignal(true);
|
bool blocked = blockSelectionChangedSignal(true);
|
||||||
bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool();
|
bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool();
|
||||||
|
|
||||||
@@ -648,6 +722,8 @@ void NavigatorView::upButtonClicked()
|
|||||||
|
|
||||||
void NavigatorView::downButtonClicked()
|
void NavigatorView::downButtonClicked()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view down button clicked", category()};
|
||||||
|
|
||||||
bool blocked = blockSelectionChangedSignal(true);
|
bool blocked = blockSelectionChangedSignal(true);
|
||||||
bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool();
|
bool reverse = QmlDesignerPlugin::settings().value(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER).toBool();
|
||||||
|
|
||||||
@@ -662,12 +738,16 @@ void NavigatorView::downButtonClicked()
|
|||||||
|
|
||||||
void NavigatorView::colorizeToggled(bool flag)
|
void NavigatorView::colorizeToggled(bool flag)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view colorize toggled", category()};
|
||||||
|
|
||||||
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_COLORIZE_ICONS, flag);
|
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_COLORIZE_ICONS, flag);
|
||||||
m_currentModelInterface->notifyIconsChanged();
|
m_currentModelInterface->notifyIconsChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::referenceToggled(bool flag)
|
void NavigatorView::referenceToggled(bool flag)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view reference toggled", category()};
|
||||||
|
|
||||||
m_currentModelInterface->showReferences(flag);
|
m_currentModelInterface->showReferences(flag);
|
||||||
treeWidget()->expandAll();
|
treeWidget()->expandAll();
|
||||||
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_SHOW_REFERENCE_NODES, flag);
|
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_SHOW_REFERENCE_NODES, flag);
|
||||||
@@ -675,6 +755,8 @@ void NavigatorView::referenceToggled(bool flag)
|
|||||||
|
|
||||||
void NavigatorView::filterToggled(bool flag)
|
void NavigatorView::filterToggled(bool flag)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view filter toggled", category()};
|
||||||
|
|
||||||
m_currentModelInterface->setFilter(flag);
|
m_currentModelInterface->setFilter(flag);
|
||||||
treeWidget()->expandAll();
|
treeWidget()->expandAll();
|
||||||
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS, flag);
|
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_SHOW_ONLY_VISIBLE_ITEMS, flag);
|
||||||
@@ -682,6 +764,8 @@ void NavigatorView::filterToggled(bool flag)
|
|||||||
|
|
||||||
void NavigatorView::reverseOrderToggled(bool flag)
|
void NavigatorView::reverseOrderToggled(bool flag)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view reverse order toggled", category()};
|
||||||
|
|
||||||
m_currentModelInterface->setOrder(flag);
|
m_currentModelInterface->setOrder(flag);
|
||||||
treeWidget()->expandAll();
|
treeWidget()->expandAll();
|
||||||
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER, flag);
|
QmlDesignerPlugin::settings().insert(DesignerSettingsKey::NAVIGATOR_REVERSE_ITEM_ORDER, flag);
|
||||||
@@ -689,12 +773,16 @@ void NavigatorView::reverseOrderToggled(bool flag)
|
|||||||
|
|
||||||
void NavigatorView::textFilterChanged(const QString &text)
|
void NavigatorView::textFilterChanged(const QString &text)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view text filter changed", category()};
|
||||||
|
|
||||||
m_treeModel->setNameFilter(text);
|
m_treeModel->setNameFilter(text);
|
||||||
treeWidget()->expandAll();
|
treeWidget()->expandAll();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::changeSelection(const QItemSelection & /*newSelection*/, const QItemSelection &/*deselected*/)
|
void NavigatorView::changeSelection(const QItemSelection & /*newSelection*/, const QItemSelection &/*deselected*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view change selection", category()};
|
||||||
|
|
||||||
if (m_blockSelectionChangedSignal)
|
if (m_blockSelectionChangedSignal)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -713,12 +801,16 @@ void NavigatorView::changeSelection(const QItemSelection & /*newSelection*/, con
|
|||||||
|
|
||||||
void NavigatorView::selectedNodesChanged(const QList<ModelNode> &/*selectedNodeList*/, const QList<ModelNode> &/*lastSelectedNodeList*/)
|
void NavigatorView::selectedNodesChanged(const QList<ModelNode> &/*selectedNodeList*/, const QList<ModelNode> &/*lastSelectedNodeList*/)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view selected nodes changed", category()};
|
||||||
|
|
||||||
// Update selection asynchronously to ensure NavigatorTreeModel's index cache is up to date
|
// Update selection asynchronously to ensure NavigatorTreeModel's index cache is up to date
|
||||||
QTimer::singleShot(0, this, &NavigatorView::updateItemSelection);
|
QTimer::singleShot(0, this, &NavigatorView::updateItemSelection);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorView::updateItemSelection()
|
void NavigatorView::updateItemSelection()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view update item selection", category()};
|
||||||
|
|
||||||
if (!isAttached())
|
if (!isAttached())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@@ -761,6 +853,7 @@ void NavigatorView::updateItemSelection()
|
|||||||
|
|
||||||
QTreeView *NavigatorView::treeWidget() const
|
QTreeView *NavigatorView::treeWidget() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view tree widget", category()};
|
||||||
if (m_widget)
|
if (m_widget)
|
||||||
return m_widget->treeView();
|
return m_widget->treeView();
|
||||||
return nullptr;
|
return nullptr;
|
||||||
@@ -768,12 +861,16 @@ QTreeView *NavigatorView::treeWidget() const
|
|||||||
|
|
||||||
NavigatorTreeModel *NavigatorView::treeModel()
|
NavigatorTreeModel *NavigatorView::treeModel()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view tree model", category()};
|
||||||
|
|
||||||
return m_treeModel.data();
|
return m_treeModel.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
// along the lines of QObject::blockSignals
|
// along the lines of QObject::blockSignals
|
||||||
bool NavigatorView::blockSelectionChangedSignal(bool block)
|
bool NavigatorView::blockSelectionChangedSignal(bool block)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view block selection changed signal", category()};
|
||||||
|
|
||||||
bool oldValue = m_blockSelectionChangedSignal;
|
bool oldValue = m_blockSelectionChangedSignal;
|
||||||
m_blockSelectionChangedSignal = block;
|
m_blockSelectionChangedSignal = block;
|
||||||
return oldValue;
|
return oldValue;
|
||||||
@@ -781,6 +878,8 @@ bool NavigatorView::blockSelectionChangedSignal(bool block)
|
|||||||
|
|
||||||
void NavigatorView::expandAncestors(const QModelIndex &index)
|
void NavigatorView::expandAncestors(const QModelIndex &index)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view expand ancestors", category()};
|
||||||
|
|
||||||
QModelIndex currentIndex = index.parent();
|
QModelIndex currentIndex = index.parent();
|
||||||
while (currentIndex.isValid()) {
|
while (currentIndex.isValid()) {
|
||||||
if (!treeWidget()->isExpanded(currentIndex))
|
if (!treeWidget()->isExpanded(currentIndex))
|
||||||
@@ -791,6 +890,8 @@ void NavigatorView::expandAncestors(const QModelIndex &index)
|
|||||||
|
|
||||||
void NavigatorView::reparentAndCatch(NodeAbstractProperty property, const ModelNode &modelNode)
|
void NavigatorView::reparentAndCatch(NodeAbstractProperty property, const ModelNode &modelNode)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view reparent and catch", category()};
|
||||||
|
|
||||||
try {
|
try {
|
||||||
property.reparentHere(modelNode);
|
property.reparentHere(modelNode);
|
||||||
} catch (Exception &exception) {
|
} catch (Exception &exception) {
|
||||||
@@ -800,6 +901,8 @@ void NavigatorView::reparentAndCatch(NodeAbstractProperty property, const ModelN
|
|||||||
|
|
||||||
void NavigatorView::setupWidget()
|
void NavigatorView::setupWidget()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator view setup widget", category()};
|
||||||
|
|
||||||
m_widget = new NavigatorWidget(this);
|
m_widget = new NavigatorWidget(this);
|
||||||
m_treeModel = new NavigatorTreeModel(this);
|
m_treeModel = new NavigatorTreeModel(this);
|
||||||
m_treeModel->setView(this);
|
m_treeModel->setView(this);
|
||||||
|
@@ -1,8 +1,9 @@
|
|||||||
// Copyright (C) 2016 The Qt Company Ltd.
|
// Copyright (C) 2016 The Qt Company Ltd.
|
||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
#include "navigatorsearchwidget.h"
|
|
||||||
#include "navigatorwidget.h"
|
#include "navigatorwidget.h"
|
||||||
|
#include "navigatorsearchwidget.h"
|
||||||
|
#include "navigatortracing.h"
|
||||||
#include "navigatorview.h"
|
#include "navigatorview.h"
|
||||||
|
|
||||||
#include <designeractionmanager.h>
|
#include <designeractionmanager.h>
|
||||||
@@ -29,10 +30,14 @@ using namespace Core;
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
NavigatorWidget::NavigatorWidget(NavigatorView *view)
|
NavigatorWidget::NavigatorWidget(NavigatorView *view)
|
||||||
: m_treeView(new NavigatorTreeView)
|
: m_treeView(new NavigatorTreeView)
|
||||||
, m_navigatorView(view)
|
, m_navigatorView(view)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget constructor", category()};
|
||||||
|
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
|
|
||||||
m_treeView->setDragEnabled(true);
|
m_treeView->setDragEnabled(true);
|
||||||
@@ -77,16 +82,22 @@ NavigatorWidget::NavigatorWidget(NavigatorView *view)
|
|||||||
|
|
||||||
void NavigatorWidget::setTreeModel(QAbstractItemModel *model)
|
void NavigatorWidget::setTreeModel(QAbstractItemModel *model)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget set tree model", category()};
|
||||||
|
|
||||||
m_treeView->setModel(model);
|
m_treeView->setModel(model);
|
||||||
}
|
}
|
||||||
|
|
||||||
QTreeView *NavigatorWidget::treeView() const
|
QTreeView *NavigatorWidget::treeView() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget tree view", category()};
|
||||||
|
|
||||||
return m_treeView;
|
return m_treeView;
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<QWidget *> NavigatorWidget::createToolBarWidgets()
|
QList<QWidget *> NavigatorWidget::createToolBarWidgets()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget create toolbar widgets", category()};
|
||||||
|
|
||||||
QList<QWidget *> buttons;
|
QList<QWidget *> buttons;
|
||||||
|
|
||||||
auto empty = new QWidget();
|
auto empty = new QWidget();
|
||||||
@@ -212,6 +223,8 @@ QList<QWidget *> NavigatorWidget::createToolBarWidgets()
|
|||||||
|
|
||||||
QToolBar *NavigatorWidget::createToolBar()
|
QToolBar *NavigatorWidget::createToolBar()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget create toolbar", category()};
|
||||||
|
|
||||||
const QList<QWidget *> buttons = createToolBarWidgets();
|
const QList<QWidget *> buttons = createToolBarWidgets();
|
||||||
|
|
||||||
auto toolBar = new QToolBar();
|
auto toolBar = new QToolBar();
|
||||||
@@ -224,6 +237,8 @@ QToolBar *NavigatorWidget::createToolBar()
|
|||||||
|
|
||||||
void NavigatorWidget::contextHelp(const Core::IContext::HelpCallback &callback) const
|
void NavigatorWidget::contextHelp(const Core::IContext::HelpCallback &callback) const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget context help", category()};
|
||||||
|
|
||||||
if (auto view = navigatorView()) {
|
if (auto view = navigatorView()) {
|
||||||
QmlDesignerPlugin::contextHelp(callback, view->contextHelpId());
|
QmlDesignerPlugin::contextHelp(callback, view->contextHelpId());
|
||||||
} else {
|
} else {
|
||||||
@@ -233,29 +248,40 @@ void NavigatorWidget::contextHelp(const Core::IContext::HelpCallback &callback)
|
|||||||
|
|
||||||
void NavigatorWidget::disableNavigator()
|
void NavigatorWidget::disableNavigator()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget disable navigator", category()};
|
||||||
|
|
||||||
m_treeView->setEnabled(false);
|
m_treeView->setEnabled(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorWidget::enableNavigator()
|
void NavigatorWidget::enableNavigator()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget enable navigator", category()};
|
||||||
|
|
||||||
m_treeView->setEnabled(true);
|
m_treeView->setEnabled(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
NavigatorView *NavigatorWidget::navigatorView() const
|
NavigatorView *NavigatorWidget::navigatorView() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget navigator view", category()};
|
||||||
|
|
||||||
return m_navigatorView.data();
|
return m_navigatorView.data();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorWidget::dragEnterEvent(QDragEnterEvent *dragEnterEvent)
|
void NavigatorWidget::dragEnterEvent(QDragEnterEvent *dragEnterEvent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget drag enter event", category()};
|
||||||
|
|
||||||
const DesignerActionManager &actionManager = QmlDesignerPlugin::instance()
|
const DesignerActionManager &actionManager = QmlDesignerPlugin::instance()
|
||||||
->viewManager().designerActionManager();
|
->viewManager()
|
||||||
|
.designerActionManager();
|
||||||
if (actionManager.externalDragHasSupportedAssets(dragEnterEvent->mimeData()))
|
if (actionManager.externalDragHasSupportedAssets(dragEnterEvent->mimeData()))
|
||||||
dragEnterEvent->acceptProposedAction();
|
dragEnterEvent->acceptProposedAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorWidget::dropEvent(QDropEvent *dropEvent)
|
void NavigatorWidget::dropEvent(QDropEvent *dropEvent)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget drop event", category()};
|
||||||
|
|
||||||
dropEvent->accept();
|
dropEvent->accept();
|
||||||
const DesignerActionManager &actionManager = QmlDesignerPlugin::instance()
|
const DesignerActionManager &actionManager = QmlDesignerPlugin::instance()
|
||||||
->viewManager().designerActionManager();
|
->viewManager().designerActionManager();
|
||||||
@@ -264,16 +290,22 @@ void NavigatorWidget::dropEvent(QDropEvent *dropEvent)
|
|||||||
|
|
||||||
void NavigatorWidget::setDragType(const QByteArray &type)
|
void NavigatorWidget::setDragType(const QByteArray &type)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget set drag type", category()};
|
||||||
|
|
||||||
m_dragType = type;
|
m_dragType = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
QByteArray NavigatorWidget::dragType() const
|
QByteArray NavigatorWidget::dragType() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget drag type", category()};
|
||||||
|
|
||||||
return m_dragType;
|
return m_dragType;
|
||||||
}
|
}
|
||||||
|
|
||||||
void NavigatorWidget::clearSearch()
|
void NavigatorWidget::clearSearch()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"navigator widget clear search", category()};
|
||||||
|
|
||||||
m_searchWidget->clear();
|
m_searchWidget->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -2,6 +2,7 @@
|
|||||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||||
|
|
||||||
#include "previewtooltip.h"
|
#include "previewtooltip.h"
|
||||||
|
#include "navigatortracing.h"
|
||||||
#include "ui_previewtooltip.h"
|
#include "ui_previewtooltip.h"
|
||||||
|
|
||||||
#include <utils/theme/theme.h>
|
#include <utils/theme/theme.h>
|
||||||
@@ -11,10 +12,14 @@
|
|||||||
|
|
||||||
namespace QmlDesigner {
|
namespace QmlDesigner {
|
||||||
|
|
||||||
|
static auto category = NavigatorTracing::category;
|
||||||
|
|
||||||
PreviewToolTip::PreviewToolTip(QWidget *parent)
|
PreviewToolTip::PreviewToolTip(QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, m_ui(new Ui::PreviewToolTip)
|
, m_ui(new Ui::PreviewToolTip)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip constructor", category()};
|
||||||
|
|
||||||
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowTransparentForInput
|
setWindowFlags(Qt::FramelessWindowHint | Qt::Tool | Qt::WindowTransparentForInput
|
||||||
| Qt::WindowStaysOnTopHint | Qt::WindowDoesNotAcceptFocus);
|
| Qt::WindowStaysOnTopHint | Qt::WindowDoesNotAcceptFocus);
|
||||||
m_ui->setupUi(this);
|
m_ui->setupUi(this);
|
||||||
@@ -38,26 +43,36 @@ PreviewToolTip::PreviewToolTip(QWidget *parent)
|
|||||||
|
|
||||||
PreviewToolTip::~PreviewToolTip()
|
PreviewToolTip::~PreviewToolTip()
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip destructor", category()};
|
||||||
|
|
||||||
delete m_ui;
|
delete m_ui;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreviewToolTip::setId(const QString &id)
|
void PreviewToolTip::setId(const QString &id)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip set id", category()};
|
||||||
|
|
||||||
m_ui->idLabel->setText(id);
|
m_ui->idLabel->setText(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreviewToolTip::setType(const QString &type)
|
void PreviewToolTip::setType(const QString &type)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip set type", category()};
|
||||||
|
|
||||||
m_ui->typeLabel->setText(type);
|
m_ui->typeLabel->setText(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreviewToolTip::setInfo(const QString &info)
|
void PreviewToolTip::setInfo(const QString &info)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip set info", category()};
|
||||||
|
|
||||||
m_ui->infoLabel->setText(info);
|
m_ui->infoLabel->setText(info);
|
||||||
}
|
}
|
||||||
|
|
||||||
void PreviewToolTip::setPixmap(const QPixmap &pixmap)
|
void PreviewToolTip::setPixmap(const QPixmap &pixmap)
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip set pixmap", category()};
|
||||||
|
|
||||||
QPixmap scaled = pixmap.scaled(m_ui->labelBackground->size(), Qt::KeepAspectRatio);
|
QPixmap scaled = pixmap.scaled(m_ui->labelBackground->size(), Qt::KeepAspectRatio);
|
||||||
scaled.setDevicePixelRatio(1.);
|
scaled.setDevicePixelRatio(1.);
|
||||||
m_ui->imageLabel->setPixmap(scaled);
|
m_ui->imageLabel->setPixmap(scaled);
|
||||||
@@ -65,6 +80,8 @@ void PreviewToolTip::setPixmap(const QPixmap &pixmap)
|
|||||||
|
|
||||||
QString PreviewToolTip::id() const
|
QString PreviewToolTip::id() const
|
||||||
{
|
{
|
||||||
|
NanotraceHR::Tracer tracer{"preview tooltip get id", category()};
|
||||||
|
|
||||||
return m_ui->idLabel->text();
|
return m_ui->idLabel->text();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -49,7 +49,7 @@ extend_qtc_library(QmlDesignerCore
|
|||||||
)
|
)
|
||||||
|
|
||||||
extend_qtc_library(QmlDesignerCore
|
extend_qtc_library(QmlDesignerCore
|
||||||
CONDITION ENABLE_PROJECT_STORAGE_TRACING OR ENABLE_SOURCE_PATH_STORAGE_TRACING OR ENABLE_IMAGE_CACHE_TRACING OR ENABLE_MODEL_TRACING OR ENABLE_FORM_EDITOR_TRACING OR ENABLE_PROPERTY_EDITOR_TRACING
|
CONDITION ENABLE_PROJECT_STORAGE_TRACING OR ENABLE_SOURCE_PATH_STORAGE_TRACING OR ENABLE_IMAGE_CACHE_TRACING OR ENABLE_MODEL_TRACING OR ENABLE_FORM_EDITOR_TRACING OR ENABLE_PROPERTY_EDITOR_TRACING OR ENABLE_NAVIGATOR_TRACING
|
||||||
PUBLIC_DEPENDS Nanotrace
|
PUBLIC_DEPENDS Nanotrace
|
||||||
PUBLIC_DEFINES
|
PUBLIC_DEFINES
|
||||||
ENABLE_QMLDESIGNER_TRACING
|
ENABLE_QMLDESIGNER_TRACING
|
||||||
|
Reference in New Issue
Block a user