修改文件换行符,修正轮班图元长度计算问题
This commit is contained in:
+137
-137
@@ -1,138 +1,138 @@
|
||||
#include "CounterEditor.h"
|
||||
#include "ui_CounterEditor.h"
|
||||
#include "ViewModels.h"
|
||||
|
||||
CounterEditor::CounterEditor(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::CounterEditor)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::toggled,
|
||||
this, &CounterEditor::onEditCurrValueToggled);
|
||||
|
||||
connect(ui->cbBoxCounterType, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onCounterTypeChanged);
|
||||
connect(ui->cbBoxDigitalNum, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onDigitalNumChanged);
|
||||
|
||||
connect(ui->spinBoxCnt2StartValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2EndValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2RepeateCnt, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2StepValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2CurrValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
|
||||
connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} );
|
||||
connect(ui->eleCNT2IncEn, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} );
|
||||
|
||||
setViewModel(m_vm);
|
||||
}
|
||||
|
||||
CounterEditor::~CounterEditor()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置视图模型并将其更新至UI
|
||||
*
|
||||
* @param vm
|
||||
*/
|
||||
void CounterEditor::setViewModel(CounterEditorVM vm)
|
||||
{
|
||||
m_vm = std::move(vm);
|
||||
|
||||
// 根据 VM 中的当前计数器ID 确定显示哪个计数器的配置
|
||||
CounterEditorVM::CounterSlot& cnt = m_vm.counterType == COUNTER_TYPE_1 ? m_vm.counter1 : m_vm.counter2;
|
||||
|
||||
auto b = ui->spinBoxCnt2StartValue->blockSignals(true);
|
||||
ui->spinBoxCnt2StartValue->setValue(cnt.startValue);
|
||||
ui->spinBoxCnt2StartValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2EndValue->blockSignals(true);
|
||||
ui->spinBoxCnt2EndValue->setValue(cnt.endValue);
|
||||
ui->spinBoxCnt2EndValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2RepeateCnt->blockSignals(true);
|
||||
ui->spinBoxCnt2RepeateCnt->setValue(cnt.repeatValue);
|
||||
ui->spinBoxCnt2RepeateCnt->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2StepValue->blockSignals(true);
|
||||
ui->spinBoxCnt2StepValue->setValue(cnt.stepValue);
|
||||
ui->spinBoxCnt2StepValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2CurrValue->blockSignals(true);
|
||||
ui->spinBoxCnt2CurrValue->setValue(cnt.currValue);
|
||||
ui->spinBoxCnt2CurrValue->blockSignals(b);
|
||||
|
||||
b = ui->checkBoxResetCnt2CurrValue->blockSignals(true);
|
||||
ui->checkBoxResetCnt2CurrValue->setChecked(cnt.editCurrValue);
|
||||
ui->checkBoxResetCnt2CurrValue->blockSignals(b);
|
||||
|
||||
b = ui->eleCNT2IncEn->blockSignals(true);
|
||||
ui->eleCNT2IncEn->setChecked(cnt.eleEyeIncEn);
|
||||
ui->eleCNT2IncEn->blockSignals(b);
|
||||
|
||||
ui->spinBoxCnt2CurrValue->setEnabled(cnt.editCurrValue);
|
||||
ui->labelCnt2CurrValue->setText(QString::number(cnt.currValue));
|
||||
|
||||
b = ui->cbBoxCounterType->blockSignals(true);
|
||||
ui->cbBoxCounterType->setCurrentIndex(m_vm.counterType == COUNTER_TYPE_1 ? 0 : 1);
|
||||
ui->cbBoxCounterType->blockSignals(b);
|
||||
|
||||
b = ui->cbBoxDigitalNum->blockSignals(true);
|
||||
ui->cbBoxDigitalNum->setCurrentIndex(m_vm.digitalNum - 1);
|
||||
ui->cbBoxDigitalNum->blockSignals(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 从界面获取最新配置以刷新视图模型
|
||||
*
|
||||
* @return CounterEditorVM 最新的视图模型
|
||||
*/
|
||||
CounterEditorVM CounterEditor::viewModel()
|
||||
{
|
||||
m_vm.counterType = ui->cbBoxCounterType->currentIndex() == 0 ? COUNTER_TYPE_1 : COUNTER_TYPE_2;
|
||||
m_vm.digitalNum = ui->cbBoxDigitalNum->currentIndex() + 1;
|
||||
fetchCounterConfigFromView();
|
||||
return m_vm;
|
||||
}
|
||||
|
||||
void CounterEditor::onCounterTypeChanged(int i)
|
||||
{
|
||||
i = std::max(i, 0);
|
||||
m_vm.counterType = i == 0 ? COUNTER_TYPE_1 : COUNTER_TYPE_2;
|
||||
setViewModel(m_vm);
|
||||
}
|
||||
|
||||
void CounterEditor::onDigitalNumChanged(int i)
|
||||
{
|
||||
i = std::max(i, 0);
|
||||
m_vm.digitalNum = i + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 从界面拉取计数器配置
|
||||
*
|
||||
* 根据当前所选的计数器ID更新对应的计数器配置
|
||||
*
|
||||
*/
|
||||
void CounterEditor::fetchCounterConfigFromView()
|
||||
{
|
||||
CounterEditorVM::CounterSlot& cnt = m_vm.counterType == COUNTER_TYPE_1 ? m_vm.counter1 : m_vm.counter2;
|
||||
|
||||
cnt.startValue = ui->spinBoxCnt2StartValue->value();
|
||||
cnt.endValue = ui->spinBoxCnt2EndValue->value();
|
||||
cnt.repeatValue = ui->spinBoxCnt2RepeateCnt->value();
|
||||
cnt.stepValue = ui->spinBoxCnt2StepValue->value();
|
||||
cnt.currValue = ui->spinBoxCnt2CurrValue->value();
|
||||
cnt.editCurrValue = ui->checkBoxResetCnt2CurrValue->isChecked();
|
||||
cnt.eleEyeIncEn = ui->eleCNT2IncEn->isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 简单启用对应SpinBox
|
||||
*
|
||||
*/
|
||||
void CounterEditor::onEditCurrValueToggled()
|
||||
{
|
||||
ui->spinBoxCnt2CurrValue->setEnabled(ui->checkBoxResetCnt2CurrValue->isChecked());
|
||||
#include "CounterEditor.h"
|
||||
#include "ui_CounterEditor.h"
|
||||
#include "ViewModels.h"
|
||||
|
||||
CounterEditor::CounterEditor(QWidget *parent) :
|
||||
QWidget(parent),
|
||||
ui(new Ui::CounterEditor)
|
||||
{
|
||||
ui->setupUi(this);
|
||||
|
||||
connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::toggled,
|
||||
this, &CounterEditor::onEditCurrValueToggled);
|
||||
|
||||
connect(ui->cbBoxCounterType, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onCounterTypeChanged);
|
||||
connect(ui->cbBoxDigitalNum, QOverload<int>::of(&QComboBox::currentIndexChanged), this, &CounterEditor::onDigitalNumChanged);
|
||||
|
||||
connect(ui->spinBoxCnt2StartValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2EndValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2RepeateCnt, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2StepValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
connect(ui->spinBoxCnt2CurrValue, QOverload<int>::of(&QSpinBox::valueChanged), this, [this](int) {fetchCounterConfigFromView();} );
|
||||
|
||||
connect(ui->checkBoxResetCnt2CurrValue, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} );
|
||||
connect(ui->eleCNT2IncEn, &QCheckBox::clicked, this, [this](bool) {fetchCounterConfigFromView();} );
|
||||
|
||||
setViewModel(m_vm);
|
||||
}
|
||||
|
||||
CounterEditor::~CounterEditor()
|
||||
{
|
||||
delete ui;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 设置视图模型并将其更新至UI
|
||||
*
|
||||
* @param vm
|
||||
*/
|
||||
void CounterEditor::setViewModel(CounterEditorVM vm)
|
||||
{
|
||||
m_vm = std::move(vm);
|
||||
|
||||
// 根据 VM 中的当前计数器ID 确定显示哪个计数器的配置
|
||||
CounterEditorVM::CounterSlot& cnt = m_vm.counterType == COUNTER_TYPE_1 ? m_vm.counter1 : m_vm.counter2;
|
||||
|
||||
auto b = ui->spinBoxCnt2StartValue->blockSignals(true);
|
||||
ui->spinBoxCnt2StartValue->setValue(cnt.startValue);
|
||||
ui->spinBoxCnt2StartValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2EndValue->blockSignals(true);
|
||||
ui->spinBoxCnt2EndValue->setValue(cnt.endValue);
|
||||
ui->spinBoxCnt2EndValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2RepeateCnt->blockSignals(true);
|
||||
ui->spinBoxCnt2RepeateCnt->setValue(cnt.repeatValue);
|
||||
ui->spinBoxCnt2RepeateCnt->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2StepValue->blockSignals(true);
|
||||
ui->spinBoxCnt2StepValue->setValue(cnt.stepValue);
|
||||
ui->spinBoxCnt2StepValue->blockSignals(b);
|
||||
|
||||
b = ui->spinBoxCnt2CurrValue->blockSignals(true);
|
||||
ui->spinBoxCnt2CurrValue->setValue(cnt.currValue);
|
||||
ui->spinBoxCnt2CurrValue->blockSignals(b);
|
||||
|
||||
b = ui->checkBoxResetCnt2CurrValue->blockSignals(true);
|
||||
ui->checkBoxResetCnt2CurrValue->setChecked(cnt.editCurrValue);
|
||||
ui->checkBoxResetCnt2CurrValue->blockSignals(b);
|
||||
|
||||
b = ui->eleCNT2IncEn->blockSignals(true);
|
||||
ui->eleCNT2IncEn->setChecked(cnt.eleEyeIncEn);
|
||||
ui->eleCNT2IncEn->blockSignals(b);
|
||||
|
||||
ui->spinBoxCnt2CurrValue->setEnabled(cnt.editCurrValue);
|
||||
ui->labelCnt2CurrValue->setText(QString::number(cnt.currValue));
|
||||
|
||||
b = ui->cbBoxCounterType->blockSignals(true);
|
||||
ui->cbBoxCounterType->setCurrentIndex(m_vm.counterType == COUNTER_TYPE_1 ? 0 : 1);
|
||||
ui->cbBoxCounterType->blockSignals(b);
|
||||
|
||||
b = ui->cbBoxDigitalNum->blockSignals(true);
|
||||
ui->cbBoxDigitalNum->setCurrentIndex(m_vm.digitalNum - 1);
|
||||
ui->cbBoxDigitalNum->blockSignals(b);
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 从界面获取最新配置以刷新视图模型
|
||||
*
|
||||
* @return CounterEditorVM 最新的视图模型
|
||||
*/
|
||||
CounterEditorVM CounterEditor::viewModel()
|
||||
{
|
||||
m_vm.counterType = ui->cbBoxCounterType->currentIndex() == 0 ? COUNTER_TYPE_1 : COUNTER_TYPE_2;
|
||||
m_vm.digitalNum = ui->cbBoxDigitalNum->currentIndex() + 1;
|
||||
fetchCounterConfigFromView();
|
||||
return m_vm;
|
||||
}
|
||||
|
||||
void CounterEditor::onCounterTypeChanged(int i)
|
||||
{
|
||||
i = std::max(i, 0);
|
||||
m_vm.counterType = i == 0 ? COUNTER_TYPE_1 : COUNTER_TYPE_2;
|
||||
setViewModel(m_vm);
|
||||
}
|
||||
|
||||
void CounterEditor::onDigitalNumChanged(int i)
|
||||
{
|
||||
i = std::max(i, 0);
|
||||
m_vm.digitalNum = i + 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 从界面拉取计数器配置
|
||||
*
|
||||
* 根据当前所选的计数器ID更新对应的计数器配置
|
||||
*
|
||||
*/
|
||||
void CounterEditor::fetchCounterConfigFromView()
|
||||
{
|
||||
CounterEditorVM::CounterSlot& cnt = m_vm.counterType == COUNTER_TYPE_1 ? m_vm.counter1 : m_vm.counter2;
|
||||
|
||||
cnt.startValue = ui->spinBoxCnt2StartValue->value();
|
||||
cnt.endValue = ui->spinBoxCnt2EndValue->value();
|
||||
cnt.repeatValue = ui->spinBoxCnt2RepeateCnt->value();
|
||||
cnt.stepValue = ui->spinBoxCnt2StepValue->value();
|
||||
cnt.currValue = ui->spinBoxCnt2CurrValue->value();
|
||||
cnt.editCurrValue = ui->checkBoxResetCnt2CurrValue->isChecked();
|
||||
cnt.eleEyeIncEn = ui->eleCNT2IncEn->isChecked();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief 简单启用对应SpinBox
|
||||
*
|
||||
*/
|
||||
void CounterEditor::onEditCurrValueToggled()
|
||||
{
|
||||
ui->spinBoxCnt2CurrValue->setEnabled(ui->checkBoxResetCnt2CurrValue->isChecked());
|
||||
}
|
||||
Reference in New Issue
Block a user