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 devicetyperegistersmodel.h devicetyperegistersmodel.cpp
presetsmodel.h presetsmodel.cpp presetsmodel.h presetsmodel.cpp
deviceregistervaluehelper.h deviceregistervaluehelper.cpp deviceregistervaluehelper.h deviceregistervaluehelper.cpp
presetmodel.h presetmodel.cpp
projectloader.h projectloader.cpp projectloader.h projectloader.cpp
scheincommandersettings.h scheincommandersettings.cpp scheincommandersettings.h scheincommandersettings.cpp
iconutils.h iconutils.cpp iconutils.h iconutils.cpp
presetstepsmodel.h presetstepsmodel.cpp presetstepsmodel.h presetstepsmodel.cpp
patternmaker.h patternmaker.cpp
) )
qt_add_qml_module(appscheincommander qt_add_qml_module(appscheincommander

View File

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

View File

@@ -1,9 +1,6 @@
#include "presetmodel.h" #include "patternmaker.h"
#include <QDebug> void PatternMaker::setController(DmxController *controller)
#include <QMutexLocker>
void PresetModel::setController(DmxController *controller)
{ {
if (m_controller == controller) if (m_controller == controller)
return; return;
@@ -25,78 +22,7 @@ void PresetModel::setController(DmxController *controller)
emit controllerChanged(m_controller); emit controllerChanged(m_controller);
} }
void PresetModel::setPresetId(int presetId) void PatternMaker::setAllFadersLow()
{
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()
{ {
if (!m_controller) if (!m_controller)
{ {
@@ -134,7 +60,7 @@ void PresetModel::setAllFadersLow()
m_controller->setSliderStates(std::move(sliderStates)); m_controller->setSliderStates(std::move(sliderStates));
} }
void PresetModel::setAllFadersMax() void PatternMaker::setAllFadersMax()
{ {
if (!m_controller) if (!m_controller)
{ {
@@ -172,7 +98,7 @@ void PresetModel::setAllFadersMax()
m_controller->setSliderStates(std::move(sliderStates)); 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) if (!m_controller)
{ {

View File

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

View File

@@ -47,6 +47,69 @@ void PresetStepsModel::setPresetId(int presetId)
emit presetIdChanged(m_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 int PresetStepsModel::rowCount(const QModelIndex &parent) const
{ {
if (parent.isValid()) if (parent.isValid())

View File

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