// Copyright (C) 2017 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only import QtQuick import QtQuick.Templates as T import QtQuick.Controls.impl import QtQuick.Controls.Material import QtQuick.Controls.Material.impl T.RoundButton { id: control implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, implicitContentWidth + leftPadding + rightPadding) implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, implicitContentHeight + topPadding + bottomPadding) topInset: 6 leftInset: 6 rightInset: 6 bottomInset: 6 padding: 12 spacing: 6 icon.width: 24 icon.height: 24 icon.color: !enabled ? Material.hintTextColor : flat && highlighted ? Material.accentColor : highlighted ? Material.primaryHighlightedTextColor : Material.foreground Material.elevation: control.down ? 8 : 2 Material.background: flat ? "transparent" : undefined contentItem: IconLabel { spacing: control.spacing mirrored: control.mirrored display: control.display icon: control.icon text: control.text font: control.font color: !control.enabled ? control.Material.hintTextColor : control.flat && control.highlighted ? control.Material.accentColor : control.highlighted ? control.Material.primaryHighlightedTextColor : control.Material.foreground } // TODO: Add a proper ripple/ink effect for mouse/touch input and focus state background: Rectangle { implicitWidth: control.Material.buttonHeight implicitHeight: control.Material.buttonHeight radius: control.radius color: control.Material.buttonColor(control.Material.theme, control.Material.background, control.Material.accent, control.enabled, control.flat, control.highlighted, false /*checked*/) Rectangle { width: parent.width height: parent.height radius: control.radius visible: enabled && (control.hovered || control.visualFocus) color: control.Material.rippleColor } Rectangle { width: parent.width height: parent.height radius: control.radius visible: control.down color: control.Material.rippleColor } // The layer is disabled when the button color is transparent so that you can do // Material.background: "transparent" and get a proper flat button without needing // to set Material.elevation as well layer.enabled: control.enabled && color.a > 0 && !control.flat layer.effect: ElevationEffect { elevation: control.Material.elevation } } }