DummyLayerPresenter::DummyLayerPresenter(
        const LayerModel& model,
        DummyLayerView* view,
        QObject* parent):
    LayerPresenter{"DummyLayerPresenter", parent},
    m_layer{model},
    m_view{view}
{
    putToFront();

}
Exemple #2
0
  explicit Presenter(
      const Process::ProcessModel& model,
      View* view,
      const Process::ProcessPresenterContext& ctx,
      QObject* parent)
      : LayerPresenter{ctx, parent}
      , m_layer{model}
      , m_view{view}
      , m_disp{m_context.context.commandStack}
  {
    putToFront();
    auto& m = static_cast<const Step::Model&>(model);

    connect(view, &View::pressed, this, [&] {
      m_context.context.focusDispatcher.focus(this);
    });

    connect(view, &View::change, this, [&](std::size_t num, float v) {
      auto vec = m.steps();
      if (num > vec.size())
      {
        vec.resize(num, 0.5f);
      }
      v = ossia::clamp(v, 0.f, 1.f);
      vec[num] = v;

      m_disp.submit(m, std::move(vec));
    });

    connect(view, &View::released, this, [&] { m_disp.commit(); });

    connect(
        m_view, &View::askContextMenu, this, &Presenter::contextMenuRequested);

    con(m, &Step::Model::stepsChanged, this, [&] { m_view->update(); });
    con(m, &Step::Model::stepCountChanged, this, [&] { m_view->update(); });
    con(m, &Step::Model::stepDurationChanged, this, [&] {
      on_zoomRatioChanged(m_ratio);
    });

    auto& audio_settings = context().context.app.settings<Audio::Settings::Model>();
    con(audio_settings, &Audio::Settings::Model::RateChanged,
        this, [&] {
      on_zoomRatioChanged(m_ratio);
    });

    view->m_model = &m;
  }