forked from qt-creator/qt-creator
Cleanup ConnectionEditor models
Simplified interface for the BindingModel and DynamicPropertiesModel. Change-Id: I772f31be704afe2a43c6368aefab1b026b85ec8b Reviewed-by: Qt CI Patch Build Bot <ci_patchbuild_bot@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
committed by
Thomas Hartmann
parent
e0c129d4b1
commit
759b560bab
@@ -2,7 +2,6 @@
|
||||
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
|
||||
|
||||
#include "connectionview.h"
|
||||
#include "connectionviewwidget.h"
|
||||
|
||||
#include "backendmodel.h"
|
||||
#include "bindingmodel.h"
|
||||
@@ -70,9 +69,13 @@ public:
|
||||
"ConnectionsEditorEditorBackend", 1);
|
||||
|
||||
map->setProperties(
|
||||
{{"connectionModel", QVariant::fromValue(m_connectionEditorView->connectionModel())},
|
||||
{"bindingModel", QVariant::fromValue(m_connectionEditorView->bindingModel())},
|
||||
{"dynamicPropertiesModel",
|
||||
{{"connectionModel", QVariant::fromValue(m_connectionEditorView->connectionModel())}});
|
||||
|
||||
map->setProperties(
|
||||
{{"bindingModel", QVariant::fromValue(m_connectionEditorView->bindingModel())}});
|
||||
|
||||
map->setProperties(
|
||||
{{"dynamicPropertiesModel",
|
||||
QVariant::fromValue(m_connectionEditorView->dynamicPropertiesModel())}});
|
||||
|
||||
qmlRegisterType<ConnectionModelBackendDelegate>("ConnectionsEditorEditorBackend",
|
||||
@@ -98,7 +101,6 @@ public:
|
||||
// init the first load of the QML UI elements
|
||||
reloadQmlSource();
|
||||
}
|
||||
|
||||
~ConnectionViewQuickWidget() = default;
|
||||
|
||||
static QString qmlSourcesPath()
|
||||
@@ -136,17 +138,13 @@ private:
|
||||
};
|
||||
|
||||
ConnectionView::ConnectionView(ExternalDependenciesInterface &externalDependencies)
|
||||
: AbstractView{externalDependencies}, m_connectionViewWidget(new ConnectionViewWidget()),
|
||||
m_connectionModel(new ConnectionModel(this)), m_bindingModel(new BindingModel(this)),
|
||||
m_dynamicPropertiesModel(new DynamicPropertiesModel(false, this)),
|
||||
m_backendModel(new BackendModel(this)),
|
||||
m_connectionViewQuickWidget(new ConnectionViewQuickWidget(this))
|
||||
{
|
||||
connectionViewWidget()->setBindingModel(m_bindingModel);
|
||||
connectionViewWidget()->setConnectionModel(m_connectionModel);
|
||||
connectionViewWidget()->setDynamicPropertiesModel(m_dynamicPropertiesModel);
|
||||
connectionViewWidget()->setBackendModel(m_backendModel);
|
||||
}
|
||||
: AbstractView{externalDependencies}
|
||||
, m_connectionModel(new ConnectionModel(this))
|
||||
, m_bindingModel(new BindingModel(this))
|
||||
, m_dynamicPropertiesModel(new DynamicPropertiesModel(false, this))
|
||||
, m_backendModel(new BackendModel(this))
|
||||
, m_connectionViewQuickWidget(new ConnectionViewQuickWidget(this))
|
||||
{}
|
||||
|
||||
ConnectionView::~ConnectionView()
|
||||
{
|
||||
@@ -156,25 +154,22 @@ ConnectionView::~ConnectionView()
|
||||
void ConnectionView::modelAttached(Model *model)
|
||||
{
|
||||
AbstractView::modelAttached(model);
|
||||
bindingModel()->selectionChanged(QList<ModelNode>());
|
||||
bindingModel()->reset();
|
||||
dynamicPropertiesModel()->reset();
|
||||
connectionModel()->resetModel();
|
||||
connectionViewWidget()->resetItemViews();
|
||||
backendModel()->resetModel();
|
||||
}
|
||||
|
||||
void ConnectionView::modelAboutToBeDetached(Model *model)
|
||||
{
|
||||
AbstractView::modelAboutToBeDetached(model);
|
||||
bindingModel()->selectionChanged(QList<ModelNode>());
|
||||
bindingModel()->reset();
|
||||
dynamicPropertiesModel()->reset();
|
||||
connectionModel()->resetModel();
|
||||
connectionViewWidget()->resetItemViews();
|
||||
}
|
||||
|
||||
void ConnectionView::nodeCreated(const ModelNode & /*createdNode*/)
|
||||
{
|
||||
//bindings
|
||||
connectionModel()->resetModel();
|
||||
}
|
||||
|
||||
@@ -194,8 +189,8 @@ void ConnectionView::nodeReparented(const ModelNode & /*node*/, const NodeAbstra
|
||||
void ConnectionView::nodeIdChanged(const ModelNode & /*node*/, const QString & /*newId*/, const QString & /*oldId*/)
|
||||
{
|
||||
connectionModel()->resetModel();
|
||||
bindingModel()->resetModel();
|
||||
dynamicPropertiesModel()->resetModel();
|
||||
bindingModel()->reset();
|
||||
dynamicPropertiesModel()->reset();
|
||||
}
|
||||
|
||||
void ConnectionView::propertiesRemoved(const QList<AbstractProperty> &propertyList)
|
||||
@@ -212,10 +207,10 @@ void ConnectionView::propertiesAboutToBeRemoved(const QList<AbstractProperty> &p
|
||||
{
|
||||
for (const AbstractProperty &property : propertyList) {
|
||||
if (property.isBindingProperty()) {
|
||||
bindingModel()->bindingRemoved(property.toBindingProperty());
|
||||
dynamicPropertiesModel()->bindingRemoved(property.toBindingProperty());
|
||||
bindingModel()->removeItem(property);
|
||||
dynamicPropertiesModel()->removeItem(property);
|
||||
} else if (property.isVariantProperty()) {
|
||||
dynamicPropertiesModel()->variantRemoved(property.toVariantProperty());
|
||||
dynamicPropertiesModel()->removeItem(property);
|
||||
} else if (property.isSignalHandlerProperty()) {
|
||||
connectionModel()->removeRowFromTable(property.toSignalHandlerProperty());
|
||||
}
|
||||
@@ -227,7 +222,7 @@ void ConnectionView::variantPropertiesChanged(const QList<VariantProperty> &prop
|
||||
{
|
||||
for (const VariantProperty &variantProperty : propertyList) {
|
||||
if (variantProperty.isDynamic())
|
||||
dynamicPropertiesModel()->variantPropertyChanged(variantProperty);
|
||||
dynamicPropertiesModel()->updateItem(variantProperty);
|
||||
if (variantProperty.isDynamic() && variantProperty.parentModelNode().isRootNode())
|
||||
backendModel()->resetModel();
|
||||
|
||||
@@ -241,9 +236,9 @@ void ConnectionView::bindingPropertiesChanged(const QList<BindingProperty> &prop
|
||||
AbstractView::PropertyChangeFlags /*propertyChange*/)
|
||||
{
|
||||
for (const BindingProperty &bindingProperty : propertyList) {
|
||||
bindingModel()->bindingChanged(bindingProperty);
|
||||
bindingModel()->updateItem(bindingProperty);
|
||||
if (bindingProperty.isDynamic())
|
||||
dynamicPropertiesModel()->bindingPropertyChanged(bindingProperty);
|
||||
dynamicPropertiesModel()->updateItem(bindingProperty);
|
||||
if (bindingProperty.isDynamic() && bindingProperty.parentModelNode().isRootNode())
|
||||
backendModel()->resetModel();
|
||||
|
||||
@@ -263,39 +258,8 @@ void ConnectionView::signalHandlerPropertiesChanged(const QVector<SignalHandlerP
|
||||
void ConnectionView::selectedNodesChanged(const QList<ModelNode> & selectedNodeList,
|
||||
const QList<ModelNode> & /*lastSelectedNodeList*/)
|
||||
{
|
||||
bindingModel()->selectionChanged(selectedNodeList);
|
||||
bindingModel()->reset(selectedNodeList);
|
||||
dynamicPropertiesModel()->reset();
|
||||
connectionViewWidget()->bindingTableViewSelectionChanged(QModelIndex(), QModelIndex());
|
||||
connectionViewWidget()->dynamicPropertiesTableViewSelectionChanged(QModelIndex(), QModelIndex());
|
||||
|
||||
if (connectionViewWidget()->currentTab() == ConnectionViewWidget::BindingTab
|
||||
|| connectionViewWidget()->currentTab() == ConnectionViewWidget::DynamicPropertiesTab)
|
||||
emit connectionViewWidget()->setEnabledAddButton(selectedNodeList.size() == 1);
|
||||
}
|
||||
|
||||
void ConnectionView::auxiliaryDataChanged([[maybe_unused]] const ModelNode &node,
|
||||
AuxiliaryDataKeyView key,
|
||||
const QVariant &data)
|
||||
{
|
||||
// Check if the auxiliary data is actually the locked property or if it is unlocked
|
||||
if (key != lockedProperty || !data.toBool())
|
||||
return;
|
||||
|
||||
QItemSelectionModel *selectionModel = connectionTableView()->selectionModel();
|
||||
if (!selectionModel->hasSelection())
|
||||
return;
|
||||
|
||||
QModelIndex modelIndex = selectionModel->currentIndex();
|
||||
if (!modelIndex.isValid() || !model())
|
||||
return;
|
||||
|
||||
const int internalId = connectionModel()->data(connectionModel()->index(modelIndex.row(),
|
||||
ConnectionModel::TargetModelNodeRow),
|
||||
ConnectionModel::UserRoles::InternalIdRole).toInt();
|
||||
ModelNode modelNode = modelNodeForInternalId(internalId);
|
||||
|
||||
if (modelNode.isValid() && ModelNode::isThisOrAncestorLocked(modelNode))
|
||||
selectionModel->clearSelection();
|
||||
}
|
||||
|
||||
void ConnectionView::importsChanged(const Imports & /*addedImports*/, const Imports & /*removedImports*/)
|
||||
@@ -310,14 +274,7 @@ void ConnectionView::currentStateChanged(const ModelNode &)
|
||||
|
||||
WidgetInfo ConnectionView::widgetInfo()
|
||||
{
|
||||
/* Enable new connection editor here */
|
||||
const bool newEditor = true;
|
||||
|
||||
QWidget *widget = m_connectionViewWidget.data();
|
||||
if (newEditor)
|
||||
widget = m_connectionViewQuickWidget.data();
|
||||
|
||||
return createWidgetInfo(widget,
|
||||
return createWidgetInfo(m_connectionViewQuickWidget.data(),
|
||||
QLatin1String("ConnectionView"),
|
||||
WidgetInfo::LeftPane,
|
||||
0,
|
||||
@@ -334,31 +291,6 @@ bool ConnectionView::isWidgetEnabled()
|
||||
return widgetInfo().widget->isEnabled();
|
||||
}
|
||||
|
||||
QTableView *ConnectionView::connectionTableView() const
|
||||
{
|
||||
return connectionViewWidget()->connectionTableView();
|
||||
}
|
||||
|
||||
QTableView *ConnectionView::bindingTableView() const
|
||||
{
|
||||
return connectionViewWidget()->bindingTableView();
|
||||
}
|
||||
|
||||
QTableView *ConnectionView::dynamicPropertiesTableView() const
|
||||
{
|
||||
return connectionViewWidget()->dynamicPropertiesTableView();
|
||||
}
|
||||
|
||||
QTableView *ConnectionView::backendView() const
|
||||
{
|
||||
return connectionViewWidget()->backendView();
|
||||
}
|
||||
|
||||
ConnectionViewWidget *ConnectionView::connectionViewWidget() const
|
||||
{
|
||||
return m_connectionViewWidget.data();
|
||||
}
|
||||
|
||||
ConnectionModel *ConnectionView::connectionModel() const
|
||||
{
|
||||
return m_connectionModel;
|
||||
|
||||
Reference in New Issue
Block a user