diff --git a/src/FactSystem/SettingsFact.cc b/src/FactSystem/SettingsFact.cc index 1f673d938f421d7563a27c0733d58f34aff17891..eb4c4fc86f43c80550e9d3ffa7c576faef9c3cf5 100644 --- a/src/FactSystem/SettingsFact.cc +++ b/src/FactSystem/SettingsFact.cc @@ -23,6 +23,7 @@ SettingsFact::SettingsFact(QObject* parent) SettingsFact::SettingsFact(QString settingGroup, FactMetaData* metaData, QObject* parent) : Fact(0, metaData->name(), metaData->type(), parent) , _settingGroup(settingGroup) + , _visible(true) { QSettings settings; @@ -31,7 +32,7 @@ SettingsFact::SettingsFact(QString settingGroup, FactMetaData* metaData, QObject } // Allow core plugin a chance to override the default value - metaData->setRawDefaultValue(qgcApp()->toolbox()->corePlugin()->overrideSettingsDefault(metaData->name(), metaData->rawDefaultValue())); + _visible = qgcApp()->toolbox()->corePlugin()->adjustSettingMetaData(*metaData); setMetaData(metaData); QVariant typedValue; diff --git a/src/FactSystem/SettingsFact.h b/src/FactSystem/SettingsFact.h index 0984d4764e767d0698afc4e9b15538c38a317ddf..cb6e8330f5dcfab731070e2533de2092f00940f2 100644 --- a/src/FactSystem/SettingsFact.h +++ b/src/FactSystem/SettingsFact.h @@ -28,11 +28,14 @@ public: const SettingsFact& operator=(const SettingsFact& other); + Q_PROPERTY(bool visible MEMBER _visible CONSTANT) + private slots: void _rawValueChanged(QVariant value); private: QString _settingGroup; + bool _visible; }; #endif diff --git a/src/api/QGCCorePlugin.cc b/src/api/QGCCorePlugin.cc index aee94cde77f33acb808447c2d8d123566fdbda87..78fa0150db72f6bccab49066dba7e2987bd92890 100644 --- a/src/api/QGCCorePlugin.cc +++ b/src/api/QGCCorePlugin.cc @@ -10,6 +10,7 @@ #include "QGCCorePlugin.h" #include "QGCOptions.h" #include "QGCSettings.h" +#include "FactMetaData.h" #include #include @@ -140,13 +141,6 @@ QGCOptions* QGCCorePlugin::options() return _p->defaultOptions; } -QVariant QGCCorePlugin::overrideSettingsDefault(QString name, QVariant defaultValue) -{ - Q_UNUSED(name); - // No overrides for base plugin - return defaultValue; -} - QVariantList& QGCCorePlugin::toolBarIndicators() { if(_p->toolBarIndicatorList.size() == 0) { @@ -163,7 +157,13 @@ QVariantList& QGCCorePlugin::toolBarIndicators() bool QGCCorePlugin::overrideSettingsGroupVisibility(QString name) { Q_UNUSED(name); - + // Always show all return true; } + +bool QGCCorePlugin::adjustSettingMetaData(FactMetaData& metaData) +{ + Q_UNUSED(metaData); // No mods to standard meta data + return true; // Show setting in ui +} diff --git a/src/api/QGCCorePlugin.h b/src/api/QGCCorePlugin.h index 76250aa2eba5805ca78ee2c79d6c1f8d93bdabe5..e9f1a0a9f3cd82e2c8fedcd9a5b36616c4c5c18e 100644 --- a/src/api/QGCCorePlugin.h +++ b/src/api/QGCCorePlugin.h @@ -24,6 +24,7 @@ class QGCApplication; class QGCOptions; class QGCSettings; class QGCCorePlugin_p; +class FactMetaData; class QGCCorePlugin : public QGCTool { @@ -58,11 +59,10 @@ public: /// @return true: Show settings ui, false: Hide settings ui virtual bool overrideSettingsGroupVisibility (QString name); - /// Allows the core plugin to override the default value for the specified setting - /// @param name - Setting name - /// @param defaultValue - Standard default value for setting - /// @return New default value for setting, if no override just return passed in defaultValue - virtual QVariant overrideSettingsDefault (QString name, QVariant defaultValue); + /// Allows the core plugin to override the setting meta data before the setting fact is created. + /// @param metaData - MetaData for setting fact + /// @return true: Setting should be visible in ui, false: Setting should not be shown in ui + virtual bool adjustSettingMetaData (FactMetaData& metaData); // Override from QGCTool void setToolbox (QGCToolbox *toolbox); diff --git a/src/ui/preferences/GeneralSettings.qml b/src/ui/preferences/GeneralSettings.qml index 9a14487f7c22057197e4b3f053ac4a402bf431f4..94f1968214c991c25263628ed31e02794e821f3b 100644 --- a/src/ui/preferences/GeneralSettings.qml +++ b/src/ui/preferences/GeneralSettings.qml @@ -54,6 +54,7 @@ QGCView { width: qgcView.width spacing: ScreenTools.defaultFontPixelHeight * 0.5 anchors.margins: ScreenTools.defaultFontPixelWidth + //----------------------------------------------------------------- //-- Units Item { @@ -79,50 +80,33 @@ QGCView { id: unitsCol spacing: ScreenTools.defaultFontPixelWidth anchors.centerIn: parent - Row { - spacing: ScreenTools.defaultFontPixelWidth - QGCLabel { - width: _labelWidth - anchors.baseline: distanceUnitsCombo.baseline - text: qsTr("Distance:") - } - FactComboBox { - id: distanceUnitsCombo - width: _editFieldWidth - fact: QGroundControl.settingsManager.unitsSettings.distanceUnits - indexModel: false - } - } - Row { - spacing: ScreenTools.defaultFontPixelWidth - QGCLabel { - width: _labelWidth - anchors.baseline: areaUnitsCombo.baseline - text: qsTr("Area:") - } - FactComboBox { - id: areaUnitsCombo - width: _editFieldWidth - fact: QGroundControl.settingsManager.unitsSettings.areaUnits - indexModel: false - } - } - Row { - spacing: ScreenTools.defaultFontPixelWidth - QGCLabel { - width: _labelWidth - anchors.baseline: speedUnitsCombo.baseline - text: qsTr("Speed:") - } - FactComboBox { - id: speedUnitsCombo - width: _editFieldWidth - fact: QGroundControl.settingsManager.unitsSettings.speedUnits - indexModel: false + + Repeater { + id: unitsRepeater + model: [ QGroundControl.settingsManager.unitsSettings.distanceUnits, QGroundControl.settingsManager.unitsSettings.areaUnits, QGroundControl.settingsManager.unitsSettings.speedUnits ] + + property var names: [ qsTr("Distance:"), qsTr("Area:"), qsTr("Speed:") ] + + Row { + spacing: ScreenTools.defaultFontPixelWidth + visible: modelData.visible + + QGCLabel { + width: _labelWidth + anchors.baseline: factCombo.baseline + text: unitsRepeater.names[index] + } + FactComboBox { + id: factCombo + width: _editFieldWidth + fact: modelData + indexModel: false + } } } } } + //----------------------------------------------------------------- //-- Miscellanous Item { @@ -395,6 +379,7 @@ QGCView { } } } + //----------------------------------------------------------------- //-- Autoconnect settings Item { @@ -416,44 +401,37 @@ QGCView { anchors.margins: ScreenTools.defaultFontPixelWidth anchors.horizontalCenter: parent.horizontalCenter visible: QGroundControl.settingsManager.autoConnectSettings.visible + Column { id: autoConnectCol spacing: ScreenTools.defaultFontPixelWidth anchors.centerIn: parent - //----------------------------------------------------------------- - //-- Autoconnect settings + Row { spacing: ScreenTools.defaultFontPixelWidth * 2 - FactCheckBox { - text: qsTr("Pixhawk") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectPixhawk - visible: !ScreenTools.isiOS - } - FactCheckBox { - text: qsTr("SiK Radio") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectSiKRadio - visible: !ScreenTools.isiOS - } - FactCheckBox { - text: qsTr("PX4 Flow") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectPX4Flow - visible: !ScreenTools.isiOS - } - FactCheckBox { - text: qsTr("LibrePilot") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectLibrePilot - } - FactCheckBox { - text: qsTr("UDP") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectUDP - } - FactCheckBox { - text: qsTr("RTK GPS") - fact: QGroundControl.settingsManager.autoConnectSettings.autoConnectRTKGPS + + Repeater { + id: autoConnectRepeater + model: [ QGroundControl.settingsManager.autoConnectSettings.autoConnectPixhawk, + QGroundControl.settingsManager.autoConnectSettings.autoConnectSiKRadio, + QGroundControl.settingsManager.autoConnectSettings.autoConnectPX4Flow, + QGroundControl.settingsManager.autoConnectSettings.autoConnectLibrePilot, + QGroundControl.settingsManager.autoConnectSettings.autoConnectUDP, + QGroundControl.settingsManager.autoConnectSettings.autoConnectRTKGPS + ] + + property var names: [ qsTr("Pixhawk"), qsTr("SiK Radio"), qsTr("PX4 Flow"), qsTr("LibrePilot"), qsTr("UDP"), qsTr("RTK GPS") ] + + FactCheckBox { + text: autoConnectRepeater.names[index] + fact: modelData + visible: !ScreenTools.isiOS && modelData.visible + } } } } } + //----------------------------------------------------------------- //-- Video Source Item {