void TelemetryCustomScreen::update() { lock = true; ui->screenType->setCurrentIndex(screen.type); ui->screenNums->setVisible(screen.type == 0); ui->screenBars->setVisible(screen.type != 0); for (int l=0; l<4; l++) { for (int c=0; c<firmware->getCapability(TelemetryCustomScreensFieldsPerLine); c++) { populateTelemetrySourceCB(fieldsCB[l][c], screen.body.lines[l].source[c], l==3, model.frsky.usrProto); } } for (int l=0; l<4; l++) { populateTelemetrySourceCB(barsCB[l], screen.body.bars[l].source, false, model.frsky.usrProto); } if (screen.type == 0) { for (int l=0; l<4; l++) { for (int c=0; c<firmware->getCapability(TelemetryCustomScreensFieldsPerLine); c++) { fieldsCB[l][c]->setCurrentIndex(screen.body.lines[l].source[c]); } } } else { for (int i=0; i<4; i++) { updateBar(i); } } lock = false; }
TelemetryCustomScreen::TelemetryCustomScreen(QWidget *parent, ModelData & model, FrSkyScreenData & screen, GeneralSettings & generalSettings, FirmwareInterface * firmware): ModelPanel(parent, model, generalSettings, firmware), ui(new Ui::TelemetryCustomScreen), screen(screen) { ui->setupUi(this); for (int l=0; l<4; l++) { for (int c=0; c<firmware->getCapability(TelemetryCustomScreensFieldsPerLine); c++) { fieldsCB[l][c] = new QComboBox(this); fieldsCB[l][c]->setProperty("index", c + (l<<8)); populateTelemetrySourceCB(fieldsCB[l][c], screen.body.lines[l].source[c], l==3, 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); populateTelemetrySourceCB(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(); }