/** * @RDE_HEADER@ * StartScript * $Id$ * $HeadURL$ * $Author$ * Created by Astrid Müller, SGAS, 2018-02-14 */ #include "start_script.h" #include "iava_comm.h" #include "iava_command_done_observer.h" #include namespace AudioVideoManagement { namespace AvaCommands { StartScript::StartScript(IAvaComm *comm, IAvaCommandDoneObserver *doneObserver, const QString &dialogId, const QString &scriptName, bool bBlocking) : m_dialogId(dialogId) , m_scriptName(scriptName) , m_comm(comm) , m_observer(doneObserver) , m_bBlocking(bBlocking) { Q_ASSERT(comm); Q_ASSERT(doneObserver); } void StartScript::send() { connect(m_comm, &IAvaComm::scriptStateReceived, this, &StartScript::onScriptStateReceived); connect(m_comm, &IAvaComm::scriptPositionReceived, this, &StartScript::onScriptPositionReceived); m_comm->startScript(m_dialogId, m_scriptName); if (!m_bBlocking) done(); } void StartScript::onScriptStateReceived(const QString &dialogId, const QString &scriptName, AvaStreamState scriptState) { Q_ASSERT(dialogId == m_dialogId); Q_ASSERT(scriptName == m_scriptName); m_scriptState = scriptState; if (m_scriptState == AvaStreamState::Stop || m_scriptState == AvaStreamState::NotPossible) done(); } void StartScript::onScriptPositionReceived(const QString &dialogId, const QString &scriptName, const QString &streamName, AvaTimePoint pos, AvaTimePoint relPos) { if (scriptName != m_scriptName || dialogId != m_dialogId) return; Q_UNUSED(streamName); Q_UNUSED(pos); Q_UNUSED(relPos); m_observer->alive(this); } void StartScript::done() { m_comm->disconnect(this); m_observer->done(this); } } } // namespace AudioVideoManagement::AvaCommands