コード例 #1
0
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();
}
コード例 #2
0
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());
    });
}