qtdoc/examples/demos/calqlatr/content/BackspaceButton.qml

70 lines
1.9 KiB
QML
Raw Normal View History

// 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: 48
implicitHeight: 38
radius: buttonRadius
icon.source: getIcon()
icon.width: 38
icon.height: 38
icon.color: getIconColor()
// include this text property as the calculator engine
// differentiates buttons through text. The text is never drawn.
text: "bs"
property bool dimmable: true
property bool dimmed: false
readonly property color backgroundColor: "#222222"
readonly property color borderColor: "#A9A9A9"
readonly property color backspaceRedColor: "#DE2C2C"
readonly property int buttonRadius: 8
function getBackgroundColor() {
if (button.dimmable && button.dimmed)
return backgroundColor
if (button.pressed)
return backspaceRedColor
return backgroundColor
}
function getBorderColor() {
if (button.dimmable && button.dimmed)
return borderColor
if (button.pressed || button.hovered)
return backspaceRedColor
return borderColor
}
function getIconColor() {
if (button.dimmable && button.dimmed)
return Qt.darker(backspaceRedColor)
if (button.pressed)
return backgroundColor
return backspaceRedColor
}
function getIcon() {
if (button.dimmable && button.dimmed)
return "images/backspace.svg"
if (button.pressed)
return "images/backspace_fill.svg"
return "images/backspace.svg"
}
onReleased: {
root.operatorPressed("bs")
updateDimmed()
}
background: Rectangle {
radius: button.buttonRadius
color: getBackgroundColor()
border.color: getBorderColor()
}
}