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

View File

@@ -28,11 +28,11 @@ qt_add_executable(appscheincommander
devicetyperegistersmodel.h devicetyperegistersmodel.cpp
presetsmodel.h presetsmodel.cpp
deviceregistervaluehelper.h deviceregistervaluehelper.cpp
presetmodel.h presetmodel.cpp
projectloader.h projectloader.cpp
scheincommandersettings.h scheincommandersettings.cpp
iconutils.h iconutils.cpp
presetstepsmodel.h presetstepsmodel.cpp
patternmaker.h patternmaker.cpp
)
qt_add_qml_module(appscheincommander

View File

@@ -90,6 +90,8 @@ ColumnLayout {
}
EditableListView {
id: presetStepsListView
Layout.fillWidth: true
enabled: presetsListView.currentIndex !== -1
@@ -138,31 +140,36 @@ ColumnLayout {
ColumnLayout {
Layout.fillWidth: true
PresetModel {
id: presetModel
controller: __controller
presetId: presetsListView.currentData ? presetsListView.currentData.id : -1
}
RowLayout {
enabled: presetStepsListView.currentIndex >= 0
Button {
text: qsTr('Auf Schieberegler\nunten kopieren');
onPressed: presetModel.copyToFaders()
onPressed: presetStepsModel.copyToFaders(presetStepsListView.currentIndex)
}
Button {
text: qsTr('Von Schieberegler\nunten kopieren');
onPressed: presetModel.copyFromFaders()
onPressed: presetStepsModel.copyFromFaders(presetStepsListView.currentIndex)
}
}
Item {
Layout.fillHeight: true
}
PatternMaker {
id: patternMaker
controller: __controller
}
RowLayout {
Button {
text: qsTr('Alle auf\n0 setzen');
onPressed: presetModel.setAllFadersLow()
onPressed: patternMaker.setAllFadersLow()
}
Button {
text: qsTr('Alle auf\nMaximum setzen');
onPressed: presetModel.setAllFadersMax()
onPressed: patternMaker.setAllFadersMax()
}
}
@@ -195,12 +202,8 @@ ColumnLayout {
Button {
text: qsTr('Set')
onPressed: presetModel.setPattern(nSpinBox.value, kSpinBox.value, registerTypeComboBox.currentValue, valueSlider.value)
}
}
Item {
Layout.fillHeight: true
onPressed: patternMaker.setPattern(nSpinBox.value, kSpinBox.value, registerTypeComboBox.currentValue, valueSlider.value)
}
}
}
}

View File

@@ -1,9 +1,6 @@
#include "presetmodel.h"
#include "patternmaker.h"
#include <QDebug>
#include <QMutexLocker>
void PresetModel::setController(DmxController *controller)
void PatternMaker::setController(DmxController *controller)
{
if (m_controller == controller)
return;
@@ -25,78 +22,7 @@ void PresetModel::setController(DmxController *controller)
emit controllerChanged(m_controller);
}
void PresetModel::setPresetId(int presetId)
{
if (m_presetId == presetId)
return;
m_presetId = presetId;
emit presetIdChanged(m_presetId);
}
void PresetModel::copyFromFaders()
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
if (m_presetId == -1)
{
qDebug() << "hilfe" << __LINE__;
return;
}
auto presetPtr = m_controller->lightProject().presets.findById(m_presetId);
if (!presetPtr)
{
qDebug() << "hilfe" << __LINE__;
return;
}
auto &preset = *presetPtr;
{
QMutexLocker locker{&m_controller->mutex()};
preset.steps = { { .sliders=m_controller->sliderStates() } };
}
}
void PresetModel::copyToFaders()
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
if (m_presetId == -1)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto presetPtr = m_controller->lightProject().presets.findById(m_presetId);
if (!presetPtr)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto &preset = *presetPtr;
if (preset.steps.empty())
{
qDebug() << "hilfe" << __LINE__;
return;
}
m_controller->setSliderStates(preset.steps.front().sliders);
}
void PresetModel::setAllFadersLow()
void PatternMaker::setAllFadersLow()
{
if (!m_controller)
{
@@ -134,7 +60,7 @@ void PresetModel::setAllFadersLow()
m_controller->setSliderStates(std::move(sliderStates));
}
void PresetModel::setAllFadersMax()
void PatternMaker::setAllFadersMax()
{
if (!m_controller)
{
@@ -172,7 +98,7 @@ void PresetModel::setAllFadersMax()
m_controller->setSliderStates(std::move(sliderStates));
}
void PresetModel::setPattern(int n, int k, DeviceTypeRegisterType registerType, quint8 value)
void PatternMaker::setPattern(int n, int k, DeviceTypeRegisterType registerType, quint8 value)
{
if (!m_controller)
{

View File

@@ -5,12 +5,11 @@
#include "dmxcontroller.h"
class PresetModel : public QObject
class PatternMaker : public QObject
{
Q_OBJECT
QML_ELEMENT
Q_PROPERTY(DmxController* controller READ controller WRITE setController NOTIFY controllerChanged)
Q_PROPERTY(int presetId READ presetId WRITE setPresetId NOTIFY presetIdChanged)
public:
using QObject::QObject;
@@ -19,20 +18,13 @@ public:
const DmxController *controller() const { return m_controller; }
void setController(DmxController *controller);
int presetId() const { return m_presetId; }
void setPresetId(int presetId);
Q_INVOKABLE void copyFromFaders();
Q_INVOKABLE void copyToFaders();
Q_INVOKABLE void setAllFadersLow();
Q_INVOKABLE void setAllFadersMax();
Q_INVOKABLE void setPattern(int n, int k, DeviceTypeRegisterType registerType, quint8 value);
signals:
void controllerChanged(DmxController *controller);
void presetIdChanged(int presetId);
private:
DmxController *m_controller{};
int m_presetId{-1};
};

View File

@@ -47,6 +47,69 @@ void PresetStepsModel::setPresetId(int presetId)
emit presetIdChanged(m_presetId);
}
void PresetStepsModel::copyFromFaders(int stepIndex)
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
if (m_presetId == -1)
{
qDebug() << "hilfe" << __LINE__;
return;
}
auto presetPtr = m_controller->lightProject().presets.findById(m_presetId);
if (!presetPtr)
{
qDebug() << "hilfe" << __LINE__;
return;
}
auto &preset = *presetPtr;
{
QMutexLocker locker{&m_controller->mutex()};
// TODO respect stepIndex
preset.steps = { { .sliders=m_controller->sliderStates() } };
}
}
void PresetStepsModel::copyToFaders(int stepIndex)
{
if (!m_controller)
{
qDebug() << "hilfe" << __LINE__;
return;
}
if (m_presetId == -1)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto presetPtr = m_controller->lightProject().presets.findById(m_presetId);
if (!presetPtr)
{
qDebug() << "hilfe" << __LINE__;
return;
}
const auto &preset = *presetPtr;
// TODO respect stepIndex
if (preset.steps.empty())
{
qDebug() << "hilfe" << __LINE__;
return;
}
m_controller->setSliderStates(preset.steps.front().sliders);
}
int PresetStepsModel::rowCount(const QModelIndex &parent) const
{
if (parent.isValid())

View File

@@ -22,6 +22,9 @@ public:
int presetId() const { return m_presetId; }
void setPresetId(int presetId);
Q_INVOKABLE void copyFromFaders(int stepIndex);
Q_INVOKABLE void copyToFaders(int stepIndex);
int rowCount(const QModelIndex &parent) const override;
QVariant data(const QModelIndex &index, int role) const override;
QMap<int, QVariant> itemData(const QModelIndex &index) const override;