Mercurial > hg > svcore
diff data/model/Model.cpp @ 1735:d91ff235e69d by-id
Some messing with Model and AlignmentModel
author | Chris Cannam |
---|---|
date | Tue, 25 Jun 2019 15:29:34 +0100 |
parents | 601851995f4b |
children | 565575463752 |
line wrap: on
line diff
--- a/data/model/Model.cpp Mon Jun 24 14:28:17 2019 +0100 +++ b/data/model/Model.cpp Tue Jun 25 15:29:34 2019 +0100 @@ -34,30 +34,40 @@ << endl; } - if (m_alignment) { - m_alignment->aboutToDelete(); - delete m_alignment; + if (!m_alignmentModel.isNone()) { + ModelById::release(m_alignmentModel); } } void -Model::setSourceModel(Model *model) +Model::setSourceModel(ModelId modelId) { +/*!!! if (m_sourceModel) { disconnect(m_sourceModel, SIGNAL(aboutToBeDeleted()), this, SLOT(sourceModelAboutToBeDeleted())); } +*/ + + m_sourceModel = modelId; - m_sourceModel = model; - + auto model = ModelById::get(m_sourceModel); + if (model) { + connect(model.get(), SIGNAL(alignmentCompletionChanged()), + this, SIGNAL(alignmentCompletionChanged())); + } + + +/* if (m_sourceModel) { connect(m_sourceModel, SIGNAL(alignmentCompletionChanged()), this, SIGNAL(alignmentCompletionChanged())); connect(m_sourceModel, SIGNAL(aboutToBeDeleted()), this, SLOT(sourceModelAboutToBeDeleted())); } +*/ } - +/*!!! void Model::aboutToDelete() { @@ -83,40 +93,38 @@ { m_sourceModel = nullptr; } - +*/ void -Model::setAlignment(AlignmentModel *alignment) +Model::setAlignment(ModelId alignmentModel) { SVDEBUG << "Model(" << this << "): accepting alignment model " - << alignment << endl; + << alignmentModel << endl; - if (m_alignment) { - m_alignment->aboutToDelete(); - delete m_alignment; + if (!m_alignmentModel.isNone()) { + ModelById::release(m_alignmentModel); } - m_alignment = alignment; + m_alignmentModel = alignmentModel; - if (m_alignment) { - connect(m_alignment, SIGNAL(completionChanged()), + auto model = ModelById::get(m_alignmentModel); + if (model) { + connect(model.get(), SIGNAL(completionChanged()), this, SIGNAL(alignmentCompletionChanged())); } } -const AlignmentModel * +const ModelId Model::getAlignment() const { - return m_alignment; + return m_alignmentModel; } -const Model * +const ModelId Model::getAlignmentReference() const { - if (!m_alignment) { - if (m_sourceModel) return m_sourceModel->getAlignmentReference(); - return nullptr; - } - return m_alignment->getReferenceModel(); + auto model = ModelById::getAs<AlignmentModel>(m_alignmentModel); + if (model) return model->getReferenceModel(); + else return {}; } sv_frame_t