Presets now have steps instead of a single slider state

This commit is contained in:
2023-02-26 23:11:35 +01:00
parent 922a96a34d
commit dd7a4f531b
5 changed files with 69 additions and 38 deletions

View File

@ -375,11 +375,14 @@ bool DevicesModel::insertRows(int row, int count, const QModelIndex &parent)
for (auto &preset : m_controller->lightProject().presets)
{
auto &sliderStates = preset.sliders;
if (sliderStates.size() > row)
for (auto &step : preset.steps)
{
sliderStates.insert(std::begin(sliderStates) + row, count, {});
emit m_controller->sliderStatesChanged(sliderStates);
auto &sliderStates = step.sliders;
if (sliderStates.size() > row)
{
sliderStates.insert(std::begin(sliderStates) + row, count, {});
emit m_controller->sliderStatesChanged(sliderStates);
}
}
}
}
@ -448,13 +451,14 @@ bool DevicesModel::removeRows(int row, int count, const QModelIndex &parent)
for (auto &preset : m_controller->lightProject().presets)
{
if (auto &sliderStates = preset.sliders; sliderStates.size() > row)
{
auto begin = std::begin(sliderStates) + row;
auto end = begin + std::min<size_t>(count, sliderStates.size() - row + count);
sliderStates.erase(begin, end);
emit m_controller->sliderStatesChanged(sliderStates);
}
for (auto &step : preset.steps)
if (auto &sliderStates = step.sliders; sliderStates.size() > row)
{
auto begin = std::begin(sliderStates) + row;
auto end = begin + std::min<size_t>(count, sliderStates.size() - row + count);
sliderStates.erase(begin, end);
emit m_controller->sliderStatesChanged(sliderStates);
}
}
}
endRemoveRows();