Skip to content
QGCButton.qml 3.11 KiB
Newer Older
import QtQuick                  2.3
import QtQuick.Controls         2.12
import QtQuick.Controls.Styles  1.4
Don Gagne's avatar
Don Gagne committed

import QGroundControl.Palette 1.0
import QGroundControl.ScreenTools 1.0
Don Gagne's avatar
Don Gagne committed

Button {
    id:             control
    hoverEnabled:   true
    topPadding:     _verticalPadding
    bottomPadding:  _verticalPadding
    leftPadding:    _horizontalPadding
    rightPadding:   _horizontalPadding
    focusPolicy:    Qt.ClickFocus
Gus Grubba's avatar
Gus Grubba committed
    property bool   primary:        false                               ///< primary button for a group of buttons
    property real   pointSize:      ScreenTools.defaultFontPointSize    ///< Point size for button text
    property bool   showBorder:     qgcPal.globalTheme === QGCPalette.Light
Gus Grubba's avatar
Gus Grubba committed
    property bool   iconLeft:       false
    property real   backRadius:     0
    property real   heightFactor:   0.5
    property string iconSource
    property bool   _showHighlight:     pressed | hovered | checked
Don Gagne's avatar
Don Gagne committed

    property int _horizontalPadding:    ScreenTools.defaultFontPixelWidth
Gus Grubba's avatar
Gus Grubba committed
    property int _verticalPadding:      Math.round(ScreenTools.defaultFontPixelHeight * heightFactor)
Don Gagne's avatar
Don Gagne committed

    QGCPalette { id: qgcPal; colorGroupEnabled: enabled }
    background: Rectangle {
        id:             backRect
        implicitWidth:  ScreenTools.implicitButtonWidth
        implicitHeight: ScreenTools.implicitButtonHeight
        radius:         backRadius
        border.width:   showBorder ? 1 : 0
        border.color:   qgcPal.buttonText
        color:          _showHighlight ?
                            qgcPal.buttonHighlight :
                            (primary ? qgcPal.primaryButton : qgcPal.button)
Don Gagne's avatar
Don Gagne committed
    }
    contentItem: Item {
        implicitWidth:  text.implicitWidth + icon.width
        implicitHeight: text.implicitHeight
        baselineOffset: text.y + text.baselineOffset
        QGCColoredImage {
            id:                     icon
            source:                 control.iconSource
            height:                 source === "" ? 0 : text.height
            width:                  height
            color:                  text.color
            fillMode:               Image.PreserveAspectFit
            sourceSize.height:      height
            anchors.left:           control.iconLeft ? parent.left : undefined
            anchors.leftMargin:     control.iconLeft ? ScreenTools.defaultFontPixelWidth : undefined
            anchors.right:          !control.iconLeft ? parent.right : undefined
            anchors.rightMargin:    !control.iconLeft ? ScreenTools.defaultFontPixelWidth : undefined
            anchors.verticalCenter: parent.verticalCenter
        }
        Text {
            id:                     text
            anchors.centerIn:       parent
            antialiasing:           true
            text:                   control.text
            font.pointSize:         pointSize
            font.family:            ScreenTools.normalFontFamily
            color:                  _showHighlight ?
                                        qgcPal.buttonHighlightText :
                                        (primary ? qgcPal.primaryButtonText : qgcPal.buttonText)
Don Gagne's avatar
Don Gagne committed
        }
Don Gagne's avatar
Don Gagne committed
}