mirror of https://github.com/qt/qtdoc.git
68 lines
1.8 KiB
QML
68 lines
1.8 KiB
QML
// Copyright (C) 2023 The Qt Company Ltd.
|
|
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
|
|
|
|
import QtQuick
|
|
import QtQuick.Controls
|
|
|
|
RoundButton {
|
|
id: button
|
|
implicitWidth: 38
|
|
implicitHeight: 38
|
|
radius: buttonRadius
|
|
|
|
property bool dimmable: false
|
|
property bool dimmed: false
|
|
readonly property int fontSize: 22
|
|
readonly property int buttonRadius: 8
|
|
property color textColor: "#FFFFFF"
|
|
property color accentColor: "#2CDE85"
|
|
readonly property color backgroundColor: "#222222"
|
|
readonly property color borderColor: "#A9A9A9"
|
|
|
|
function getBackgroundColor() {
|
|
if (button.dimmable && button.dimmed)
|
|
return backgroundColor
|
|
if (button.pressed)
|
|
return accentColor
|
|
return backgroundColor
|
|
}
|
|
|
|
function getBorderColor() {
|
|
if (button.dimmable && button.dimmed)
|
|
return borderColor
|
|
if (button.pressed || button.hovered)
|
|
return accentColor
|
|
return borderColor
|
|
}
|
|
|
|
function getTextColor() {
|
|
if (button.dimmable && button.dimmed)
|
|
return Qt.darker(textColor)
|
|
if (button.pressed)
|
|
return backgroundColor
|
|
if (button.hovered)
|
|
return accentColor
|
|
return textColor
|
|
}
|
|
|
|
background: Rectangle {
|
|
radius: button.buttonRadius
|
|
color: getBackgroundColor()
|
|
border.color: getBorderColor()
|
|
}
|
|
|
|
contentItem: Text {
|
|
text: button.text
|
|
font.pixelSize: button.fontSize
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
color: getTextColor()
|
|
Behavior on color {
|
|
ColorAnimation {
|
|
duration: 120
|
|
easing.type: Easing.OutElastic
|
|
}
|
|
}
|
|
}
|
|
}
|