Commit 7c20424b authored by Don Gagne's avatar Don Gagne Committed by GitHub

Merge pull request #4741 from DonLakeFlyer/Advanced

Correct handling of Advanced mode for App Settings
parents 6b10539a 7b33c740
...@@ -25,7 +25,7 @@ MouseArea { ...@@ -25,7 +25,7 @@ MouseArea {
Rectangle { Rectangle {
anchors.fill: parent anchors.fill: parent
border.color: "red" border.color: "red"
border.width: QGroundControl.showTouchAreas ? 1 : 0 border.width: QGroundControl.corePlugin.showTouchAreas ? 1 : 0
color: "transparent" color: "transparent"
} }
} }
...@@ -32,8 +32,6 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app) ...@@ -32,8 +32,6 @@ QGroundControlQmlGlobal::QGroundControlQmlGlobal(QGCApplication* app)
, _corePlugin(NULL) , _corePlugin(NULL)
, _firmwarePluginManager(NULL) , _firmwarePluginManager(NULL)
, _settingsManager(NULL) , _settingsManager(NULL)
, _showTouchAreas(false)
, _showAdvancedUI(false)
{ {
// We clear the parent on this object since we run into shutdown problems caused by hybrid qml app. Instead we let it leak on shutdown. // We clear the parent on this object since we run into shutdown problems caused by hybrid qml app. Instead we let it leak on shutdown.
setParent(NULL); setParent(NULL);
......
...@@ -73,9 +73,6 @@ public: ...@@ -73,9 +73,6 @@ public:
Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT) Q_PROPERTY(QString qgcVersion READ qgcVersion CONSTANT)
Q_PROPERTY(bool showTouchAreas MEMBER _showTouchAreas NOTIFY showTouchAreasChanged)
Q_PROPERTY(bool showAdvancedUI MEMBER _showAdvancedUI NOTIFY showAdvancedUIChanged)
Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value); Q_INVOKABLE void saveGlobalSetting (const QString& key, const QString& value);
Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue); Q_INVOKABLE QString loadGlobalSetting (const QString& key, const QString& defaultValue);
Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value); Q_INVOKABLE void saveBoolGlobalSetting (const QString& key, bool value);
...@@ -156,9 +153,6 @@ public: ...@@ -156,9 +153,6 @@ public:
QString qgcVersion(void) const { return qgcApp()->applicationVersion(); } QString qgcVersion(void) const { return qgcApp()->applicationVersion(); }
bool showTouchAreas(void) const { return _showTouchAreas; } ///< Show visible extents of touch areas
bool showAdvancedUI(void) const { return _showAdvancedUI; } ///< Show hidden advanced UI
// Overrides from QGCTool // Overrides from QGCTool
virtual void setToolbox(QGCToolbox* toolbox); virtual void setToolbox(QGCToolbox* toolbox);
...@@ -168,8 +162,6 @@ signals: ...@@ -168,8 +162,6 @@ signals:
void mavlinkSystemIDChanged (int id); void mavlinkSystemIDChanged (int id);
void flightMapPositionChanged (QGeoCoordinate flightMapPosition); void flightMapPositionChanged (QGeoCoordinate flightMapPosition);
void flightMapZoomChanged (double flightMapZoom); void flightMapZoomChanged (double flightMapZoom);
void showTouchAreasChanged (bool showTouchAreas);
void showAdvancedUIChanged (bool showAdvancedUI);
private: private:
FlightMapSettings* _flightMapSettings; FlightMapSettings* _flightMapSettings;
...@@ -186,9 +178,6 @@ private: ...@@ -186,9 +178,6 @@ private:
QGeoCoordinate _flightMapPosition; QGeoCoordinate _flightMapPosition;
double _flightMapZoom; double _flightMapZoom;
bool _showTouchAreas;
bool _showAdvancedUI;
}; };
#endif #endif
...@@ -7,7 +7,7 @@ import QGroundControl.Palette 1.0 ...@@ -7,7 +7,7 @@ import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0 import QGroundControl.ScreenTools 1.0
Button { Button {
id: _rootButton id: _rootButton
property bool setupComplete: true ///< true: setup complete indicator shows as completed property bool setupComplete: true ///< true: setup complete indicator shows as completed
property bool setupIndicator: true ///< true: show setup complete indicator property bool setupIndicator: true ///< true: show setup complete indicator
property string imageResource: "/qmlimages/subMenuButtonImage.png" ///< Button image property string imageResource: "/qmlimages/subMenuButtonImage.png" ///< Button image
...@@ -17,6 +17,7 @@ Button { ...@@ -17,6 +17,7 @@ Button {
checkable: true checkable: true
implicitHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3.5 : ScreenTools.defaultFontPixelHeight * 2.5 implicitHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3.5 : ScreenTools.defaultFontPixelHeight * 2.5
implicitWidth: __panel.implicitWidth
style: ButtonStyle { style: ButtonStyle {
id: buttonStyle id: buttonStyle
......
...@@ -7,13 +7,9 @@ ...@@ -7,13 +7,9 @@
* *
****************************************************************************/ ****************************************************************************/
/// @file
/// @brief Setup View
/// @author Don Gagne <don@thegagnes.com>
import QtQuick 2.3 import QtQuick 2.3
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtQuick.Layouts 1.2
import QGroundControl 1.0 import QGroundControl 1.0
import QGroundControl.AutoPilotPlugin 1.0 import QGroundControl.AutoPilotPlugin 1.0
...@@ -217,36 +213,10 @@ Rectangle { ...@@ -217,36 +213,10 @@ Rectangle {
flickableDirection: Flickable.VerticalFlick flickableDirection: Flickable.VerticalFlick
clip: true clip: true
Column { ColumnLayout {
id: buttonColumn id: buttonColumn
width: _maxButtonWidth
spacing: _defaultTextHeight / 2 spacing: _defaultTextHeight / 2
property real _maxButtonWidth: 0
Component.onCompleted: reflowWidths()
Connections {
target: componentRepeater
onModelChanged: buttonColumn.reflowWidths()
}
// I don't know why this does not work
Connections {
target: QGroundControl.settingsManager.appSettings.appFontPointSize
onValueChanged: buttonColumn.reflowWidths()
}
function reflowWidths() {
buttonColumn._maxButtonWidth = 0
for (var i = 0; i < children.length; i++) {
buttonColumn._maxButtonWidth = Math.max(buttonColumn._maxButtonWidth, children[i].width)
}
for (var j = 0; j < children.length; j++) {
children[j].width = buttonColumn._maxButtonWidth
}
}
QGCLabel { QGCLabel {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
...@@ -257,56 +227,62 @@ Rectangle { ...@@ -257,56 +227,62 @@ Rectangle {
} }
Repeater { Repeater {
model: QGroundControl.corePlugin.settings model: QGroundControl.corePlugin.settingsPages
visible: QGroundControl.corePlugin.options.combineSettingsAndSetup visible: QGroundControl.corePlugin.options.combineSettingsAndSetup
SubMenuButton { SubMenuButton {
imageResource: modelData.icon imageResource: modelData.icon
setupIndicator: false setupIndicator: false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
text: modelData.title text: modelData.title
visible: QGroundControl.corePlugin.options.combineSettingsAndSetup visible: QGroundControl.corePlugin.options.combineSettingsAndSetup
onClicked: panelLoader.setSource(modelData.url) onClicked: panelLoader.setSource(modelData.url)
Layout.fillWidth: true
} }
} }
SubMenuButton { SubMenuButton {
id: summaryButton id: summaryButton
imageResource: "/qmlimages/VehicleSummaryIcon.png" imageResource: "/qmlimages/VehicleSummaryIcon.png"
setupIndicator: false setupIndicator: false
checked: true checked: true
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
text: "Summary" text: "Summary"
Layout.fillWidth: true
onClicked: showSummaryPanel() onClicked: showSummaryPanel()
} }
SubMenuButton { SubMenuButton {
id: firmwareButton id: firmwareButton
imageResource: "/qmlimages/FirmwareUpgradeIcon.png" imageResource: "/qmlimages/FirmwareUpgradeIcon.png"
setupIndicator: false setupIndicator: false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: !ScreenTools.isMobile visible: !ScreenTools.isMobile
text: "Firmware" text: "Firmware"
Layout.fillWidth: true
onClicked: showFirmwarePanel() onClicked: showFirmwarePanel()
} }
SubMenuButton { SubMenuButton {
id: px4FlowButton id: px4FlowButton
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle.genericFirmware : false visible: QGroundControl.multiVehicleManager.activeVehicle ? QGroundControl.multiVehicleManager.activeVehicle.genericFirmware : false
setupIndicator: false setupIndicator: false
text: "PX4Flow" text: "PX4Flow"
Layout.fillWidth: true
onClicked: showPX4FlowPanel() onClicked: showPX4FlowPanel()
} }
SubMenuButton { SubMenuButton {
id: joystickButton id: joystickButton
setupIndicator: true setupIndicator: true
setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false setupComplete: joystickManager.activeJoystick ? joystickManager.activeJoystick.calibrated : false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0 visible: _fullParameterVehicleAvailable && joystickManager.joysticks.length != 0
text: "Joystick" text: "Joystick"
Layout.fillWidth: true
onClicked: showJoystickPanel() onClicked: showJoystickPanel()
} }
...@@ -316,22 +292,24 @@ Rectangle { ...@@ -316,22 +292,24 @@ Rectangle {
model: _fullParameterVehicleAvailable ? QGroundControl.multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0 model: _fullParameterVehicleAvailable ? QGroundControl.multiVehicleManager.activeVehicle.autopilot.vehicleComponents : 0
SubMenuButton { SubMenuButton {
imageResource: modelData.iconResource imageResource: modelData.iconResource
setupIndicator: modelData.requiresSetup setupIndicator: modelData.requiresSetup
setupComplete: modelData.setupComplete setupComplete: modelData.setupComplete
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
text: modelData.name text: modelData.name
visible: modelData.setupSource.toString() != "" visible: modelData.setupSource.toString() != ""
Layout.fillWidth: true
onClicked: showVehicleComponentPanel(modelData) onClicked: showVehicleComponentPanel(modelData)
} }
} }
SubMenuButton { SubMenuButton {
setupIndicator: false setupIndicator: false
exclusiveGroup: setupButtonGroup exclusiveGroup: setupButtonGroup
visible: QGroundControl.multiVehicleManager.parameterReadyVehicleAvailable visible: QGroundControl.multiVehicleManager.parameterReadyVehicleAvailable
text: "Parameters" text: "Parameters"
Layout.fillWidth: true
onClicked: showParametersPanel() onClicked: showParametersPanel()
} }
......
...@@ -36,6 +36,7 @@ public: ...@@ -36,6 +36,7 @@ public:
, defaultOptions(NULL) , defaultOptions(NULL)
{ {
} }
~QGCCorePlugin_p() ~QGCCorePlugin_p()
{ {
if(pGeneral) if(pGeneral)
...@@ -57,6 +58,7 @@ public: ...@@ -57,6 +58,7 @@ public:
if(defaultOptions) if(defaultOptions)
delete defaultOptions; delete defaultOptions;
} }
QGCSettings* pGeneral; QGCSettings* pGeneral;
QGCSettings* pCommLinks; QGCSettings* pCommLinks;
QGCSettings* pOfflineMaps; QGCSettings* pOfflineMaps;
...@@ -79,6 +81,8 @@ QGCCorePlugin::~QGCCorePlugin() ...@@ -79,6 +81,8 @@ QGCCorePlugin::~QGCCorePlugin()
QGCCorePlugin::QGCCorePlugin(QGCApplication *app) QGCCorePlugin::QGCCorePlugin(QGCApplication *app)
: QGCTool(app) : QGCTool(app)
, _showTouchAreas(false)
, _showAdvancedUI(false)
{ {
_p = new QGCCorePlugin_p; _p = new QGCCorePlugin_p;
} }
...@@ -91,7 +95,7 @@ void QGCCorePlugin::setToolbox(QGCToolbox *toolbox) ...@@ -91,7 +95,7 @@ void QGCCorePlugin::setToolbox(QGCToolbox *toolbox)
qmlRegisterUncreatableType<QGCOptions>("QGroundControl.QGCOptions", 1, 0, "QGCOptions", "Reference only"); qmlRegisterUncreatableType<QGCOptions>("QGroundControl.QGCOptions", 1, 0, "QGCOptions", "Reference only");
} }
QVariantList &QGCCorePlugin::settings() QVariantList &QGCCorePlugin::settingsPages()
{ {
//-- If this hasn't been overridden, create default set of settings //-- If this hasn't been overridden, create default set of settings
if(!_p->pGeneral) { if(!_p->pGeneral) {
......
...@@ -33,13 +33,16 @@ public: ...@@ -33,13 +33,16 @@ public:
QGCCorePlugin(QGCApplication* app); QGCCorePlugin(QGCApplication* app);
~QGCCorePlugin(); ~QGCCorePlugin();
Q_PROPERTY(QVariantList settings READ settings CONSTANT) Q_PROPERTY(QVariantList settingsPages READ settingsPages NOTIFY settingsPagesChanged)
Q_PROPERTY(int defaultSettings READ defaultSettings CONSTANT) Q_PROPERTY(int defaultSettings READ defaultSettings CONSTANT)
Q_PROPERTY(QGCOptions* options READ options CONSTANT) Q_PROPERTY(QGCOptions* options READ options CONSTANT)
Q_PROPERTY(bool showTouchAreas MEMBER _showTouchAreas NOTIFY showTouchAreasChanged)
Q_PROPERTY(bool showAdvancedUI MEMBER _showAdvancedUI NOTIFY showAdvancedUIChanged)
/// The list of settings under the Settings Menu /// The list of settings under the Settings Menu
/// @return A list of QGCSettings /// @return A list of QGCSettings
virtual QVariantList& settings (); virtual QVariantList& settingsPages ();
/// The default settings panel to show /// The default settings panel to show
/// @return The settings index /// @return The settings index
...@@ -61,6 +64,16 @@ public: ...@@ -61,6 +64,16 @@ public:
// Override from QGCTool // Override from QGCTool
void setToolbox (QGCToolbox *toolbox); void setToolbox (QGCToolbox *toolbox);
signals:
void settingsPagesChanged (void);
void showTouchAreasChanged (bool showTouchAreas);
void showAdvancedUIChanged (bool showAdvancedUI);
protected:
bool _showTouchAreas;
bool _showAdvancedUI;
private: private:
QGCCorePlugin_p* _p; QGCCorePlugin_p* _p;
}; };
...@@ -10,12 +10,11 @@ ...@@ -10,12 +10,11 @@
import QtQuick 2.3 import QtQuick 2.3
import QtQuick.Controls 1.2 import QtQuick.Controls 1.2
import QtPositioning 5.3 import QtQuick.Layouts 1.2
import QGroundControl 1.0 import QGroundControl 1.0
import QGroundControl.Palette 1.0 import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0 import QGroundControl.Controls 1.0
import QGroundControl.FlightDisplay 1.0
import QGroundControl.ScreenTools 1.0 import QGroundControl.ScreenTools 1.0
Rectangle { Rectangle {
...@@ -28,7 +27,6 @@ Rectangle { ...@@ -28,7 +27,6 @@ Rectangle {
readonly property real _horizontalMargin: _defaultTextWidth / 2 readonly property real _horizontalMargin: _defaultTextWidth / 2
readonly property real _verticalMargin: _defaultTextHeight / 2 readonly property real _verticalMargin: _defaultTextHeight / 2
readonly property real _buttonHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3 : ScreenTools.defaultFontPixelHeight * 2 readonly property real _buttonHeight: ScreenTools.isTinyScreen ? ScreenTools.defaultFontPixelHeight * 3 : ScreenTools.defaultFontPixelHeight * 2
readonly property real _buttonWidth: ScreenTools.defaultFontPixelWidth * 10
property bool _first: true property bool _first: true
...@@ -36,7 +34,7 @@ Rectangle { ...@@ -36,7 +34,7 @@ Rectangle {
Component.onCompleted: { Component.onCompleted: {
//-- Default Settings //-- Default Settings
__rightPanel.source = QGroundControl.corePlugin.settings[QGroundControl.corePlugin.defaultSettings].url __rightPanel.source = QGroundControl.corePlugin.settingsPages[QGroundControl.corePlugin.defaultSettings].url
} }
QGCFlickable { QGCFlickable {
...@@ -53,25 +51,12 @@ Rectangle { ...@@ -53,25 +51,12 @@ Rectangle {
ExclusiveGroup { id: panelActionGroup } ExclusiveGroup { id: panelActionGroup }
Column { ColumnLayout {
id: buttonColumn id: buttonColumn
width: _maxButtonWidth
spacing: _verticalMargin spacing: _verticalMargin
property real _maxButtonWidth: 0 property real _maxButtonWidth: 0
Component.onCompleted: reflowWidths()
function reflowWidths() {
buttonColumn._maxButtonWidth = 0
for (var i = 0; i < children.length; i++) {
buttonColumn._maxButtonWidth = Math.max(buttonColumn._maxButtonWidth, children[i].width)
}
for (var j = 0; j < children.length; j++) {
children[j].width = buttonColumn._maxButtonWidth
}
}
QGCLabel { QGCLabel {
anchors.left: parent.left anchors.left: parent.left
anchors.right: parent.right anchors.right: parent.right
...@@ -82,17 +67,20 @@ Rectangle { ...@@ -82,17 +67,20 @@ Rectangle {
} }
Repeater { Repeater {
model: QGroundControl.corePlugin.settings model: QGroundControl.corePlugin.settingsPages
QGCButton { QGCButton {
height: _buttonHeight height: _buttonHeight
text: modelData.title text: modelData.title
exclusiveGroup: panelActionGroup exclusiveGroup: panelActionGroup
Layout.fillWidth: true
onClicked: { onClicked: {
if(__rightPanel.source !== modelData.url) { if(__rightPanel.source !== modelData.url) {
__rightPanel.source = modelData.url __rightPanel.source = modelData.url
} }
checked = true checked = true
} }
Component.onCompleted: { Component.onCompleted: {
if(_first) { if(_first) {
_first = false _first = false
......
...@@ -74,9 +74,9 @@ Rectangle { ...@@ -74,9 +74,9 @@ Rectangle {
console.log("easter egg click", ++_clickCount) console.log("easter egg click", ++_clickCount)
eggTimer.restart() eggTimer.restart()
if (_clickCount == 5) { if (_clickCount == 5) {
QGroundControl.showAdvancedUI = true QGroundControl.corePlugin.showAdvancedUI = true
} else if (_clickCount == 7) { } else if (_clickCount == 7) {
QGroundControl.showTouchAreas = true QGroundControl.corePlugin.showTouchAreas = true
} }
} }
......
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