#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(); create(set.getDevice()); con(set, &Settings::Model::DeviceChanged, this, &DocumentPlugin::create, Qt::QueuedConnection); } void DocumentPlugin::on_documentClosing() { cleanup(); } void DocumentPlugin::create(const QString& device_name) { if (ctrlr) cleanup(); if (device_name == "None") return; auto& doc = m_context.document.model().modelDelegate(); auto scenar = safe_cast(&doc); auto cstr = &scenar->baseScenario().interval(); ctrlr = new Controller{m_context, *cstr, device_name.toStdString()}; } void DocumentPlugin::cleanup() { if (!ctrlr) return; delete ctrlr; ctrlr = nullptr; } } // namespace Hardware