Fixes #4136 - Reset all logical switch fields on change of function type - By @elecpower
This commit is contained in:
@@ -25,7 +25,7 @@ LogicalSwitchesPanel::LogicalSwitchesPanel(QWidget * parent, ModelData & model,
|
||||
ModelPanel(parent, model, generalSettings, firmware),
|
||||
selectedSwitch(0)
|
||||
{
|
||||
Stopwatch s1("LogicalSwitchesPanel");
|
||||
Stopwatch s1("LogicalSwitchesPanel");
|
||||
|
||||
int channelsMax = model.getChannelsMax(true);
|
||||
|
||||
@@ -213,23 +213,14 @@ void LogicalSwitchesPanel::edited()
|
||||
CSFunctionFamily newFuncFamily = model->logicalSw[i].getFunctionFamily();
|
||||
|
||||
if (oldFuncFamily != newFuncFamily) {
|
||||
model->logicalSw[i].clear();
|
||||
model->logicalSw[i].func = csw[i]->itemData(csw[i]->currentIndex()).toInt();
|
||||
if (newFuncFamily == LS_FAMILY_TIMER) {
|
||||
model->logicalSw[i].val1 = -119;
|
||||
model->logicalSw[i].val2 = -119;
|
||||
}
|
||||
else if (newFuncFamily == LS_FAMILY_EDGE) {
|
||||
model->logicalSw[i].val1 = 0;
|
||||
model->logicalSw[i].val2 = -129;
|
||||
model->logicalSw[i].val3 = 0;
|
||||
}
|
||||
else if (newFuncFamily == LS_FAMILY_STICKY) {
|
||||
model->logicalSw[i].val1 = 0;
|
||||
model->logicalSw[i].val2 = 0;
|
||||
model->logicalSw[i].delay = 0;
|
||||
}
|
||||
else {
|
||||
model->logicalSw[i].val1 = 0;
|
||||
model->logicalSw[i].val2 = 0;
|
||||
}
|
||||
setSwitchWidgetVisibility(i);
|
||||
}
|
||||
|
||||
@@ -445,7 +445,17 @@ void menuModelLogicalSwitches(event_t event)
|
||||
CHECK_INCDEC_MODELVAR_ZERO(event, cs->func, LS_FUNC_MAX);
|
||||
uint8_t new_cstate = lswFamily(cs->func);
|
||||
if (cstate != new_cstate) {
|
||||
cs->v1 = cs->v2 = (new_cstate==LS_FAMILY_TIMER ? -119/*1.0*/ : 0);
|
||||
#if defined(CPUARM)
|
||||
unsigned int save_func = cs->func;
|
||||
memset(cs, 0, sizeof(LogicalSwitchData));
|
||||
cs->func = save_func;
|
||||
#else
|
||||
cs->v1 = cs->v2 = 0;
|
||||
cs->andsw = 0;
|
||||
#endif
|
||||
if (new_cstate == LS_FAMILY_TIMER) {
|
||||
cs->v1 = cs->v2 = -119; // 1.0
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -212,14 +212,14 @@ void menuModelLogicalSwitches(event_t event)
|
||||
cs->func = checkIncDec(event, cs->func, 0, LS_FUNC_MAX, EE_MODEL, isLogicalSwitchFunctionAvailable);
|
||||
uint8_t new_cstate = lswFamily(cs->func);
|
||||
if (cstate != new_cstate) {
|
||||
unsigned int save_func = cs->func;
|
||||
memset(cs, 0, sizeof(LogicalSwitchData));
|
||||
cs->func = save_func;
|
||||
if (new_cstate == LS_FAMILY_TIMER) {
|
||||
cs->v1 = cs->v2 = -119;
|
||||
}
|
||||
else if (new_cstate == LS_FAMILY_EDGE) {
|
||||
cs->v1 = 0; cs->v2 = -129; cs->v3 = 0;
|
||||
}
|
||||
else {
|
||||
cs->v1 = cs->v2 = 0;
|
||||
cs->v2 = -129;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -204,14 +204,14 @@ bool menuModelLogicalSwitches(event_t event)
|
||||
cs->func = checkIncDec(event, cs->func, 0, LS_FUNC_MAX, EE_MODEL, isLogicalSwitchFunctionAvailable);
|
||||
uint8_t new_cstate = lswFamily(cs->func);
|
||||
if (cstate != new_cstate) {
|
||||
unsigned int save_func = cs->func;
|
||||
memset(cs, 0, sizeof(LogicalSwitchData));
|
||||
cs->func = save_func;
|
||||
if (new_cstate == LS_FAMILY_TIMER) {
|
||||
cs->v1 = cs->v2 = -119;
|
||||
}
|
||||
else if (new_cstate == LS_FAMILY_EDGE) {
|
||||
cs->v1 = 0; cs->v2 = -129; cs->v3 = 0;
|
||||
}
|
||||
else {
|
||||
cs->v1 = cs->v2 = 0;
|
||||
cs->v2 = -129;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user