#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include "DocumentPlugin.hpp" namespace Hardware { using namespace std::literals; DocumentPlugin::DocumentPlugin(const score::DocumentContext& doc, QObject* parent) : score::DocumentPlugin{doc, "Hardware::DocumentPlugin", parent} , ctrlr{nullptr} { auto& set = m_context.app.settings(); if(set.getEnabled()) { create(); } con(set, &Settings::Model::EnabledChanged, this, [this] (bool b) { if (b) create(); else cleanup(); }, Qt::QueuedConnection); } DocumentPlugin::~DocumentPlugin() { } void DocumentPlugin::on_documentClosing() { cleanup(); } void DocumentPlugin::create() { if (ctrlr) cleanup(); auto& doc = m_context.document.model().modelDelegate(); auto scenar = safe_cast(&doc); auto cstr = &scenar->baseScenario().interval(); ctrlr = new Controller{m_context, *cstr}; } void DocumentPlugin::cleanup() { if (!ctrlr) return; delete ctrlr; ctrlr = nullptr; } }