Skip to content
Snippets Groups Projects
Commit 7de5461b authored by Matthias Puchner's avatar Matthias Puchner
Browse files

add signals to sample model and use them instead of generic SessionModel signals

parent 4ee3eb6a
No related branches found
No related tags found
1 merge request!532Reduce SessionItem signaling
Pipeline #51731 failed
...@@ -34,7 +34,6 @@ ApplicationModels::ApplicationModels(QObject* parent) ...@@ -34,7 +34,6 @@ ApplicationModels::ApplicationModels(QObject* parent)
m_realDataModel = new RealDataModel(this); m_realDataModel = new RealDataModel(this);
m_jobModel = new JobModel(this); m_jobModel = new JobModel(this);
connectModel(m_sampleModel);
connectModel(m_instrumentModel); connectModel(m_instrumentModel);
connectModel(m_realDataModel); connectModel(m_realDataModel);
connectModel(m_jobModel); connectModel(m_jobModel);
......
...@@ -63,6 +63,11 @@ ProjectDocument::ProjectDocument(const QString& projectFileName) ...@@ -63,6 +63,11 @@ ProjectDocument::ProjectDocument(const QString& projectFileName)
connect(&m_materials, &MaterialModel::materialChanged, this, &ProjectDocument::onModelChanged, connect(&m_materials, &MaterialModel::materialChanged, this, &ProjectDocument::onModelChanged,
Qt::UniqueConnection); Qt::UniqueConnection);
connect(sampleModel(), &SampleModel::sampleAddedOrRemoved, this,
&ProjectDocument::onModelChanged, Qt::UniqueConnection);
connect(sampleModel(), &SampleModel::sampleChanged, this, &ProjectDocument::onModelChanged,
Qt::UniqueConnection);
m_linkManager = std::make_unique<LinkInstrumentManager>(instrumentModel(), realDataModel()); m_linkManager = std::make_unique<LinkInstrumentManager>(instrumentModel(), realDataModel());
setObjectName("ProjectDocument"); setObjectName("ProjectDocument");
if (!projectFileName.isEmpty()) if (!projectFileName.isEmpty())
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
#include "GUI/Model/Group/PropertyItem.h" #include "GUI/Model/Group/PropertyItem.h"
#include "GUI/Model/Sample/ItemWithMaterial.h" #include "GUI/Model/Sample/ItemWithMaterial.h"
#include "GUI/Model/Sample/MultiLayerItem.h" #include "GUI/Model/Sample/MultiLayerItem.h"
#include "GUI/Model/Session/ModelPath.h"
#include "GUI/Model/Session/ModelUtils.h" #include "GUI/Model/Session/ModelUtils.h"
#include <QApplication> #include <QApplication>
#include <QFontMetrics> #include <QFontMetrics>
...@@ -80,11 +81,13 @@ QVector<ItemWithMaterial*> SampleModel::itemsWithMaterial() const ...@@ -80,11 +81,13 @@ QVector<ItemWithMaterial*> SampleModel::itemsWithMaterial() const
MultiLayerItem* SampleModel::addMultiLayer() MultiLayerItem* SampleModel::addMultiLayer()
{ {
return insertItem<MultiLayerItem>(); return insertItem<MultiLayerItem>();
emit sampleAddedOrRemoved();
} }
void SampleModel::removeMultiLayer(MultiLayerItem* item) void SampleModel::removeMultiLayer(MultiLayerItem* item)
{ {
removeItem(item); removeItem(item);
emit sampleAddedOrRemoved();
} }
void SampleModel::onDataChanged(const QModelIndex& index, const QModelIndex&) void SampleModel::onDataChanged(const QModelIndex& index, const QModelIndex&)
...@@ -93,4 +96,9 @@ void SampleModel::onDataChanged(const QModelIndex& index, const QModelIndex&) ...@@ -93,4 +96,9 @@ void SampleModel::onDataChanged(const QModelIndex& index, const QModelIndex&)
auto* const item = itemForIndex(index); auto* const item = itemForIndex(index);
if (item) if (item)
emit itemDataChanged(item); emit itemDataChanged(item);
auto* multiLayerItem =
dynamic_cast<MultiLayerItem*>(GUI::Model::Path::ancestor(item, MultiLayerItem::M_TYPE));
if (multiLayerItem)
emit sampleChanged(multiLayerItem);
} }
...@@ -49,6 +49,10 @@ signals: ...@@ -49,6 +49,10 @@ signals:
//! item is the one given in the first index of dataChanged(idx1,idx2) //! item is the one given in the first index of dataChanged(idx1,idx2)
void itemDataChanged(const SessionItem* item); void itemDataChanged(const SessionItem* item);
signals:
void sampleAddedOrRemoved();
void sampleChanged(MultiLayerItem* multiLayerItem);
private: private:
void onDataChanged(const QModelIndex& index, const QModelIndex&); void onDataChanged(const QModelIndex& index, const QModelIndex&);
}; };
......
...@@ -84,20 +84,13 @@ void ScriptPanel::updateEditor() ...@@ -84,20 +84,13 @@ void ScriptPanel::updateEditor()
void ScriptPanel::setEditorConnected(bool isConnected) void ScriptPanel::setEditorConnected(bool isConnected)
{ {
if (isConnected) { if (isConnected) {
connect(m_sampleModel, &SampleModel::rowsInserted, m_updateTimer, connect(m_sampleModel, &SampleModel::sampleChanged, m_updateTimer,
&UpdateTimer::scheduleUpdate); &UpdateTimer::scheduleUpdate);
connect(m_sampleModel, &SampleModel::rowsRemoved, m_updateTimer,
&UpdateTimer::scheduleUpdate);
connect(m_sampleModel, &SampleModel::itemDataChanged, m_updateTimer,
&UpdateTimer::scheduleUpdate);
connect(m_sampleModel, &SampleModel::modelReset, this, &ScriptPanel::updateEditor,
Qt::UniqueConnection);
connect(m_updateTimer, &UpdateTimer::timeToUpdate, this, &ScriptPanel::updateEditor, connect(m_updateTimer, &UpdateTimer::timeToUpdate, this, &ScriptPanel::updateEditor,
Qt::UniqueConnection); Qt::UniqueConnection);
m_updateTimer->scheduleUpdate(); m_updateTimer->scheduleUpdate();
} else { } else {
m_sampleModel->disconnect(this);
m_sampleModel->disconnect(m_updateTimer); m_sampleModel->disconnect(m_updateTimer);
m_updateTimer->disconnect(this); m_updateTimer->disconnect(this);
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment