diff --git a/src/FlightMap/Widgets/ValuePageWidget.qml b/src/FlightMap/Widgets/ValuePageWidget.qml index 5ec003707f84d3f87e4b3e1d90728bd0f6add1ad..3fc0b95336f8aa4dce84728c87d0a0f2bf5effb6 100644 --- a/src/FlightMap/Widgets/ValuePageWidget.qml +++ b/src/FlightMap/Widgets/ValuePageWidget.qml @@ -7,7 +7,7 @@ * ****************************************************************************/ -import QtQuick 2.3 +import QtQuick 2.12 import QtQuick.Dialogs 1.2 import QtQuick.Layouts 1.2 import QtQuick.Controls 2.5 @@ -304,6 +304,12 @@ Column { anchors.right: parent.right spacing: _margins + QGCButton { + Layout.fillWidth: true + text: qsTr("Blank Entry") + onClicked: { _valuePickerInstrumentValue.clearFact(); hideDialog() } + } + RowLayout { Layout.fillWidth: true spacing: ScreenTools.defaultFontPixelWidth @@ -319,7 +325,7 @@ Column { RowLayout { spacing: ScreenTools.defaultFontPixelWidth - QGCLabel { text: qsTr("Font Size (for whole row)") } + QGCLabel { text: qsTr("Font Size") } QGCComboBox { id: fontSizeCombo model: _valuePickerInstrumentValue.fontSizeNames @@ -327,31 +333,46 @@ Column { sizeToContents: true onActivated: _valuePickerInstrumentValue.fontSize = index } + QGCCheckBox { + text: qsTr("Show Units") + checked: _valuePickerInstrumentValue.showUnits + onClicked: _valuePickerInstrumentValue.showUnits = checked + } } RowLayout { spacing: ScreenTools.defaultFontPixelWidth QGCLabel { text: qsTr("Icon") } - QGCComboBox { - model: _valuePickerInstrumentValue.iconNames - sizeToContents: true - onActivated: _valuePickerInstrumentValue.icon = currentText - Component.onCompleted: { - currentIndex = find(_valuePickerInstrumentValue.icon) - if (currentIndex == -1) { - currentIndex = 0 - } + Rectangle { + height: iconPositionCombo.height + width: noIconLabel.width + ScreenTools.defaultFontPixelWidth * 2 + color: qgcPal.window + border.color: qgcPal.text + visible: !_valuePickerInstrumentValue.icon + + QGCLabel { + id: noIconLabel + anchors.centerIn: parent + text: qsTr("No Icon") } } - } - RowLayout { - spacing: ScreenTools.defaultFontPixelWidth + QGCColoredImage { + height: iconPositionCombo.height + width: height + source: _valuePickerInstrumentValue.icon ? "/InstrumentValueIcons/" + _valuePickerInstrumentValue.icon : "" + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: qgcPal.text + visible: _valuePickerInstrumentValue.icon + } - QGCLabel { text: qsTr("Icon Position") } QGCComboBox { + id: iconPositionCombo model: _valuePickerInstrumentValue.iconPositionNames currentIndex: _valuePickerInstrumentValue.iconPosition sizeToContents: true @@ -359,15 +380,19 @@ Column { } } - QGCCheckBox { - text: qsTr("Show Units") - checked: _valuePickerInstrumentValue.showUnits - onClicked: _valuePickerInstrumentValue.showUnits = checked + SectionHeader { + id: iconListHeader + Layout.fillWidth: true + text: qsTr("Icons") + checked: false } - QGCButton { - text: qsTr("Blank Entry") - onClicked: { _valuePickerInstrumentValue.clearFact(); hideDialog() } + Item { width: 1; height: 1 } + + Loader { + Layout.fillWidth: true + sourceComponent: iconListHeader.checked ? iconList : undefined + visible: iconListHeader.checked } Loader { @@ -394,6 +419,62 @@ Column { } } + Component { + id: iconList + + Flow { + Rectangle { + height: ScreenTools.minTouchPixels + width: noIconLabel.width + ScreenTools.defaultFontPixelWidth * 2 + color: isNoIcon ? qgcPal.text : qgcPal.window + border.color: isNoIcon ? qgcPal.window : qgcPal.text + + property bool isNoIcon: _valuePickerInstrumentValue.icon === "" + + QGCLabel { + id: noIconLabel + anchors.centerIn: parent + color: parent.isNoIcon ? qgcPal.window : qgcPal.text + text: qsTr("No Icon") + } + + MouseArea { + anchors.fill: parent + onClicked: _valuePickerInstrumentValue.icon = "" + } + } + + Repeater { + model: _valuePickerInstrumentValue.iconNames + + Rectangle { + height: ScreenTools.minTouchPixels + width: height + color: currentSelection ? qgcPal.text : qgcPal.window + + property bool currentSelection: _valuePickerInstrumentValue.icon == modelData + + QGCColoredImage { + anchors.centerIn: parent + height: parent.height * 0.75 + width: height + source: "/InstrumentValueIcons/" + modelData + sourceSize.height: height + fillMode: Image.PreserveAspectFit + mipmap: true + smooth: true + color: currentSelection ? qgcPal.window : qgcPal.text + + MouseArea { + anchors.fill: parent + onClicked: _valuePickerInstrumentValue.icon = modelData + } + } + } + } + } + } + Component { id: factGroupList diff --git a/src/FlightMap/Widgets/ValuesWidgetController.cc b/src/FlightMap/Widgets/ValuesWidgetController.cc index 8d0a68220c5a515f0766c04ae9ab976f3f13fe25..bf5242721ed4593d209249fd675d42064cedc2f9 100644 --- a/src/FlightMap/Widgets/ValuesWidgetController.cc +++ b/src/FlightMap/Widgets/ValuesWidgetController.cc @@ -32,8 +32,6 @@ const char* InstrumentValue::_iconPositionKey = "iconPosition"; QStringList InstrumentValue::_iconNames; -const QString InstrumentValue::_noIconName = QT_TRANSLATE_NOOP("InstrumentValue", "No Icon"); - // Important: The indices of these strings must match the InstrumentValue::IconPosition enumconst QStringList InstrumentValue::_iconPositionNames = { const QStringList InstrumentValue::_iconPositionNames = { QT_TRANSLATE_NOOP("InstrumentValue", "Above"), @@ -343,7 +341,6 @@ InstrumentValue::InstrumentValue(Vehicle* activeVehicle, FontSize fontSize, QmlO if (_iconNames.isEmpty()) { QDir iconDir(":/InstrumentValueIcons/"); _iconNames = iconDir.entryList(); - _iconNames.prepend(_noIconName); } } @@ -482,22 +479,20 @@ void InstrumentValue::clearFact(void) _fact = nullptr; _factGroupName.clear(); _label.clear(); + _icon.clear(); _showUnits = true; emit factChanged (_fact); emit factGroupNameChanged (_factGroupName); emit labelChanged (_label); + emit iconChanged (_icon); emit showUnitsChanged (_showUnits); } void InstrumentValue::setIcon(const QString& icon) { if (icon != _icon) { - if (icon == _noIconName) { - _icon.clear(); - } else { - _icon = icon; - } + _icon = icon; emit iconChanged(_icon); } } diff --git a/src/FlightMap/Widgets/ValuesWidgetController.h b/src/FlightMap/Widgets/ValuesWidgetController.h index c2fd4a39df5ab80f0bc456ec9bc3a217df541102..15f86e79f8b9e2b6b77e103762c0d7ba7a02d0b5 100644 --- a/src/FlightMap/Widgets/ValuesWidgetController.h +++ b/src/FlightMap/Widgets/ValuesWidgetController.h @@ -102,8 +102,6 @@ private: static const char* _showUnitsKey; static const char* _iconKey; static const char* _iconPositionKey; - - static const QString _noIconName; }; Q_DECLARE_METATYPE(InstrumentValue::FontSize)