diff --git a/companion/src/comparedialog.cpp b/companion/src/comparedialog.cpp index 4265d50ab..6b1609c0e 100644 --- a/companion/src/comparedialog.cpp +++ b/companion/src/comparedialog.cpp @@ -1260,6 +1260,7 @@ void compareDialog::printFrSky() color=getColor1(fd1->rssiAlarms[1].value,fd2->rssiAlarms[1].value); str.append(""+QString::number(fd1->rssiAlarms[1].value,10)+""); str.append(""); +#if 0 if (GetEepromInterface()->getCapability(TelemetryBars) || GetEepromInterface()->getCapability(TelemetryCSFields)) { int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); if (cols==0) cols=2; @@ -1315,6 +1316,7 @@ void compareDialog::printFrSky() } } } +#endif str.append(""); str.append(""); @@ -1377,7 +1379,7 @@ void compareDialog::printFrSky() color=getColor2(fd1->rssiAlarms[1].value,fd2->rssiAlarms[1].value); str.append(""); str.append("
"+QString::number(fd2->rssiAlarms[1].value,10)+"

"); - +#if 0 if (GetEepromInterface()->getCapability(TelemetryBars) || GetEepromInterface()->getCapability(TelemetryCSFields)) { int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); if (cols==0) cols=2; @@ -1433,6 +1435,7 @@ void compareDialog::printFrSky() } } } +#endif str.append(""); te->append(str); } diff --git a/companion/src/eeprominterface.cpp b/companion/src/eeprominterface.cpp index d0d639d8b..cf7686bea 100644 --- a/companion/src/eeprominterface.cpp +++ b/companion/src/eeprominterface.cpp @@ -67,18 +67,15 @@ RawSourceRange RawSource::getRange(bool singleprec) case TELEMETRY_SOURCE_A1: case TELEMETRY_SOURCE_A2: if (model) { - if (model->frsky.channels[index-TELEMETRY_SOURCE_A1].type==0) { - result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 2550.0); - result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0; - result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 2550.0; + FrSkyChannelData channel = model->frsky.channels[index-TELEMETRY_SOURCE_A1]; // TODO const & + float ratio = channel.getRatio(); + if (channel.type==0 || channel.type==1 || channel.type==2) result.decimals = 2; - } - else { - result.step = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio / 255.0); - result.min = (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0; - result.max = model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio - (model->frsky.channels[index-TELEMETRY_SOURCE_A1].offset * model->frsky.channels[index-TELEMETRY_SOURCE_A1].ratio) / 255.0; + else result.decimals = 0; - } + result.step = ratio / 255; + result.min = channel.offset * result.step; + result.max = ratio + result.min; } break; case TELEMETRY_SOURCE_ALT: diff --git a/companion/src/eeprominterface.h b/companion/src/eeprominterface.h index 6933ef46f..915387e01 100644 --- a/companion/src/eeprominterface.h +++ b/companion/src/eeprominterface.h @@ -296,7 +296,7 @@ class RawSourceRange } float getValue(int value) { - return round(float(value) * step); + return min + float(value) * step; } int decimals; @@ -737,6 +737,14 @@ class FrSkyChannelData { unsigned int multiplier; FrSkyAlarmData alarms[2]; + float getRatio() + { + if (type==0 || type==1 || type==2) + return float(ratio << multiplier) / 10.0; + else + return ratio << multiplier; + } + void clear() { memset(this, 0, sizeof(FrSkyChannelData)); } }; @@ -1007,8 +1015,8 @@ enum Capability { GvarsHaveSources, GvarsName, NoTelemetryProtocol, - TelemetryCSFields, - TelemetryColsCSFields, + TelemetryCustomScreens, + TelemetryCustomScreensFieldsPerLine, TelemetryRSSIModel, TelemetryAlarm, TelemetryInternalAlarm, diff --git a/companion/src/firmwares/opentx/opentxinterface.cpp b/companion/src/firmwares/opentx/opentxinterface.cpp index 392a062b4..178dcf5a1 100644 --- a/companion/src/firmwares/opentx/opentxinterface.cpp +++ b/companion/src/firmwares/opentx/opentxinterface.cpp @@ -610,24 +610,12 @@ int Open9xInterface::getCapability(const Capability capability) return TM_HASTELEMETRY|TM_HASOFFSET|TM_HASWSHH; case TelemetryBars: return 1; - case TelemetryCSFields: - if (IS_TARANIS(board)) { - return 36; - } else { - return IS_ARM(board) ? 24 : 16; - } - case TelemetryColsCSFields: - if (IS_TARANIS(board)) { - return 3; - } else { - return 2; - } + case TelemetryCustomScreens: + return IS_TARANIS(board) ? 3 : 2; + case TelemetryCustomScreensFieldsPerLine: + return IS_TARANIS(board) ? 3 : 2; case NoTelemetryProtocol: - if (IS_TARANIS(board)) { - return 1; - } else { - return 0; - } + return IS_TARANIS(board) ? 1 : 0; case TelemetryUnits: return 0; case TelemetryBlades: diff --git a/companion/src/modeledit/CMakeLists.txt b/companion/src/modeledit/CMakeLists.txt index 28c752d64..827ecf656 100644 --- a/companion/src/modeledit/CMakeLists.txt +++ b/companion/src/modeledit/CMakeLists.txt @@ -42,6 +42,7 @@ set(modeledit_UIS setup_module.ui flightmode.ui telemetry_analog.ui + telemetry_customscreen.ui ) foreach(name ${modeledit_NAMES}) diff --git a/companion/src/modeledit/telemetry.cpp b/companion/src/modeledit/telemetry.cpp index 1f008d71b..014def777 100644 --- a/companion/src/modeledit/telemetry.cpp +++ b/companion/src/modeledit/telemetry.cpp @@ -1,6 +1,7 @@ #include "telemetry.h" #include "ui_telemetry.h" #include "ui_telemetry_analog.h" +#include "ui_telemetry_customscreen.h" #include "helpers.h" TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): @@ -11,15 +12,13 @@ TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): { ui->setupUi(this); - float ratio; + float ratio = analog.getRatio(); if (analog.type==0 || analog.type==1 || analog.type==2) { - ratio = (analog.ratio<RatioSB->setDecimals(1); ui->RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); } else { - ratio = analog.ratio<RatioSB->setDecimals(0); ui->RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); } @@ -44,69 +43,44 @@ TelemetryAnalog::TelemetryAnalog(QWidget *parent, FrSkyChannelData & analog): void TelemetryAnalog::update() { - float ratio, alarm1value, alarm2value; - if (analog.ratio==0) { - ui->alarm1ValueSB->setMinimum(0); - ui->alarm1ValueSB->setMaximum(0); - ui->alarm2ValueSB->setMinimum(0); - ui->alarm2ValueSB->setMaximum(0); - ui->CalibSB->setMinimum(0); - ui->CalibSB->setMaximum(0); - ui->CalibSB->setValue(0); - ui->alarm1ValueSB->setValue(0); - ui->alarm2ValueSB->setValue(0); - return; - } + float ratio = analog.getRatio(); + float step = ratio / 255; + float mini = (ratio * analog.offset) / 255; + float maxi = mini + ratio; - if (analog.type==0 || analog.type==1 || analog.type==2) { - ratio=(analog.ratio<alarm1ValueSB->setDecimals(2); - ui->alarm1ValueSB->setSingleStep(ratio/255.0); - ui->alarm2ValueSB->setDecimals(2); - ui->alarm2ValueSB->setSingleStep(ratio/255.0); - ui->alarm1ValueSB->setMinimum((analog.ratio*1.0*analog.offset)/2550.0); - ui->alarm1ValueSB->setMaximum(ratio+(analog.ratio*1.0*analog.offset)/2550.0); - ui->alarm2ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/2550.0); - ui->alarm2ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/2550.0); - } - else { - ratio=analog.ratio<alarm1ValueSB->setDecimals(2); - ui->alarm1ValueSB->setSingleStep(ratio/255.0); - ui->alarm2ValueSB->setDecimals(2); - ui->alarm2ValueSB->setSingleStep(ratio/255.0); - ui->alarm1ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/255.0); - ui->alarm1ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/255.0); - ui->alarm2ValueSB->setMinimum((analog.offset*1.0*analog.ratio)/255.0); - ui->alarm2ValueSB->setMaximum(ratio+(analog.offset*1.0*analog.ratio)/255.0); - } - ui->CalibSB->setDecimals(2); - ui->CalibSB->setMaximum((ratio*127)/255.0); - ui->CalibSB->setMinimum((-ratio*128)/255.0); - ui->CalibSB->setSingleStep(ratio/255.0); - ui->CalibSB->setValue((analog.offset*ratio)/255); - alarm1value=ratio*(analog.alarms[0].value/255.0+analog.offset/255.0); - alarm2value=ratio*(analog.alarms[1].value/255.0+analog.offset/255.0);; - ui->alarm1ValueSB->setValue(alarm1value); - ui->alarm2ValueSB->setValue(alarm2value); + ui->alarm1ValueSB->setDecimals(2); + ui->alarm1ValueSB->setSingleStep(step); + ui->alarm1ValueSB->setMinimum(mini); + ui->alarm1ValueSB->setMaximum(maxi); + ui->alarm1ValueSB->setValue(mini + step*analog.alarms[0].value); + + ui->alarm2ValueSB->setDecimals(2); + ui->alarm2ValueSB->setSingleStep(step); + ui->alarm2ValueSB->setMinimum(mini); + ui->alarm2ValueSB->setMaximum(maxi); + ui->alarm2ValueSB->setValue(mini + step*analog.alarms[1].value); + + ui->CalibSB->setDecimals(2); + ui->CalibSB->setMaximum(step*127); + ui->CalibSB->setMinimum(-step*128); + ui->CalibSB->setSingleStep(step); + ui->CalibSB->setValue(mini); } void TelemetryAnalog::on_UnitCB_currentIndexChanged(int index) { - float ratio; - analog.type=index; + float ratio = analog.getRatio(); + analog.type = index; switch (index) { case 0: case 1: case 2: ui->RatioSB->setDecimals(1); ui->RatioSB->setMaximum(25.5*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - ratio=(analog.ratio<RatioSB->setDecimals(0); ui->RatioSB->setMaximum(255*GetEepromInterface()->getCapability(TelemetryMaxMultiplier)); - ratio=(analog.ratio<RatioSB->setValue(ratio); @@ -127,7 +101,7 @@ void TelemetryAnalog::on_RatioSB_valueChanged() } else { analog.multiplier = findmult(ui->RatioSB->value(), 255); - float singlestep =(1<RatioSB->setSingleStep(singlestep); ui->RatioSB->setValue(round(ui->RatioSB->value()/singlestep)*singlestep); @@ -139,15 +113,17 @@ void TelemetryAnalog::on_RatioSB_valueChanged() void TelemetryAnalog::on_RatioSB_editingFinished() { + if (!lock) { float ratio, calib, alarm1value,alarm2value; - if (lock) return; + if (analog.type==0 || analog.type==1 || analog.type==2) { analog.multiplier = findmult(ui->RatioSB->value(), 25.5); ui->CalibSB->setSingleStep((1<alarm1ValueSB->setSingleStep((1<alarm2ValueSB->setSingleStep((1<RatioSB->value()*10))/(1 <RatioSB->value(), 255); ui->CalibSB->setSingleStep(1<alarm1ValueSB->setSingleStep(1<0) { if (calib>((ratio*127)/255)) { analog.offset=127; - } else { + } + else { analog.offset=round(calib*255/ratio); } } @@ -185,18 +162,15 @@ void TelemetryAnalog::on_RatioSB_editingFinished() analog.alarms[0].value=round((alarm1value*255-analog.offset*(analog.ratio<CalibSB->value()/ratio)); calib=ratio*analog.offset/255.0; @@ -204,7 +178,8 @@ void TelemetryAnalog::on_CalibSB_editingFinished() alarm2value=ui->alarm2ValueSB->value(); if (alarm1value(ratio+calib)) { + } + else if (alarm1value>(ratio+calib)) { alarm1value=ratio+calib; } if (alarm2valuealarm1ValueSB->value(); - if (analog.type==0) { - ratio/=10; - } + if (alarm1value<((calib*ratio)/255)) { analog.alarms[0].value=0; - } else if (alarm1value>(ratio+(calib*ratio)/255)) { + } + else if (alarm1value>(ratio+(calib*ratio)/255)) { analog.alarms[0].value=255; - } else { + } + else { analog.alarms[0].value = round((alarm1value-((calib*ratio)/255))/ratio*255); } update(); @@ -259,28 +234,26 @@ void TelemetryAnalog::on_alarm1ValueSB_editingFinished() void TelemetryAnalog::on_alarm2LevelCB_currentIndexChanged(int index) { - analog.alarms[1].level = index; - emit modified(); + analog.alarms[1].level = index; + emit modified(); } void TelemetryAnalog::on_alarm2GreaterCB_currentIndexChanged(int index) { - analog.alarms[1].greater = index; - emit modified(); + analog.alarms[1].greater = index; + emit modified(); } void TelemetryAnalog::on_alarm2ValueSB_editingFinished() { - float ratio, calib, alarm2value; - ratio = analog.ratio<alarm2ValueSB->value(); - if (analog.type==0) { - ratio/=10; - } if (alarm2value<((calib*ratio)/255)) { analog.alarms[1].value=0; - } else if (alarm2value>(ratio+(calib*ratio)/255)) { + } + else if (alarm2value>(ratio+(calib*ratio)/255)) { analog.alarms[1].value=255; } else { analog.alarms[1].value = round((alarm2value-((calib*ratio)/255))/ratio*255); @@ -296,41 +269,182 @@ TelemetryAnalog::~TelemetryAnalog() /******************************************************/ +TelemetryCustomScreen::TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen): + ModelPanel(parent, model), + ui(new Ui::TelemetryCustomScreen), + screen(screen) +{ + ui->setupUi(this); + + for (int l=0; l<4; l++) { + for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { + fieldsCB[l][c] = new QComboBox(this); + fieldsCB[l][c]->setProperty("index", c + (l<<8)); + populateCustomScreenFieldCB(fieldsCB[l][c], screen.body.lines[l].source[c], (l<4), model.frsky.usrProto); + ui->screenNumsLayout->addWidget(fieldsCB[l][c], l, c, 1, 1); + connect(fieldsCB[l][c], SIGNAL(currentIndexChanged(int)), this, SLOT(customFieldChanged(int))); + } + } + + for (int l=0; l<4; l++) { + barsCB[l] = new QComboBox(this); + barsCB[l]->setProperty("index", l); + populateCustomScreenFieldCB(barsCB[l], screen.body.bars[l].source, false, model.frsky.usrProto); + connect(barsCB[l], SIGNAL(currentIndexChanged(int)), this, SLOT(barSourceChanged(int))); + ui->screenBarsLayout->addWidget(barsCB[l], l, 0, 1, 1); + + minSB[l] = new QDoubleSpinBox(this); + minSB[l]->setProperty("index", l); + connect(minSB[l], SIGNAL(valueChanged(double)), this, SLOT(barMinChanged(double))); + ui->screenBarsLayout->addWidget(minSB[l], l, 1, 1, 1); + + QLabel * label = new QLabel(this); + label->setAutoFillBackground(false); + label->setStyleSheet(QString::fromUtf8("Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),)\n""")); + label->setFrameShape(QFrame::Panel); + label->setFrameShadow(QFrame::Raised); + label->setAlignment(Qt::AlignCenter); + ui->screenBarsLayout->addWidget(label, l, 2, 1, 1); + + maxSB[l] = new QDoubleSpinBox(this); + maxSB[l]->setProperty("index", l); + connect(maxSB[l], SIGNAL(valueChanged(double)), this, SLOT(barMaxChanged(double))); + ui->screenBarsLayout->addWidget(maxSB[l], l, 3, 1, 1); + } + + update(); +} + +TelemetryCustomScreen::~TelemetryCustomScreen() +{ + delete ui; +} + +void TelemetryCustomScreen::update() +{ + lock = true; + + ui->screenType->setCurrentIndex(screen.type); + ui->screenNums->setVisible(screen.type == 0); + ui->screenBars->setVisible(screen.type != 0); + + if (screen.type == 0) { + for (int l=0; l<4; l++) { + for (int c=0; cgetCapability(TelemetryCustomScreensFieldsPerLine); c++) { + fieldsCB[l][c]->setCurrentIndex(screen.body.lines[l].source[c]); + } + } + } + else { + for (int i=0; i<4; i++) { + updateBar(i); + } + } + + lock = false; +} + +void TelemetryCustomScreen::updateBar(int line) +{ + int index = screen.body.bars[line].source; + barsCB[line]->setCurrentIndex(index); + if (index) { + RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, index-1, &model); + RawSourceRange range = source.getRange(true); + int max = round((range.max - range.min) / range.step); + if (255-screen.body.bars[line].barMax > max) + screen.body.bars[line].barMax = 255 - max; + minSB[line]->setEnabled(true); + minSB[line]->setDecimals(range.decimals); + minSB[line]->setMinimum(range.min); + minSB[line]->setMaximum(range.max); + minSB[line]->setSingleStep(range.step); + minSB[line]->setValue(range.getValue(screen.body.bars[line].barMin)); + maxSB[line]->setEnabled(true); + maxSB[line]->setDecimals(range.decimals); + maxSB[line]->setMinimum(range.min); + maxSB[line]->setMaximum(range.max); + maxSB[line]->setSingleStep(range.step); + maxSB[line]->setValue(range.getValue(255 - screen.body.bars[line].barMax)); + } + else { + minSB[line]->setDisabled(true); + maxSB[line]->setDisabled(true); + } +} + +void TelemetryCustomScreen::on_screenType_currentIndexChanged(int index) +{ + if (!lock) { + memset(&screen.body, 0, sizeof(screen.body)); + screen.type = index; + update(); + emit modified(); + } +} + +void TelemetryCustomScreen::customFieldChanged(int value) +{ + int index = sender()->property("index").toInt(); + screen.body.lines[index/256].source[index%256] = value; + emit modified(); +} + +void TelemetryCustomScreen::barSourceChanged(int index) +{ + QComboBox * cb = qobject_cast(sender()); + int line = cb->property("index").toInt(); + screen.body.bars[line].source = index; + screen.body.bars[line].barMin = 0; + screen.body.bars[line].barMax = 0; + updateBar(line); + emit modified(); +} + +void TelemetryCustomScreen::barMinChanged(double value) +{ + if (!lock) { + int line = sender()->property("index").toInt(); + screen.body.bars[line].barMin = round((value-minSB[line]->minimum()) / minSB[line]->singleStep()); + // TODO set min (maxSB) + emit modified(); + } +} + +void TelemetryCustomScreen::barMaxChanged(double value) +{ + if (!lock) { + int line = sender()->property("index").toInt(); + screen.body.bars[line].barMax = 255 - round((value-minSB[line]->minimum()) / maxSB[line]->singleStep()); + // TODO set max (minSB) + emit modified(); + } +} + +/******************************************************/ + TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model): ModelPanel(parent, model), ui(new Ui::Telemetry) { ui->setupUi(this); + if (GetEepromInterface()->getCapability(NoTelemetryProtocol)) { + model.frsky.usrProto = 1; + } + analogs[0] = new TelemetryAnalog(this, model.frsky.channels[0]); ui->A1Layout->addWidget(analogs[0]); connect(analogs[0], SIGNAL(modified()), this, SLOT(onAnalogModified())); + analogs[1] = new TelemetryAnalog(this, model.frsky.channels[1]); ui->A2Layout->addWidget(analogs[1]); connect(analogs[1], SIGNAL(modified()), this, SLOT(onAnalogModified())); - QGroupBox* barsgb[3] = { ui->CS1Bars, ui->CS2Bars, ui->CS3Bars }; - QGroupBox* numsgb[3] = { ui->CS1Nums, ui->CS2Nums, ui->CS3Nums }; - - QComboBox* barscb[12] = { ui->telBarCS1B1_CB, ui->telBarCS1B2_CB, ui->telBarCS1B3_CB, ui->telBarCS1B4_CB, - ui->telBarCS2B1_CB, ui->telBarCS2B2_CB, ui->telBarCS2B3_CB, ui->telBarCS2B4_CB, - ui->telBarCS3B1_CB, ui->telBarCS3B2_CB, ui->telBarCS3B3_CB, ui->telBarCS3B4_CB}; - QDoubleSpinBox* minSB[12] = { ui->telMinCS1SB1, ui->telMinCS1SB2, ui->telMinCS1SB3, ui->telMinCS1SB4, - ui->telMinCS2SB1, ui->telMinCS2SB2, ui->telMinCS2SB3, ui->telMinCS2SB4, - ui->telMinCS3SB1, ui->telMinCS3SB2, ui->telMinCS3SB3, ui->telMinCS3SB4}; - QDoubleSpinBox* maxSB[12] = { ui->telMaxCS1SB1, ui->telMaxCS1SB2, ui->telMaxCS1SB3, ui->telMaxCS1SB4, - ui->telMaxCS2SB1, ui->telMaxCS2SB2, ui->telMaxCS2SB3, ui->telMaxCS2SB4, - ui->telMaxCS3SB1, ui->telMaxCS3SB2, ui->telMaxCS3SB3, ui->telMaxCS3SB4}; - QComboBox* tmp[36] = { ui->telemetryCS1F1_CB, ui->telemetryCS1F2_CB, ui->telemetryCS1F3_CB, ui->telemetryCS1F4_CB, ui->telemetryCS1F5_CB, ui->telemetryCS1F6_CB, ui->telemetryCS1F7_CB, ui->telemetryCS1F8_CB, ui->telemetryCS1F9_CB, ui->telemetryCS1F10_CB, ui->telemetryCS1F11_CB, ui->telemetryCS1F12_CB, - ui->telemetryCS2F1_CB, ui->telemetryCS2F2_CB, ui->telemetryCS2F3_CB, ui->telemetryCS2F4_CB, ui->telemetryCS2F5_CB, ui->telemetryCS2F6_CB, ui->telemetryCS2F7_CB, ui->telemetryCS2F8_CB, ui->telemetryCS2F9_CB, ui->telemetryCS2F10_CB, ui->telemetryCS2F11_CB, ui->telemetryCS2F12_CB, - ui->telemetryCS3F1_CB, ui->telemetryCS3F2_CB, ui->telemetryCS3F3_CB, ui->telemetryCS3F4_CB, ui->telemetryCS3F5_CB, ui->telemetryCS3F6_CB, ui->telemetryCS3F7_CB, ui->telemetryCS3F8_CB, ui->telemetryCS3F9_CB, ui->telemetryCS3F10_CB, ui->telemetryCS3F11_CB, ui->telemetryCS3F12_CB}; - - memcpy(barsGB, barsgb, sizeof(barsGB)); - memcpy(numsGB, numsgb, sizeof(numsGB)); - memcpy(barsCB, barscb, sizeof(barsCB)); - memcpy(this->maxSB, maxSB, sizeof(this->maxSB)); - memcpy(this->minSB, minSB, sizeof(this->minSB)); - memcpy(csf, tmp, sizeof(csf)); + for (int i=0; igetCapability(TelemetryCustomScreens); i++) { + TelemetryCustomScreen * tab = new TelemetryCustomScreen(this, model, model.frsky.screens[i]); + ui->customScreens->addTab(tab, tr("Telemetry screen %1").arg(i+1)); + } setup(); } @@ -346,19 +460,6 @@ void TelemetryPanel::setup() QString firmware_id = settings.value("firmware", default_firmware_variant.id).toString(); lock=true; - ui->telemetryCSType1->setCurrentIndex(model.frsky.screens[0].type); - ui->telemetryCSType2->setCurrentIndex(model.frsky.screens[1].type); - ui->telemetryCSType3->setCurrentIndex(model.frsky.screens[2].type); - - for (int i=0; i<3; i++) { - bool isNum = (model.frsky.screens[i].type==0); - barsGB[i]->setVisible(!isNum); - numsGB[i]->setVisible(isNum); - } - - connect(ui->telemetryCSType1,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); - connect(ui->telemetryCSType2,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); - connect(ui->telemetryCSType3,SIGNAL(currentIndexChanged(int)),this,SLOT(ScreenTypeCBcurrentIndexChanged(int))); //frsky Settings if (!GetEepromInterface()->getCapability(TelemetryRSSIModel) ) { @@ -397,7 +498,8 @@ void TelemetryPanel::setup() ui->VarioLabel_4->hide(); ui->varioSourceCB->hide(); ui->varioSource_label->hide(); - } else { + } + else { if (!GetEepromInterface()->getCapability(HasVarioSink)) { ui->varioLimitMinOff_ChkB->hide(); ui->varioLimitMin_DSB->hide(); @@ -431,44 +533,12 @@ void TelemetryPanel::setup() if (!(GetEepromInterface()->getCapability(HasAltitudeSel)||GetEepromInterface()->getCapability(HasVario))) { ui->altimetryGB->hide(); } - if (GetEepromInterface()->getCapability(NoTelemetryProtocol)) { - model.frsky.usrProto=1; - ui->frskyProtoCB->setDisabled(true); - } else { - ui->frskyProtoCB->setEnabled(true); - } - if (GetEepromInterface()->getCapability(TelemetryCSFields)==0) { - ui->groupBox_5->hide(); - } else { - if (GetEepromInterface()->getCapability(TelemetryCSFields)==8) { - ui->tabCsView->removeTab(1); - ui->tabCsView->removeTab(2); - } - if (GetEepromInterface()->getCapability(TelemetryCSFields)==16) { - ui->tabCsView->removeTab(2); - } - int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); - if (cols==0) cols=2; - for (int screen=0; screen<(GetEepromInterface()->getCapability(TelemetryCSFields)/(4*cols)); screen++) { - for (int c=0; chide(); - } - } - } + if (GetEepromInterface()->getCapability(NoTelemetryProtocol)) { + ui->frskyProtoCB->setDisabled(true); + } + else { + ui->frskyProtoCB->setEnabled(true); } if (!GetEepromInterface()->getCapability(TelemetryUnits)) { @@ -479,9 +549,11 @@ void TelemetryPanel::setup() } ui->frskyUnitsCB->setCurrentIndex(index); } + if ((GetEepromInterface()->getCapability(Telemetry)&TM_HASWSHH)) { ui->frskyProtoCB->addItem(tr("Winged Shadow How High")); - } else { + } + else { ui->frskyProtoCB->addItem(tr("Winged Shadow How High (not supported)")); } @@ -517,40 +589,6 @@ void TelemetryPanel::setup() ui->frskyCurrentCB->setCurrentIndex(model.frsky.currentSource); ui->frskyVoltCB->setCurrentIndex(model.frsky.voltsSource); - for (int screen=0; screen<2;screen++) { - for (int rows=0; rows<4; rows++) { - for (int cols=0; cols<3; cols++) { - int index=screen*12+cols*4+rows; - populateCustomScreenFieldCB(csf[index], model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), model.frsky.usrProto); - } - } - } - - for (int j=0; j<12; j++) { - int screen = j/4; - int field = j%4; - populateCustomScreenFieldCB(barsCB[j], model.frsky.screens[screen].body.bars[field].source, false, model.frsky.usrProto); - RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screen].body.bars[field].source, &model); - RawSourceRange range = source.getRange(true); - minSB[j]->setDecimals(range.decimals); - minSB[j]->setMinimum(range.min); - minSB[j]->setMaximum(range.max); - minSB[j]->setSingleStep(range.step); - minSB[j]->setValue(range.getValue(model.frsky.screens[screen].body.bars[field].barMin)); - maxSB[j]->setDecimals(range.decimals); - maxSB[j]->setMinimum(range.min); - maxSB[j]->setMaximum(range.max); - maxSB[j]->setSingleStep(range.step); - maxSB[j]->setValue(range.getValue(255 - model.frsky.screens[screen].body.bars[field].barMax)); - if (model.frsky.screens[screen].body.bars[field].source==0 || model.frsky.screens[screen].type==0) { - minSB[j]->setDisabled(true); - maxSB[j]->setDisabled(true); - } - connect(barsCB[j], SIGNAL(currentIndexChanged(int)), this, SLOT(telBarCBcurrentIndexChanged(int))); - connect(maxSB[j], SIGNAL(editingFinished()), this, SLOT(telMaxSBeditingFinished())); - connect(minSB[j], SIGNAL(editingFinished()), this, SLOT(telMinSBeditingFinished())); - } - lock=false; } @@ -585,316 +623,119 @@ void TelemetryPanel::on_frskyVoltCB_currentIndexChanged(int index) void TelemetryPanel::on_frskyProtoCB_currentIndexChanged(int index) { - if (lock) return; - int bindex[12]; - lock=true; - for (int i=0; i<12; i++) { - bindex[i]=barsCB[i]->currentIndex(); - model.frsky.usrProto=index; - populateCustomScreenFieldCB(barsCB[i], bindex[i], false, model.frsky.usrProto); - } - if (!GetEepromInterface()->getCapability(TelemetryCSFields)) { - ui->groupBox_5->hide(); - } else { - for (int screen=0; screen<2;screen++) { - for (int rows=0; rows<4; rows++) { - for (int cols=0; cols<3; cols++) { - int index=screen*12+cols*4+rows; - populateCustomScreenFieldCB(csf[index], model.frsky.screens[screen].body.lines[rows].source[cols], (rows<4), model.frsky.usrProto); - } - } - } - } - lock=false; - if (index==0) { - for (int i=0; i<12; i++) { - if (bindex[i]>2) { - barsCB[i]->setCurrentIndex(0); - } else { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - } else if (index==2) { - for (int i=0; i<12; i++) { - if (bindex[i]>3) { - barsCB[i]->setCurrentIndex(0); - } else { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - } else { - for (int i=0; i<12; i++) { - barsCB[i]->setCurrentIndex(bindex[i]); - } - } - emit modified(); + model.frsky.usrProto = index; + emit modified(); } -void TelemetryPanel::on_rssiAlarm1CB_currentIndexChanged(int index) { - if (lock) return; - model.frsky.rssiAlarms[0].level=index; - emit modified(); +void TelemetryPanel::on_rssiAlarm1CB_currentIndexChanged(int index) +{ + model.frsky.rssiAlarms[0].level = index; + emit modified(); } -void TelemetryPanel::on_rssiAlarm2CB_currentIndexChanged(int index) { - if (lock) return; - model.frsky.rssiAlarms[1].level=index; - emit modified(); +void TelemetryPanel::on_rssiAlarm2CB_currentIndexChanged(int index) +{ + model.frsky.rssiAlarms[1].level = index; + emit modified(); } void TelemetryPanel::on_rssiAlarm1SB_editingFinished() { - if (lock) return; - model.frsky.rssiAlarms[0].value=(ui->rssiAlarm1SB->value()); - emit modified(); + model.frsky.rssiAlarms[0].value = ui->rssiAlarm1SB->value(); + emit modified(); } void TelemetryPanel::on_rssiAlarm2SB_editingFinished() { - if (lock) return; - model.frsky.rssiAlarms[1].value=(ui->rssiAlarm2SB->value()); - emit modified(); + model.frsky.rssiAlarms[1].value = ui->rssiAlarm2SB->value(); + emit modified(); } void TelemetryPanel::on_AltitudeGPS_ChkB_toggled(bool checked) { - if (lock) return; - model.frsky.FrSkyGpsAlt = checked; - emit modified(); + model.frsky.FrSkyGpsAlt = checked; + emit modified(); } void TelemetryPanel::on_AltitudeToolbar_ChkB_toggled(bool checked) { - model.frsky.altitudeDisplayed = checked; - emit modified(); + model.frsky.altitudeDisplayed = checked; + emit modified(); } void TelemetryPanel::on_varioSourceCB_currentIndexChanged(int index) { - if (lock) return; - model.frsky.varioSource = index; - emit modified(); + model.frsky.varioSource = index; + emit modified(); } void TelemetryPanel::on_varioLimitMin_DSB_editingFinished() { - if (lock) return; - model.frsky.varioMin= round(ui->varioLimitMin_DSB->value()+10); - emit modified(); + model.frsky.varioMin = round(ui->varioLimitMin_DSB->value()+10); + emit modified(); } void TelemetryPanel::on_varioLimitMax_DSB_editingFinished() { - if (lock) return; - model.frsky.varioMax= round(ui->varioLimitMax_DSB->value()-10); - emit modified(); + model.frsky.varioMax = round(ui->varioLimitMax_DSB->value()-10); + emit modified(); } void TelemetryPanel::on_varioLimitCenterMin_DSB_editingFinished() { - if (lock) return; + if (!lock) { if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); } - model.frsky.varioCenterMin= round((ui->varioLimitCenterMin_DSB->value()+0.5)*10); + model.frsky.varioCenterMin = round((ui->varioLimitCenterMin_DSB->value()+0.5)*10); emit modified(); + } } void TelemetryPanel::on_varioLimitMinOff_ChkB_toggled(bool checked) { - if (lock) return; + if (!lock) { model.frsky.varioCenterMin = -16; if (!checked) { lock=true; ui->varioLimitCenterMin_DSB->setValue(-2.0); ui->varioLimitCenterMin_DSB->setEnabled(true); lock=false; - } else { + } + else { ui->varioLimitCenterMin_DSB->setValue(-2.0); ui->varioLimitCenterMin_DSB->setDisabled(true); } emit modified(); + } } void TelemetryPanel::on_varioLimitCenterMax_DSB_editingFinished() { - if (lock) return; + if (!lock) { if (ui->varioLimitCenterMin_DSB->value()>ui->varioLimitCenterMax_DSB->value()) { ui->varioLimitCenterMax_DSB->setValue(ui->varioLimitCenterMin_DSB->value()); } - model.frsky.varioCenterMax= round((ui->varioLimitCenterMax_DSB->value()-0.5)*10); + model.frsky.varioCenterMax = round((ui->varioLimitCenterMax_DSB->value()-0.5)*10); emit modified(); + } } void TelemetryPanel::on_fasOffset_DSB_editingFinished() { - model.frsky.fasOffset = ui->fasOffset_DSB->value()*10; - emit modified(); + model.frsky.fasOffset = ui->fasOffset_DSB->value() * 10; + emit modified(); } void TelemetryPanel::on_mahCount_SB_editingFinished() { - model.frsky.storedMah = ui->mahCount_SB->value(); - emit modified(); + model.frsky.storedMah = ui->mahCount_SB->value(); + emit modified(); } void TelemetryPanel::on_mahCount_ChkB_toggled(bool checked) { - model.frsky.mAhPersistent = checked; - ui->mahCount_SB->setDisabled(!checked); - emit modified(); + model.frsky.mAhPersistent = checked; + ui->mahCount_SB->setDisabled(!checked); + emit modified(); } - -void TelemetryPanel::telBarUpdate() -{ - int index; - lock=true; - for (int i=0; i<12; i++) { - int screen=i/4; - index=barsCB[i]->currentIndex(); - if (index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1 || index==TELEMETRY_SOURCE_A1_MIN || index==TELEMETRY_SOURCE_A2_MIN) { - RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, index, &model); - RawSourceRange range = source.getRange(true); - minSB[i]->setMinimum(range.min); - minSB[i]->setMaximum(range.max); - minSB[i]->setSingleStep(range.step); - maxSB[i]->setMinimum(range.min); - maxSB[i]->setMaximum(range.max); - maxSB[i]->setSingleStep(range.step); - minSB[i]->setValue(range.getValue(model.frsky.screens[screen].body.bars[i%4].barMin)); - maxSB[i]->setValue(range.getValue(255 - model.frsky.screens[screen].body.bars[i%4].barMax)); - } - } - lock=false; -} - -void TelemetryPanel::ScreenTypeCBcurrentIndexChanged(int index) -{ - if (!lock) { - lock = true; - QComboBox *comboBox = qobject_cast(sender()); - int screen = comboBox->objectName().right(1).toInt() -1; - model.frsky.screens[screen].type = index; - for (int i=0; i<3; i++) { - bool isNum = (model.frsky.screens[i].type==0); - barsGB[i]->setVisible(!isNum); - numsGB[i]->setVisible(isNum); - } - lock = false; - emit modified(); - } -} - -void TelemetryPanel::telBarCBcurrentIndexChanged(int index) -{ - if (!lock) { - lock = true; - QComboBox *comboBox = qobject_cast(sender()); - int screenId = comboBox->objectName().mid(8,1).toInt() - 1; - int barId = comboBox->objectName().mid(10,1).toInt() - 1; - int bar=barId+screenId*4; - model.frsky.screens[screenId].body.bars[barId].source=index; - if (index==0) { - model.frsky.screens[screenId].body.bars[barId].barMin=0; - model.frsky.screens[screenId].body.bars[barId].barMax=0; - minSB[bar]->setDisabled(true); - maxSB[bar]->setDisabled(true); - } - else { - minSB[bar]->setEnabled(true); - maxSB[bar]->setEnabled(true); - } - RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, index-1, &model); - RawSourceRange range = source.getRange(true); - minSB[bar]->setDecimals(range.decimals); - minSB[bar]->setMinimum(range.min); - minSB[bar]->setMaximum(range.max); - minSB[bar]->setSingleStep(range.step); - maxSB[bar]->setDecimals(range.decimals); - maxSB[bar]->setMinimum(range.min); - maxSB[bar]->setMaximum(range.max); - maxSB[bar]->setSingleStep(range.step); - minSB[bar]->setValue(range.getValue(model.frsky.screens[screenId].body.bars[barId].barMin)); - maxSB[bar]->setValue(range.getValue(255 - model.frsky.screens[screenId].body.bars[barId].barMax)); - lock = false; - emit modified(); - } -} - -void TelemetryPanel::telMinSBeditingFinished() -{ - if (!lock) { - lock = true; - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int screenId = spinBox->objectName().mid(8,1).toInt() - 1; - int barId = spinBox->objectName().right(1).toInt() - 1; - int minId = barId+screenId*4; - RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screenId].body.bars[barId].source, &model); - RawSourceRange range = source.getRange(true); - if (model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1 || model.frsky.screens[screenId].body.bars[barId].source==TELEMETRY_SOURCE_A1_MIN) { - model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-analogs[0]->ui->CalibSB->value())/range.step); - } - else if (model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2 || model.frsky.screens[screenId].body.bars[minId].source==TELEMETRY_SOURCE_A2_MIN) { - model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-analogs[1]->ui->CalibSB->value())/range.step); - } - else { - model.frsky.screens[screenId].body.bars[barId].barMin = round((minSB[minId]->value()-range.getValue(0))/range.step); - } - spinBox->setValue(range.getValue(model.frsky.screens[screenId].body.bars[barId].barMin)); - if (maxSB[minId]->value()value()) { - model.frsky.screens[screenId].body.bars[minId].barMax = (255-model.frsky.screens[screenId].body.bars[barId].barMin+1); - maxSB[minId]->setValue(range.getValue(255 - model.frsky.screens[screenId].body.bars[barId].barMax)); - } - maxSB[minId]->setMinimum(range.getValue((model.frsky.screens[screenId].body.bars[barId].barMin+1))); - - lock = false; - emit modified(); - } -} - -void TelemetryPanel::telMaxSBeditingFinished() -{ - if (!lock) { - QDoubleSpinBox *spinBox = qobject_cast(sender()); - int screenId = spinBox->objectName().mid(8,1).toInt() - 1; - int barId = spinBox->objectName().right(1).toInt() - 1; - lock = true; - RawSource source = RawSource(SOURCE_TYPE_TELEMETRY, model.frsky.screens[screenId].body.bars[barId].source, &model); - RawSourceRange range = source.getRange(true); - if (model.frsky.screens[screenId].body.bars[barId].source==5) { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[0]->ui->CalibSB->value())/range.step)); - } - else if (model.frsky.screens[screenId].body.bars[barId].source==6) { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-analogs[1]->ui->CalibSB->value())/range.step)); - } - else { - model.frsky.screens[screenId].body.bars[barId].barMax = (255-round((spinBox->value()-range.getValue(0))/range.step)); - } - spinBox->setValue(range.getValue(255-model.frsky.screens[screenId].body.bars[barId].barMax)); - lock = false; - emit modified(); - } -} - -void TelemetryPanel::customFieldEdited() -{ - if (!lock) { - lock = true; - - int cols = GetEepromInterface()->getCapability(TelemetryColsCSFields); - if (cols==0) cols=2; - - for (int i=0; igetCapability(TelemetryCSFields); i++) { - int screen=i/(4*cols); - int r=((i%(4*cols))%4); - int c=((i%(4*cols))/4); - if (model.frsky.screens[screen].type==0) { - model.frsky.screens[screen].body.lines[r].source[c]=csf[i]->currentIndex(); - } - } - - lock = false; - emit modified(); - } -} - diff --git a/companion/src/modeledit/telemetry.h b/companion/src/modeledit/telemetry.h index f8dc1c35e..44233f79c 100644 --- a/companion/src/modeledit/telemetry.h +++ b/companion/src/modeledit/telemetry.h @@ -8,6 +8,7 @@ namespace Ui { class TelemetryAnalog; + class TelemetryCustomScreen; class Telemetry; } @@ -44,6 +45,32 @@ class TelemetryAnalog : public QWidget void update(); }; +class TelemetryCustomScreen : public ModelPanel +{ + Q_OBJECT + + public: + TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen); + ~TelemetryCustomScreen(); + void update(); + + private slots: + void on_screenType_currentIndexChanged(int index); + void customFieldChanged(int index); + void barSourceChanged(int index); + void barMinChanged(double value); + void barMaxChanged(double value); + + private: + void updateBar(int line); + Ui::TelemetryCustomScreen * ui; + FrSkyScreenData & screen; + QComboBox * fieldsCB[4][3]; + QComboBox * barsCB[4]; + QDoubleSpinBox * minSB[4]; + QDoubleSpinBox * maxSB[4]; +}; + class TelemetryPanel : public ModelPanel { Q_OBJECT @@ -77,21 +104,10 @@ class TelemetryPanel : public ModelPanel void on_fasOffset_DSB_editingFinished(); void on_mahCount_SB_editingFinished(); void on_mahCount_ChkB_toggled(bool checked); - void telBarCBcurrentIndexChanged(int index); - void ScreenTypeCBcurrentIndexChanged(int index); - void telMaxSBeditingFinished(); - void telMinSBeditingFinished(); - void customFieldEdited(); private: Ui::Telemetry *ui; TelemetryAnalog * analogs[2]; - QGroupBox* barsGB[3]; - QGroupBox* numsGB[3]; - QComboBox* barsCB[12]; - QDoubleSpinBox* minSB[12]; - QDoubleSpinBox* maxSB[12]; - QComboBox* csf[36]; void setup(); void telBarUpdate(); diff --git a/companion/src/modeledit/telemetry.ui b/companion/src/modeledit/telemetry.ui index bb6bae9c9..6a3a6d618 100644 --- a/companion/src/modeledit/telemetry.ui +++ b/companion/src/modeledit/telemetry.ui @@ -7,7 +7,7 @@ 0 0 692 - 568 + 457 @@ -871,1240 +871,17 @@ - - - - - - 0 - 0 - - - - - - - - 1 - - - 1 - - - - - - 0 - 0 - - - - 0 - - - - Telemetry screen 1 - - - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - Telemetry screen 2 - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - Telemetry screen 3 - - - - - - - - - 0 - 0 - - - - Custom Screen Type - - - - - - - - 0 - 0 - - - - - 90 - 0 - - - - - Nums - - - - - Bars - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - 0 - 0 - - - - - - - - - - - - - - Source - - - Qt::AlignCenter - - - - - - - Min - - - Qt::AlignCenter - - - - - - - Gauge - - - Qt::AlignCenter - - - - - - - Max - - - Qt::AlignCenter - - - - - - - - 0 - 0 - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 1 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 2 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 3 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - 0 - - - - - - - false - - - Background:qlineargradient(spread:pad, x1:0, y1:0, x2:1, y2:0, stop:0 rgba(0, 0, 128, 255), stop:0.339795 rgba(0, 0, 128, 255), stop:0.339799 rgba(255, 255, 255, 255), stop:0.662444 rgba(255, 255, 255, 255),) - - - - QFrame::Panel - - - QFrame::Raised - - - Gauge 4 - - - Qt::AlignCenter - - - - - - - 0 - - - - - - - - - - - - - - + + + + 0 + 0 + + + + -1 + + diff --git a/companion/src/modeledit/telemetry_customscreen.ui b/companion/src/modeledit/telemetry_customscreen.ui new file mode 100644 index 000000000..b01417450 --- /dev/null +++ b/companion/src/modeledit/telemetry_customscreen.ui @@ -0,0 +1,138 @@ + + + TelemetryCustomScreen + + + + 0 + 0 + 650 + 393 + + + + Form + + + + + + + + + 0 + 0 + + + + + 0 + 0 + + + + Custom Screen Type + + + + + + + + 0 + 0 + + + + + 90 + 0 + + + + + Nums + + + + + Bars + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + + + + + + + Min + + + Qt::AlignCenter + + + + + + + Source + + + Qt::AlignCenter + + + + + + + Gauge + + + Qt::AlignCenter + + + + + + + Max + + + Qt::AlignCenter + + + + + + + + + + + + + diff --git a/companion/src/printdialog.cpp b/companion/src/printdialog.cpp index 86f1dc775..45d149c97 100644 --- a/companion/src/printdialog.cpp +++ b/companion/src/printdialog.cpp @@ -796,7 +796,7 @@ void printDialog::printFrSky() str.append(""+tr("System of units")+""+getFrSkyMeasure(fd->imperial)+""); str.append(""+tr("Propeller blades")+""+getFrSkyBlades(fd->blades)+""); str.append(""); - +#if 0 if (GetEepromInterface()->getCapability(TelemetryBars) || (GetEepromInterface()->getCapability(TelemetryCSFields))) { int cols=GetEepromInterface()->getCapability(TelemetryColsCSFields); if (cols==0) cols=2; @@ -840,6 +840,7 @@ void printDialog::printFrSky() } } } +#endif if (tc>0) te->append(str); }