Inputs signal changes and LS try to solve timing crash

This commit is contained in:
elecpower
2020-09-22 22:56:14 +10:00
parent eb69f2c950
commit 12d8d1118f
2 changed files with 37 additions and 32 deletions
+13 -5
View File
@@ -197,9 +197,9 @@ void InputsPanel::gm_openExpo(int index)
model->expoData[index] = ed;
if (firmware->getCapability(VirtualInputs))
strncpy(model->inputNames[ed.chn], inputName.toLatin1().data(), INPUT_NAME_LEN);
update();
emit updateDataModels();
emit modified();
update();
}
else {
if (expoInserted) {
@@ -252,8 +252,9 @@ void InputsPanel::exposDelete(bool prompt)
}
exposDeleteList(list, prompt);
emit modified();
update();
emit updateDataModels();
emit modified();
}
void InputsPanel::exposCut()
@@ -326,8 +327,9 @@ void InputsPanel::pasteExpoMimeData(const QMimeData * mimeData, int destIdx)
i += sizeof(ExpoData);
}
emit modified();
update();
emit updateDataModels();
emit modified();
}
}
@@ -494,8 +496,9 @@ void InputsPanel::moveExpoList(bool down)
}
}
if (mod) {
emit modified();
update();
emit updateDataModels();
emit modified();
}
setSelectedByExpoList(highlightList);
}
@@ -533,8 +536,9 @@ void InputsPanel::clearExpos()
for (int i = 0; i < inputsCount; i++) {
model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_CLEAR, i);
}
emit modified();
update();
emit updateDataModels();
emit modified();
}
}
@@ -582,6 +586,7 @@ void InputsPanel::cmInputClear()
}
model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_CLEAR, inputIdx);
update();
emit updateDataModels();
emit modified();
}
@@ -605,6 +610,7 @@ void InputsPanel::cmInputDelete()
model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SHIFT, inputIdx, 0, -1);
update();
emit updateDataModels();
emit modified();
}
@@ -623,6 +629,7 @@ void InputsPanel::cmInputInsert()
model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SHIFT, inputIdx, 0, 1);
update();
emit updateDataModels();
emit modified();
}
@@ -684,6 +691,7 @@ void InputsPanel::cmInputSwapData(int idx1, int idx2)
model->updateAllReferences(ModelData::REF_UPD_TYPE_INPUT, ModelData::REF_UPD_ACT_SWAP, idx1, idx2);
update();
emit updateDataModels();
emit modified();
}
+24 -27
View File
@@ -169,36 +169,33 @@ LogicalSwitchesPanel::~LogicalSwitchesPanel()
void LogicalSwitchesPanel::onFunctionChanged()
{
int i = sender()->property("index").toInt();
unsigned newFunc = cbFunction[i]->currentData().toUInt();
if (!lock) {
int i = sender()->property("index").toInt();
unsigned newFunc = cbFunction[i]->currentData().toUInt();
if (model->logicalSw[i].func == newFunc)
return;
if (model->logicalSw[i].func == newFunc)
return;
const unsigned oldFunc = model->logicalSw[i].func;
CSFunctionFamily oldFuncFamily = model->logicalSw[i].getFunctionFamily();
model->logicalSw[i].func = newFunc;
CSFunctionFamily newFuncFamily = model->logicalSw[i].getFunctionFamily();
if (oldFuncFamily != newFuncFamily) {
model->logicalSw[i].clear();
const unsigned oldFunc = model->logicalSw[i].func;
CSFunctionFamily oldFuncFamily = model->logicalSw[i].getFunctionFamily();
model->logicalSw[i].func = newFunc;
if (newFuncFamily == LS_FAMILY_TIMER) {
model->logicalSw[i].val1 = -119;
model->logicalSw[i].val2 = -119;
}
else if (newFuncFamily == LS_FAMILY_EDGE) {
model->logicalSw[i].val2 = -129;
}
}
if (bool(oldFunc) != bool(newFunc)) {
emit updateDataModels();
update();
}
else
updateLine(i);
CSFunctionFamily newFuncFamily = model->logicalSw[i].getFunctionFamily();
emit modified();
if (oldFuncFamily != newFuncFamily) {
model->logicalSw[i].clear();
model->logicalSw[i].func = newFunc;
if (newFuncFamily == LS_FAMILY_TIMER) {
model->logicalSw[i].val1 = -119;
model->logicalSw[i].val2 = -119;
}
else if (newFuncFamily == LS_FAMILY_EDGE) {
model->logicalSw[i].val2 = -129;
}
}
updateLine(i);
emit modified();
}
}
void LogicalSwitchesPanel::onV1Changed(int value)
@@ -353,7 +350,7 @@ void LogicalSwitchesPanel::updateLine(int i)
cbFunction[i]->setCurrentIndex(cbFunction[i]->findData(model->logicalSw[i].func));
cbAndSwitch[i]->setCurrentIndex(cbAndSwitch[i]->findData(RawSwitch(model->logicalSw[i].andsw).toValue()));
if (!model->logicalSw[i].func) {
if (model->logicalSw[i].isEmpty()) {
mask = 0;
}
else {