Files
qt5-legatus-legacy/Lts/Services/AudioVideoManagement/AvsCommands/set_volume.cpp
T
2026-08-13 18:33:10 +02:00

70 lines
1.1 KiB
C++
Executable File

/**
* @RDE_HEADER@
* SetVolume
* $Id$
* $HeadURL$
* $Author$
* Created by Christian Fröbel, NLSE, 2018-02-28
*/
#include "set_volume.h"
#include "iava_comm.h"
#include "iava_command_done_observer.h"
namespace AudioVideoManagement
{
namespace AvaCommands
{
SetVolume::SetVolume(IAvaComm *comm, IAvaCommandDoneObserver *doneObserver, AvaVolume db)
: m_db(db)
, m_comm(comm)
, m_observer(doneObserver)
{
Q_ASSERT(comm);
Q_ASSERT(doneObserver);
}
void SetVolume::send()
{
QObject::connect(m_comm, &IAvaComm::ok, this, &SetVolume::onOk);
QObject::connect(m_comm, &IAvaComm::volumeReceived, this, &SetVolume::onVolumeReceived);
m_comm->setVolume(m_db);
}
bool SetVolume::nullifies(ICommand *other) const
{
Q_ASSERT(other);
SetVolume *other_ = dynamic_cast<SetVolume*>(other);
if (!other_)
return false;
return true;
}
void SetVolume::onOk()
{
Q_ASSERT(!m_ok);
m_ok = true;
}
void SetVolume::onVolumeReceived(AvaVolume db)
{
Q_UNUSED(db);
if (!m_ok)
return;
done();
}
void SetVolume::done()
{
m_comm->disconnect(this);
m_observer->done(this);
}
}} // namespace AudioVideoManagement::AvaCommands