mirror of
https://github.com/opentx/opentx.git
synced 2025-07-22 15:55:26 +03:00
Stay function added in Companion
This commit is contained in:
parent
9894fda194
commit
55f600a63c
5 changed files with 50 additions and 90 deletions
|
@ -337,7 +337,9 @@ QString CurveReference::toString()
|
||||||
|
|
||||||
CSFunctionFamily CustomSwData::getFunctionFamily()
|
CSFunctionFamily CustomSwData::getFunctionFamily()
|
||||||
{
|
{
|
||||||
if (func == CS_FN_TIMER)
|
if (func == CS_FN_STAY)
|
||||||
|
return CS_FAMILY_STAY;
|
||||||
|
else if (func == CS_FN_TIMER)
|
||||||
return CS_FAMILY_TIMER;
|
return CS_FAMILY_TIMER;
|
||||||
else if (func == CS_FN_STICKY)
|
else if (func == CS_FN_STICKY)
|
||||||
return CS_FAMILY_STICKY;
|
return CS_FAMILY_STICKY;
|
||||||
|
|
|
@ -1032,11 +1032,13 @@ class CustomSwitchesFunctionsTable: public ConversionTable {
|
||||||
addConversion(CS_FN_VEQUAL, val++);
|
addConversion(CS_FN_VEQUAL, val++);
|
||||||
addConversion(CS_FN_VPOS, val++);
|
addConversion(CS_FN_VPOS, val++);
|
||||||
addConversion(CS_FN_VNEG, val++);
|
addConversion(CS_FN_VNEG, val++);
|
||||||
|
if (IS_ARM(board) && version >= 216) val++; // later RANGE
|
||||||
addConversion(CS_FN_APOS, val++);
|
addConversion(CS_FN_APOS, val++);
|
||||||
addConversion(CS_FN_ANEG, val++);
|
addConversion(CS_FN_ANEG, val++);
|
||||||
addConversion(CS_FN_AND, val++);
|
addConversion(CS_FN_AND, val++);
|
||||||
addConversion(CS_FN_OR, val++);
|
addConversion(CS_FN_OR, val++);
|
||||||
addConversion(CS_FN_XOR, val++);
|
addConversion(CS_FN_XOR, val++);
|
||||||
|
if (IS_ARM(board) && version >= 216) addConversion(CS_FN_STAY, val++);
|
||||||
addConversion(CS_FN_EQUAL, val++);
|
addConversion(CS_FN_EQUAL, val++);
|
||||||
if (!release21March2013)
|
if (!release21March2013)
|
||||||
addConversion(CS_FN_NEQUAL, val++);
|
addConversion(CS_FN_NEQUAL, val++);
|
||||||
|
|
|
@ -673,11 +673,13 @@ void populateCSWCB(QComboBox *b, int value)
|
||||||
CS_FN_VEQUAL, // added at the end to avoid everything renumbered
|
CS_FN_VEQUAL, // added at the end to avoid everything renumbered
|
||||||
CS_FN_VPOS,
|
CS_FN_VPOS,
|
||||||
CS_FN_VNEG,
|
CS_FN_VNEG,
|
||||||
|
// CS_FN_RANGE,
|
||||||
CS_FN_APOS,
|
CS_FN_APOS,
|
||||||
CS_FN_ANEG,
|
CS_FN_ANEG,
|
||||||
CS_FN_AND,
|
CS_FN_AND,
|
||||||
CS_FN_OR,
|
CS_FN_OR,
|
||||||
CS_FN_XOR,
|
CS_FN_XOR,
|
||||||
|
CS_FN_STAY,
|
||||||
CS_FN_EQUAL,
|
CS_FN_EQUAL,
|
||||||
CS_FN_NEQUAL,
|
CS_FN_NEQUAL,
|
||||||
CS_FN_GREATER,
|
CS_FN_GREATER,
|
||||||
|
|
|
@ -180,16 +180,19 @@ void CustomSwitchesPanel::edited()
|
||||||
if (!lock) {
|
if (!lock) {
|
||||||
lock = true;
|
lock = true;
|
||||||
int i = sender()->property("index").toInt();
|
int i = sender()->property("index").toInt();
|
||||||
bool chAr;
|
int newFunc = csw[i]->itemData(csw[i]->currentIndex()).toInt();
|
||||||
float value, step;
|
bool chAr = (model.customSw[i].getFunctionFamily() != CustomSwData(newFunc).getFunctionFamily());
|
||||||
int newval;
|
model.customSw[i].func = newFunc;
|
||||||
chAr = (model.customSw[i].getFunctionFamily() != CustomSwData(csw[i]->itemData(csw[i]->currentIndex()).toInt()).getFunctionFamily());
|
if (chAr) {
|
||||||
model.customSw[i].func = csw[i]->itemData(csw[i]->currentIndex()).toInt();
|
|
||||||
if(chAr) {
|
|
||||||
if (model.customSw[i].getFunctionFamily() == CS_FAMILY_TIMER) {
|
if (model.customSw[i].getFunctionFamily() == CS_FAMILY_TIMER) {
|
||||||
model.customSw[i].val1 = -119;
|
model.customSw[i].val1 = -119;
|
||||||
model.customSw[i].val2 = -119;
|
model.customSw[i].val2 = -119;
|
||||||
}
|
}
|
||||||
|
else if (model.customSw[i].getFunctionFamily() == CS_FAMILY_STAY) {
|
||||||
|
model.customSw[i].val1 = 0;
|
||||||
|
model.customSw[i].val2 = -129;
|
||||||
|
model.customSw[i].val3 = 0;
|
||||||
|
}
|
||||||
else {
|
else {
|
||||||
model.customSw[i].val1 = 0;
|
model.customSw[i].val1 = 0;
|
||||||
model.customSw[i].val2 = 0;
|
model.customSw[i].val2 = 0;
|
||||||
|
@ -216,65 +219,15 @@ void CustomSwitchesPanel::edited()
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case CS_FAMILY_TIMER:
|
case CS_FAMILY_TIMER:
|
||||||
{
|
model.customSw[i].val1 = TimToVal(cswitchValue[i]->value());
|
||||||
value = cswitchOffset[i]->value();
|
model.customSw[i].val2 = TimToVal(cswitchOffset[i]->value());
|
||||||
newval=TimToVal(value);
|
updateTimerParam(cswitchValue[i], model.customSw[i].val1);
|
||||||
if (newval>model.customSw[i].val2) {
|
updateTimerParam(cswitchOffset[i], model.customSw[i].val2);
|
||||||
if (value >=60) {
|
break;
|
||||||
value=round(value);
|
case CS_FAMILY_STAY:
|
||||||
step=1;
|
model.customSw[i].val2 = TimToVal(cswitchOffset[i]->value());
|
||||||
} else if (value>=2) {
|
updateTimerParam(cswitchOffset[i], model.customSw[i].val2, true);
|
||||||
value=(round(value*2.0)/2);
|
|
||||||
step=0.5;
|
|
||||||
} else {
|
|
||||||
step=0.1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
if (value <=2) {
|
|
||||||
step=0.1;
|
|
||||||
} else if (value<=60) {
|
|
||||||
value=(round(value*2.0)/2);
|
|
||||||
step=0.5;
|
|
||||||
} else {
|
|
||||||
value=round(value);
|
|
||||||
step=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
model.customSw[i].val2=TimToVal(value);
|
|
||||||
value=ValToTim(model.customSw[i].val2);
|
|
||||||
cswitchOffset[i]->setValue(value);
|
|
||||||
cswitchOffset[i]->setSingleStep(step);
|
|
||||||
|
|
||||||
value=cswitchValue[i]->value();
|
|
||||||
newval=TimToVal(value);
|
|
||||||
if (newval>model.customSw[i].val1) {
|
|
||||||
if (value >=60) {
|
|
||||||
value=round(value);
|
|
||||||
step=1;
|
|
||||||
} else if (value>=2) {
|
|
||||||
value=(round(value*2.0)/2);
|
|
||||||
step=0.5;
|
|
||||||
} else {
|
|
||||||
step=0.1;
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (value <=2) {
|
|
||||||
step=0.1;
|
|
||||||
} else if (value<=60) {
|
|
||||||
value=(round(value*2.0)/2);
|
|
||||||
step=0.5;
|
|
||||||
} else {
|
|
||||||
value=round(value);
|
|
||||||
step=1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
model.customSw[i].val1=TimToVal(value);
|
|
||||||
value=ValToTim(model.customSw[i].val1);
|
|
||||||
cswitchValue[i]->setValue(value);
|
|
||||||
cswitchValue[i]->setSingleStep(step);
|
|
||||||
break;
|
break;
|
||||||
}
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -283,6 +236,22 @@ void CustomSwitchesPanel::edited()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CustomSwitchesPanel::updateTimerParam(QDoubleSpinBox *sb, int timer, bool allowZero)
|
||||||
|
{
|
||||||
|
sb->setVisible(true);
|
||||||
|
sb->setDecimals(1);
|
||||||
|
sb->setMinimum(allowZero ? 0.0 : 0.1);
|
||||||
|
sb->setMaximum(175);
|
||||||
|
float value = ValToTim(timer);
|
||||||
|
if (value>60)
|
||||||
|
sb->setSingleStep(1);
|
||||||
|
else if (value>2)
|
||||||
|
sb->setSingleStep(0.5);
|
||||||
|
else
|
||||||
|
sb->setSingleStep(0.1);
|
||||||
|
sb->setValue(value);
|
||||||
|
}
|
||||||
|
|
||||||
void CustomSwitchesPanel::setSwitchWidgetVisibility(int i)
|
void CustomSwitchesPanel::setSwitchWidgetVisibility(int i)
|
||||||
{
|
{
|
||||||
lock = true;
|
lock = true;
|
||||||
|
@ -320,6 +289,13 @@ void CustomSwitchesPanel::setSwitchWidgetVisibility(int i)
|
||||||
populateSwitchCB(cswitchSource1[i], RawSwitch(model.customSw[i].val1));
|
populateSwitchCB(cswitchSource1[i], RawSwitch(model.customSw[i].val1));
|
||||||
populateSwitchCB(cswitchSource2[i], RawSwitch(model.customSw[i].val2));
|
populateSwitchCB(cswitchSource2[i], RawSwitch(model.customSw[i].val2));
|
||||||
break;
|
break;
|
||||||
|
case CS_FAMILY_STAY:
|
||||||
|
cswitchSource1[i]->setVisible(true);
|
||||||
|
cswitchSource2[i]->setVisible(false);
|
||||||
|
cswitchValue[i]->setVisible(false);
|
||||||
|
populateSwitchCB(cswitchSource1[i], RawSwitch(model.customSw[i].val1));
|
||||||
|
updateTimerParam(cswitchOffset[i], model.customSw[i].val2, true);
|
||||||
|
break;
|
||||||
case CS_FAMILY_VCOMP:
|
case CS_FAMILY_VCOMP:
|
||||||
cswitchSource1[i]->setVisible(true);
|
cswitchSource1[i]->setVisible(true);
|
||||||
cswitchSource2[i]->setVisible(true);
|
cswitchSource2[i]->setVisible(true);
|
||||||
|
@ -331,31 +307,8 @@ void CustomSwitchesPanel::setSwitchWidgetVisibility(int i)
|
||||||
case CS_FAMILY_TIMER:
|
case CS_FAMILY_TIMER:
|
||||||
cswitchSource1[i]->setVisible(false);
|
cswitchSource1[i]->setVisible(false);
|
||||||
cswitchSource2[i]->setVisible(false);
|
cswitchSource2[i]->setVisible(false);
|
||||||
cswitchValue[i]->setVisible(true);
|
updateTimerParam(cswitchValue[i], model.customSw[i].val1);
|
||||||
cswitchOffset[i]->setVisible(true);
|
updateTimerParam(cswitchOffset[i], model.customSw[i].val2);
|
||||||
cswitchOffset[i]->setDecimals(1);
|
|
||||||
cswitchOffset[i]->setMinimum(0.1);
|
|
||||||
cswitchOffset[i]->setMaximum(175);
|
|
||||||
float value=ValToTim(model.customSw[i].val2);
|
|
||||||
cswitchOffset[i]->setSingleStep(0.1);
|
|
||||||
if (value>60) {
|
|
||||||
cswitchOffset[i]->setSingleStep(1);
|
|
||||||
} else if (value>2) {
|
|
||||||
cswitchOffset[i]->setSingleStep(0.5);
|
|
||||||
}
|
|
||||||
cswitchOffset[i]->setValue(value);
|
|
||||||
|
|
||||||
cswitchValue[i]->setDecimals(1);
|
|
||||||
cswitchValue[i]->setMinimum(0.1);
|
|
||||||
cswitchValue[i]->setMaximum(175);
|
|
||||||
value=ValToTim(model.customSw[i].val1);
|
|
||||||
cswitchValue[i]->setSingleStep(0.1);
|
|
||||||
if (value>60) {
|
|
||||||
cswitchValue[i]->setSingleStep(1);
|
|
||||||
} else if (value>2) {
|
|
||||||
cswitchValue[i]->setSingleStep(0.5);
|
|
||||||
}
|
|
||||||
cswitchValue[i]->setValue(value);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ class CustomSwitchesPanel : public ModelPanel
|
||||||
|
|
||||||
void updateSelectedSwitch();
|
void updateSelectedSwitch();
|
||||||
void updateV2(int index);
|
void updateV2(int index);
|
||||||
|
void updateTimerParam(QDoubleSpinBox *sb, int timer, bool allowZero=false);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue