TemporalConstraintPresenter::TemporalConstraintPresenter( const TemporalConstraintViewModel& cstr_model, QGraphicsObject *parentobject, QObject* parent) : AbstractConstraintPresenter {"TemporalConstraintPresenter", cstr_model, new TemporalConstraintView{*this, parentobject}, parent} { connect(::view(this), &TemporalConstraintView::constraintHoverEnter, this, &TemporalConstraintPresenter::constraintHoverEnter); connect(::view(this), &TemporalConstraintView::constraintHoverLeave, this, &TemporalConstraintPresenter::constraintHoverLeave); if(viewModel(this)->isRackShown()) { on_rackShown(viewModel(this)->shownRack()); } ::view(this)->setLabel(cstr_model.model().metadata.label()); connect(&cstr_model.model().metadata, &ModelMetadata::labelChanged, ::view(this), &TemporalConstraintView::setLabel); connect(&cstr_model.model().metadata, &ModelMetadata::colorChanged, ::view(this), &TemporalConstraintView::setLabelColor); updateHeight(); }
TemporalConstraintPresenter::TemporalConstraintPresenter( const TemporalConstraintViewModel& cstr_model, const Process::ProcessPresenterContext& ctx, QGraphicsObject *parentobject, QObject* parent) : ConstraintPresenter {"TemporalConstraintPresenter", cstr_model, new TemporalConstraintView{*this, parentobject}, new TemporalConstraintHeader, ctx, parent} { TemporalConstraintView& v = *Scenario::view(this); con(v, &TemporalConstraintView::constraintHoverEnter, this, &TemporalConstraintPresenter::constraintHoverEnter); con(v, &TemporalConstraintView::constraintHoverLeave, this, &TemporalConstraintPresenter::constraintHoverLeave); con(cstr_model.model(), &ConstraintModel::executionStateChanged, &v, &TemporalConstraintView::setExecutionState); auto& duration = cstr_model.model().duration; con(cstr_model.model().duration, &ConstraintDurations::playPercentageChanged, this, [&] (double percentage) { v.setExecutionDuration(duration.defaultDuration() * percentage); }); const auto& metadata = m_viewModel.model().metadata; con(metadata, &ModelMetadata::labelChanged, &v, &TemporalConstraintView::setLabel); con(metadata, &ModelMetadata::colorChanged, &v, [&] (ColorRef c) { v.setLabelColor(c); v.setColor(c); }); con(metadata, &ModelMetadata::nameChanged, this, [&] (const QString& name) { m_header->setText(name); }); v.setLabel(metadata.label()); v.setLabelColor(metadata.color()); v.setColor(metadata.color()); m_header->setText(metadata.name()); v.setExecutionState(m_viewModel.model().executionState()); con(m_viewModel.model().selection, &Selectable::changed, &v, &TemporalConstraintView::setFocused); con(m_viewModel.model(), &ConstraintModel::focusChanged, &v, &TemporalConstraintView::setFocused); // Drop con(v, &TemporalConstraintView::dropReceived, this, [=] ( const QPointF &pos, const QMimeData *mime) { m_context.app.components .factory<Scenario::ConstraintDropHandlerList>() .handle(m_viewModel.model(), mime); }); // Change to full view when header is double-clicked connect(static_cast<TemporalConstraintHeader*>(m_header), &TemporalConstraintHeader::doubleClicked, this, [this] () { using namespace iscore::IDocument; auto& base = get<ScenarioDocumentModel> (*documentFromObject(m_viewModel.model())); base.setDisplayedConstraint(m_viewModel.model()); }); }