Partly fixes #1861

This commit is contained in:
bsongis
2014-11-22 19:23:42 +01:00
parent ed6811ffce
commit 978e9a260c
6 changed files with 31 additions and 17 deletions
+1 -1
View File
@@ -970,7 +970,7 @@ class SensorData {
unsigned int gps;
unsigned int alt;
bool isAvailable() const { return type==TYPE_CALCULATED || id!=0 || instance!=0; }
bool isAvailable() const { return strlen(label) > 0; }
void updateUnit();
QString unitString() const;
void clear() { memset(this, 0, sizeof(SensorData)); }
+19 -13
View File
@@ -337,20 +337,25 @@ void TelemetryCustomScreen::populateTelemetrySourceCB(QComboBox *b, unsigned int
{
b->clear();
b->addItem(RawSource(SOURCE_TYPE_NONE, 0).toString(model));
for (unsigned int i = 0; i < (last ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_DISPLAY_COUNT); i++) {
b->addItem(RawSource(SOURCE_TYPE_TELEMETRY, i).toString(model));
if (!firmware->isTelemetrySourceAvailable(i)) {
// disable item
QModelIndex index = b->model()->index(i+1, 0);
QVariant v(0);
b->model()->setData(index, v, Qt::UserRole - 1);
}
if (IS_ARM(firmware->getBoard())) {
// TODO
}
else {
b->addItem(RawSource(SOURCE_TYPE_NONE, 0).toString(model));
b->setCurrentIndex(value);
b->setMaxVisibleItems(10);
for (unsigned int i = 0; i < (last ? TELEMETRY_SOURCES_STATUS_COUNT : TELEMETRY_SOURCES_DISPLAY_COUNT); i++) {
b->addItem(RawSource(SOURCE_TYPE_TELEMETRY, i).toString(model));
if (!firmware->isTelemetrySourceAvailable(i)) {
// disable item
QModelIndex index = b->model()->index(i+1, 0);
QVariant v(0);
b->model()->setData(index, v, Qt::UserRole - 1);
}
}
b->setCurrentIndex(value);
b->setMaxVisibleItems(10);
}
}
TelemetryCustomScreen::~TelemetryCustomScreen()
@@ -605,7 +610,7 @@ void TelemetrySensorPanel::on_name_editingFinished()
{
if (!lock) {
strcpy(sensor.label, ui->name->text().toAscii());
update();
emit nameModified();
emit modified();
}
}
@@ -678,6 +683,7 @@ TelemetryPanel::TelemetryPanel(QWidget *parent, ModelData & model, GeneralSettin
TelemetrySensorPanel * panel = new TelemetrySensorPanel(this, model.sensorData[i], model, generalSettings, firmware);
ui->sensorsLayout->addWidget(panel);
sensorPanels[i] = panel;
connect(panel, SIGNAL(nameModified()), this, SLOT(update()));
}
}
else {
+3
View File
@@ -87,6 +87,9 @@ class TelemetrySensorPanel: public ModelPanel
~TelemetrySensorPanel();
void update();
signals:
void nameModified();
protected slots:
void on_name_editingFinished();
void on_type_currentIndexChanged(int index);
+1 -1
View File
@@ -1240,8 +1240,8 @@ PACK(typedef struct {
};
void init(const char *label, uint8_t unit=UNIT_RAW, uint8_t prec=0);
void init(uint16_t id);
bool isAvailable();
int32_t getValue(int32_t value, uint8_t unit, uint8_t prec) const;
}) TelemetrySensor;
#endif
+6 -1
View File
@@ -445,7 +445,7 @@ int availableTelemetryIndex()
{
for (int index=0; index<TELEM_VALUES_MAX; index++) {
TelemetrySensor & telemetrySensor = g_model.telemetrySensors[index];
if (telemetrySensor.id == 0 && telemetrySensor.type == 0) {
if (!telemetrySensor.isAvailable()) {
return index;
}
}
@@ -483,6 +483,11 @@ void TelemetrySensor::init(uint16_t id)
init(label);
}
bool TelemetrySensor::isAvailable()
{
return ZLEN(label) > 0;
}
int32_t convertTelemetryValue(int32_t value, uint8_t unit, uint8_t prec, uint8_t destUnit, uint8_t destPrec)
{
for (int i=prec; i<destPrec; i++)
+1 -1
View File
@@ -167,7 +167,7 @@ extern TelemetryItem telemetryItems[TELEM_VALUES_MAX];
inline bool isTelemetryFieldAvailable(int index)
{
TelemetrySensor & sensor = g_model.telemetrySensors[index];
return sensor.type == TELEM_TYPE_CALCULATED || sensor.id != 0;
return sensor.isAvailable();
}
inline bool isTelemetryFieldComparisonAvailable(int index)