-
Gus Grubba authored
Toggle Rally Point insertion on/off. Highlight current Rally Point and current Waypoint. Use tab bar instead of a row of radio buttons for selection (Mission, Fence, Rally). Fix QGCHoverButton to handle proper checked state toggle. Get rid of the many arrays used to define behaviors for the ToolStrip. They are now all defined within its model. Fixed color for disabled text within ToolStrip (it was invisible)
Gus Grubba authoredToggle Rally Point insertion on/off. Highlight current Rally Point and current Waypoint. Use tab bar instead of a row of radio buttons for selection (Mission, Fence, Rally). Fix QGCHoverButton to handle proper checked state toggle. Get rid of the many arrays used to define behaviors for the ToolStrip. They are now all defined within its model. Fixed color for disabled text within ToolStrip (it was invisible)
ToolStrip.qml 3.77 KiB
/****************************************************************************
*
* (c) 2009-2016 QGROUNDCONTROL PROJECT <http://www.qgroundcontrol.org>
*
* QGroundControl is licensed according to the terms in the file
* COPYING.md in the root of the source code directory.
*
****************************************************************************/
import QtQuick 2.11
import QtQuick.Controls 2.2
import QGroundControl 1.0
import QGroundControl.ScreenTools 1.0
import QGroundControl.Palette 1.0
import QGroundControl.Controls 1.0
Rectangle {
id: _root
color: qgcPal.globalTheme === QGCPalette.Light ? QGroundControl.corePlugin.options.toolbarBackgroundLight : QGroundControl.corePlugin.options.toolbarBackgroundDark
width: _idealWidth < repeater.contentWidth ? repeater.contentWidth : _idealWidth
height: toolStripColumn.height + (toolStripColumn.anchors.margins * 2)
radius: ScreenTools.defaultFontPixelWidth / 2
property alias model: repeater.model
property real maxHeight ///< Maximum height for control, determines whether text is hidden to make control shorter
property AbstractButton lastClickedButton: null
// Ensure we don't get narrower than content
property real _idealWidth: (ScreenTools.isMobile ? ScreenTools.minTouchPixels : ScreenTools.defaultFontPixelWidth * 8) + toolStripColumn.anchors.margins * 2
signal clicked(int index, bool checked)
function setChecked(idx, check) {
repeater.itemAt(idx).checked = check
}
function getChecked(idx) {
return repeater.itemAt(idx).checked
}
ButtonGroup {
id: buttonGroup
buttons: toolStripColumn.children
}
Column {
id: toolStripColumn
anchors.margins: ScreenTools.defaultFontPixelWidth * 0.4
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
spacing: ScreenTools.defaultFontPixelWidth * 0.25
Repeater {
id: repeater
QGCHoverButton {
id: buttonTemplate
anchors.left: toolStripColumn.left
anchors.right: toolStripColumn.right
height: width
radius: ScreenTools.defaultFontPixelWidth / 2
fontPointSize: ScreenTools.smallFontPointSize
autoExclusive: true
enabled: modelData.buttonEnabled
visible: modelData.buttonVisible
imageSource: modelData.showAlternateIcon ? modelData.alternateIconSource : modelData.iconSource
text: modelData.name
checked: modelData.checked !== undefined ? modelData.checked : checked
ButtonGroup.group: buttonGroup
// Only drop pannel and toggleable are checkable
checkable: modelData.dropPanelComponent !== undefined || (modelData.toggle !== undefined && modelData.toggle)
onClicked: {
dropPanel.hide() // DropPanel will call hide on "lastClickedButton"
if (modelData.dropPanelComponent === undefined) {
_root.clicked(index, checked)
} else if (checked) {
var panelEdgeTopPoint = mapToItem(_root, width, 0)
dropPanel.show(panelEdgeTopPoint, height, modelData.dropPanelComponent)
}
if(_root && buttonTemplate)
_root.lastClickedButton = buttonTemplate
}
}
}
}
DropPanel {
id: dropPanel
toolStrip: _root
}
}