From 0ad9f79d8f54064235d4842ec4d20006fc6ce5f6 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 1 Mar 2017 13:15:35 -0800 Subject: [PATCH] ToolStrip auto-determine show/hide elements for fit --- src/FlightDisplay/FlightDisplayViewMap.qml | 1 + src/MissionEditor/MissionEditor.qml | 2 + src/QmlControls/ToolStrip.qml | 48 +++++++++++++++++++--- 3 files changed, 46 insertions(+), 5 deletions(-) diff --git a/src/FlightDisplay/FlightDisplayViewMap.qml b/src/FlightDisplay/FlightDisplayViewMap.qml index ed30b1510..f10ead043 100644 --- a/src/FlightDisplay/FlightDisplayViewMap.qml +++ b/src/FlightDisplay/FlightDisplayViewMap.qml @@ -85,6 +85,7 @@ FlightMap { title: qsTr("Fly") z: QGroundControl.zOrderWidgets buttonVisible: [ true, true, _showZoom, _showZoom ] + maxHeight: (_flightVideo.visible ? _flightVideo.y : parent.height) - toolStrip.y // Massive reach across hack property bool _showZoom: !ScreenTools.isShortScreen diff --git a/src/MissionEditor/MissionEditor.qml b/src/MissionEditor/MissionEditor.qml index d8038782a..87d7e1268 100644 --- a/src/MissionEditor/MissionEditor.qml +++ b/src/MissionEditor/MissionEditor.qml @@ -777,6 +777,7 @@ QGCView { rotateImage: [ false, false, _syncDropDownController.syncInProgress, false, false, false, false ] buttonEnabled: [ true, true, !_syncDropDownController.syncInProgress, true, true, true, true ] buttonVisible: [ true, true, true, true, true, _showZoom, _showZoom ] + maxHeight: mapScale.y - toolStrip.y property bool _showZoom: !ScreenTools.isShortScreen @@ -839,6 +840,7 @@ QGCView { } MapScale { + id: mapScale anchors.margins: ScreenTools.defaultFontPixelHeight * (0.66) anchors.bottom: waypointValuesDisplay.visible ? waypointValuesDisplay.top : parent.bottom anchors.left: parent.left diff --git a/src/QmlControls/ToolStrip.qml b/src/QmlControls/ToolStrip.qml index 76331e1f5..0df07900f 100644 --- a/src/QmlControls/ToolStrip.qml +++ b/src/QmlControls/ToolStrip.qml @@ -22,17 +22,55 @@ Rectangle { property string title: "Title" property alias model: repeater.model - property var showAlternateIcon - property var rotateImage - property var buttonEnabled - property var buttonVisible + property var showAlternateIcon ///< List of bool values, one for each button in strip - true: show alternate icon, false: show normal icon + property var rotateImage ///< List of bool values, one for each button in strip - true: animation rotation, false: static image + property var buttonEnabled ///< List of bool values, one for each button in strip - true: button enabled, false: button disabled + property var buttonVisible ///< List of bool values, one for each button in strip - true: button visible, false: button invisible + property real maxHeight ///< Maximum height for control, determines whether text is hidden to make control shorter signal clicked(int index, bool checked) readonly property real _radius: ScreenTools.defaultFontPixelWidth / 2 readonly property real _margin: ScreenTools.defaultFontPixelWidth / 2 readonly property real _buttonSpacing: ScreenTools.defaultFontPixelWidth - readonly property bool _showOptionalElements: !ScreenTools.isShortScreen + + // All of the following values, connections and function are to support the ability to determine + // whether to show or hide the optional elements on the fly. + + property bool _showOptionalElements: true + property bool _needRecalc: true + + Component.onCompleted: recalcShowOptionalElements() + + onMaxHeightChanged: recalcShowOptionalElements() + + Connections { + target: ScreenTools + + onDefaultFontPixelWidthChanged: recalcShowOptionalElements() + onDefaultFontPixelHeightChanged: recalcShowOptionalElements() + } + + onHeightChanged: { + if (_needRecalc) { + _needRecalc = false + if (maxHeight && height > maxHeight) { + _showOptionalElements = false + } + } + } + + function recalcShowOptionalElements() { + if (_showOptionalElements) { + if (maxHeight && height > maxHeight) { + _showOptionalElements = false + } + } else { + _needRecalc = true + _showOptionalElements = true + } + + } QGCPalette { id: qgcPal } ExclusiveGroup { id: dropButtonsExclusiveGroup } -- 2.22.0