Remove PresetModel and add index argument to copy from/to sliders

This commit is contained in:
2023-03-04 20:44:05 +01:00
parent 0b870d85f4
commit 78430ebb6f
6 changed files with 91 additions and 104 deletions

140
patternmaker.cpp Normal file
View File

@ -0,0 +1,140 @@
#include "patternmaker.h"
void PatternMaker::setController(DmxController *controller)
{
if (m_controller == controller)
return;
if (m_controller)
{
// disconnect(m_controller, &DmxController::presetInserted,
// this, &PresetsModel::otherPresetInserted);
}
m_controller = controller;
if (m_controller)
{
// connect(m_controller, &DmxController::presetInserted,
// this, &PresetsModel::otherPresetInserted);
}
emit controllerChanged(m_controller);
}
void PatternMaker::setAllFadersLow()
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto &devices = m_controller->lightProject().devices;
sliders_state_t sliderStates;
sliderStates.reserve(devices.size());
for (const auto &device : devices)
{
std::vector<quint8> sliderState;
if (device.deviceTypeId != -1)
{
const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId);
if (!deviceTypePtr)
qWarning() << "hilfe" << __LINE__;
else
{
const auto &deviceType = *deviceTypePtr;
sliderState.reserve(deviceType.registers.size());
for (const auto &register_ : deviceType.registers)
sliderState.push_back(0);
}
}
sliderStates.push_back(std::move(sliderState));
}
m_controller->setSliderStates(std::move(sliderStates));
}
void PatternMaker::setAllFadersMax()
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto &devices = m_controller->lightProject().devices;
sliders_state_t sliderStates;
sliderStates.reserve(devices.size());
for (const auto &device : devices)
{
std::vector<quint8> sliderState;
if (device.deviceTypeId != -1)
{
const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId);
if (!deviceTypePtr)
qWarning() << "hilfe" << __LINE__;
else
{
const auto &deviceType = *deviceTypePtr;
sliderState.reserve(deviceType.registers.size());
for (const auto &register_ : deviceType.registers)
sliderState.push_back(255);
}
}
sliderStates.push_back(std::move(sliderState));
}
m_controller->setSliderStates(std::move(sliderStates));
}
void PatternMaker::setPattern(int n, int k, DeviceTypeRegisterType registerType, quint8 value)
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto &devices = m_controller->lightProject().devices;
sliders_state_t sliderStates;
sliderStates.reserve(devices.size());
int i{};
for (const auto &device : devices)
{
const bool test = i++ % n == k;
std::vector<quint8> sliderState;
if (device.deviceTypeId != -1)
{
const auto deviceTypePtr = m_controller->lightProject().deviceTypes.findById(device.deviceTypeId);
if (!deviceTypePtr)
qWarning() << "hilfe" << __LINE__;
else
{
const auto &deviceType = *deviceTypePtr;
sliderState.reserve(deviceType.registers.size());
for (const auto &register_ : deviceType.registers)
sliderState.push_back(test && register_.type == registerType ? value : 0);
}
}
sliderStates.push_back(std::move(sliderState));
}
m_controller->setSliderStates(std::move(sliderStates));
}