Unverified Commit a60e221e authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #9021 from DonLakeFlyer/DynamicFactGroup

Fix bugs related to dynamic fact groups
parents eb07fbba 31930fd3
......@@ -14,19 +14,21 @@
#include <QSettings>
const char* FactValueGrid::_rowsKey = "rows";
const char* FactValueGrid::_fontSizeKey = "fontSize";
const char* FactValueGrid::_versionKey = "version";
const char* FactValueGrid::_factGroupNameKey = "groupName";
const char* FactValueGrid::_factNameKey = "factName";
const char* FactValueGrid::_textKey = "text";
const char* FactValueGrid::_showUnitsKey = "showUnits";
const char* FactValueGrid::_iconKey = "icon";
const char* FactValueGrid::_rangeTypeKey = "rangeType";
const char* FactValueGrid::_rangeValuesKey = "rangeValues";
const char* FactValueGrid::_rangeColorsKey = "rangeColors";
const char* FactValueGrid::_rangeIconsKey = "rangeIcons";
const char* FactValueGrid::_rangeOpacitiesKey = "rangeOpacities";
const char* FactValueGrid::_columnsKey = "columns";
const char* FactValueGrid::_rowsKey = "rows";
const char* FactValueGrid::_rowCountKey = "rowCount";
const char* FactValueGrid::_fontSizeKey = "fontSize";
const char* FactValueGrid::_versionKey = "version";
const char* FactValueGrid::_factGroupNameKey = "factGroupName";
const char* FactValueGrid::_factNameKey = "factName";
const char* FactValueGrid::_textKey = "text";
const char* FactValueGrid::_showUnitsKey = "showUnits";
const char* FactValueGrid::_iconKey = "icon";
const char* FactValueGrid::_rangeTypeKey = "rangeType";
const char* FactValueGrid::_rangeValuesKey = "rangeValues";
const char* FactValueGrid::_rangeColorsKey = "rangeColors";
const char* FactValueGrid::_rangeIconsKey = "rangeIcons";
const char* FactValueGrid::_rangeOpacitiesKey = "rangeOpacities";
const char* FactValueGrid::_deprecatedGroupKey = "ValuesWidget";
......@@ -272,9 +274,9 @@ void FactValueGrid::_saveSettings(void)
settings.setValue(_versionKey, 1);
settings.setValue(_fontSizeKey, _fontSize);
settings.setValue(_rowsKey, _rowCount);
settings.setValue(_rowCountKey, _rowCount);
settings.beginWriteArray(_rowsKey);
settings.beginWriteArray(_columnsKey);
for (int colIndex=0; colIndex<_columns->count(); colIndex++) {
QmlObjectListModel* columns = _columns->value<QmlObjectListModel*>(colIndex);
......@@ -324,11 +326,11 @@ void FactValueGrid::_loadSettings(void)
_fontSize = settings.value(_fontSizeKey, DefaultFontSize).value<FontSize>();
// Initial setup of empty items
int cColumns = settings.value(_rowsKey).toInt();
int cModelLists = settings.beginReadArray(_rowsKey);
if (cModelLists && cColumns) {
int cRows = settings.value(_rowCountKey).toInt();
int cModelLists = settings.beginReadArray(_columnsKey);
if (cModelLists && cRows) {
appendColumn();
for (int itemIndex=1; itemIndex<cColumns; itemIndex++) {
for (int rowIndex=1; rowIndex<cRows; rowIndex++) {
appendRow();
}
for (int colIndex=1; colIndex<cModelLists; colIndex++) {
......
......@@ -104,7 +104,9 @@ private:
static const QStringList _fontSizeNames;
static const char* _versionKey;
static const char* _columnsKey;
static const char* _rowsKey;
static const char* _rowCountKey;
static const char* _fontSizeKey;
static const char* _factGroupNameKey;
static const char* _factNameKey;
......
......@@ -14,8 +14,8 @@
#include <QSettings>
const QString HorizontalFactValueGrid::_toolbarUserSettingsGroup ("TelemetryBarUserSettingsWIP01");
const QString HorizontalFactValueGrid::telemetryBarDefaultSettingsGroup ("TelemetryBarDefaultSettingsWIP01");
const QString HorizontalFactValueGrid::_toolbarUserSettingsGroup ("TelemetryBarUserSettingsWIP02");
const QString HorizontalFactValueGrid::telemetryBarDefaultSettingsGroup ("TelemetryBarDefaultSettingsWIP02");
HorizontalFactValueGrid::HorizontalFactValueGrid(QQuickItem* parent)
: FactValueGrid(parent)
......
......@@ -42,37 +42,31 @@ InstrumentValueData::InstrumentValueData(FactValueGrid* factValueGrid, QObject*
void InstrumentValueData::_activeVehicleChanged(Vehicle* activeVehicle)
{
if (!activeVehicle) {
activeVehicle = qgcApp()->toolbox()->multiVehicleManager()->offlineEditingVehicle();
if (_activeVehicle) {
disconnect(_activeVehicle, &Vehicle::factGroupNamesChanged, this, &InstrumentValueData::_lookForMissingFact);
}
if (_fact) {
disconnect(_fact, &Fact::rawValueChanged, this, &InstrumentValueData::_updateColor);
if (!activeVehicle) {
activeVehicle = qgcApp()->toolbox()->multiVehicleManager()->offlineEditingVehicle();
}
_activeVehicle = activeVehicle;
connect(_activeVehicle, &Vehicle::factGroupNamesChanged, this, &InstrumentValueData::_lookForMissingFact);
emit factGroupNamesChanged();
if (_fact) {
_fact = nullptr;
FactGroup* factGroup = nullptr;
if (_factGroupName == vehicleFactGroupName) {
factGroup = _activeVehicle;
} else {
factGroup = _activeVehicle->getFactGroup(_factGroupName);
}
if (factGroup) {
_fact = factGroup->getFact(_factName);
}
emit factChanged(_fact);
connect(_fact, &Fact::rawValueChanged, this, &InstrumentValueData::_updateRanges);
if (!_factGroupName.isEmpty() && !_factName.isEmpty()) {
_setFactWorker();
}
}
_updateRanges();
void InstrumentValueData::_lookForMissingFact(void)
{
// This is called when new fact groups show up on the vehicle. We need to see if we can fill in any
// facts which may have been missing up to now.
if (!_fact) {
_setFactWorker();
}
}
void InstrumentValueData::clearFact(void)
......@@ -92,7 +86,7 @@ void InstrumentValueData::clearFact(void)
emit showUnitsChanged (_showUnits);
}
void InstrumentValueData::setFact(const QString& factGroupName, const QString& factName)
void InstrumentValueData::_setFactWorker(void)
{
if (_fact) {
disconnect(_fact, &Fact::rawValueChanged, this, &InstrumentValueData::_updateRanges);
......@@ -100,19 +94,18 @@ void InstrumentValueData::setFact(const QString& factGroupName, const QString& f
}
FactGroup* factGroup = nullptr;
if (factGroupName == vehicleFactGroupName) {
if (_factGroupName == vehicleFactGroupName) {
factGroup = _activeVehicle;
} else {
factGroup = _activeVehicle->getFactGroup(factGroupName);
factGroup = _activeVehicle->getFactGroup(_factGroupName);
}
_factGroupName = factGroupName;
QString nonEmptyFactName;
if (factGroup) {
if (factName.isEmpty()) {
if (_factName.isEmpty()) {
nonEmptyFactName = factValueNames()[0];
} else {
nonEmptyFactName = factName;
nonEmptyFactName = _factName;
}
_fact = factGroup->getFact(nonEmptyFactName);
}
......@@ -120,9 +113,6 @@ void InstrumentValueData::setFact(const QString& factGroupName, const QString& f
if (_fact) {
_factName = nonEmptyFactName;
connect(_fact, &Fact::rawValueChanged, this, &InstrumentValueData::_updateRanges);
} else {
_factGroupName.clear();
_factName.clear();
}
emit factValueNamesChanged ();
......@@ -132,6 +122,13 @@ void InstrumentValueData::setFact(const QString& factGroupName, const QString& f
_updateRanges();
}
void InstrumentValueData::setFact(const QString& factGroupName, const QString& factName)
{
_factGroupName = factGroupName;
_factName = factName;
_setFactWorker();
}
void InstrumentValueData::setText(const QString& text)
{
......@@ -364,6 +361,8 @@ QStringList InstrumentValueData::factGroupNames(void) const
QStringList InstrumentValueData::factValueNames(void) const
{
QStringList valueNames;
FactGroup* factGroup = nullptr;
if (_factGroupName == vehicleFactGroupName) {
factGroup = _activeVehicle;
......@@ -371,9 +370,11 @@ QStringList InstrumentValueData::factValueNames(void) const
factGroup = _activeVehicle->getFactGroup(_factGroupName);
}
QStringList valueNames = factGroup->factNames();
for (QString& name: valueNames) {
name[0] = name[0].toUpper();
if (factGroup) {
valueNames = factGroup->factNames();
for (QString& name: valueNames) {
name[0] = name[0].toUpper();
}
}
return valueNames;
......
......@@ -105,12 +105,14 @@ private slots:
void _resetRangeInfo (void);
void _updateRanges (void);
void _activeVehicleChanged (Vehicle* activeVehicle);
void _lookForMissingFact (void);
private:
int _currentRangeIndex (const QVariant& value);
void _updateColor (void);
void _updateIcon (void);
void _updateOpacity (void);
void _setFactWorker (void);
FactValueGrid* _factValueGrid = nullptr;
Vehicle* _activeVehicle = nullptr;
......
......@@ -23,7 +23,6 @@ ColumnLayout {
property bool settingsUnlocked: false
property alias contentWidth: label.contentWidth
property bool _verticalOrientation: instrumentValueData.factValueGrid.orientation === FactValueGrid.VerticalOrientation
property var _rgFontSizes: [ ScreenTools.defaultFontPointSize, ScreenTools.smallFontPointSize, ScreenTools.mediumFontPointSize, ScreenTools.largeFontPointSize ]
property var _rgFontSizeRatios: [ 1, ScreenTools.smallFontPointRatio, ScreenTools.mediumFontPointRatio, ScreenTools.largeFontPointRatio ]
property real _doubleDescent: ScreenTools.defaultFontDescent * 2
......@@ -32,17 +31,21 @@ ColumnLayout {
property real _tightHeight: _rgFontSizeTightHeights[instrumentValueData.factValueGrid.fontSize]
property real _fontSize: _rgFontSizes[instrumentValueData.factValueGrid.fontSize]
property real _horizontalLabelSpacing: ScreenTools.defaultFontPixelWidth
property bool _valueVisible: instrumentValueData.fact
property real _width: 0
property real _height: 0
QGCLabel {
id: label
Layout.alignment: _verticalOrientation ? Qt.AlignHCenter : Qt.AlignVCenter
Layout.alignment: Qt.AlignVCenter
font.pointSize: _fontSize
text: instrumentValueData.fact.enumOrValueString + (instrumentValueData.showUnits ? " " + instrumentValueData.fact.units : "")
visible: _valueVisible
text: valueText()
QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
function valueText() {
if (instrumentValueData.fact) {
return instrumentValueData.fact.enumOrValueString + (instrumentValueData.showUnits ? " " + instrumentValueData.fact.units : "")
} else {
return qsTr("--.--")
}
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment