Files
qt-creator/share/qtcreator/qmldesigner/connectionseditor/TabCheckButton.qml

165 lines
5.4 KiB
QML
Raw Normal View History

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
import QtQuick
import QtQuick.Templates as T
import HelperWidgets 2.0 as HelperWidgets
import StudioControls 1.0 as StudioControls
import StudioTheme as StudioTheme
T.TabButton {
id: control
property StudioTheme.ControlStyle style: StudioTheme.Values.viewBarButtonStyle
property alias tooltip: toolTipArea.tooltip
property alias buttonIcon: buttonIcon.text
width: control.style.squareControlSize.width + buttonLabel.implicitWidth
+ buttonLabel.leftPadding + buttonLabel.rightPadding
height: control.style.squareControlSize.height
contentItem: Row {
spacing: 0
Text {
id: buttonIcon
width: control.style.squareControlSize.width
height: control.height
font.family: StudioTheme.Constants.iconFont.family
font.pixelSize: control.style.baseIconFontSize
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
}
Text {
id: buttonLabel
height: control.height
rightPadding: 4
font.pixelSize: control.style.baseFontSize
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
text: control.text
}
}
background: Rectangle {
id: controlBackground
color: control.style.background.idle
border.color: control.style.border.idle
border.width: control.style.borderWidth
radius: StudioTheme.Values.smallRadius //control.style.radius
}
HelperWidgets.ToolTipArea {
id: toolTipArea
anchors.fill: parent
// Without setting the acceptedButtons property the clicked event won't
// reach the AbstractButton, it will be consumed by the ToolTipArea
acceptedButtons: Qt.NoButton
}
states: [
State {
name: "default"
when: control.enabled && !control.hovered && !control.pressed && !control.checked
PropertyChanges {
target: controlBackground
color: control.style.background.idle
border.color: control.style.border.idle
}
PropertyChanges {
target: buttonIcon
color: control.style.icon.idle
}
PropertyChanges {
target: buttonLabel
color: control.style.icon.idle
}
},
State {
name: "hover"
when: control.enabled && control.hovered && !control.pressed && !control.checked
PropertyChanges {
target: controlBackground
color: control.style.background.hover
border.color: control.style.border.hover
}
PropertyChanges {
target: buttonIcon
color: control.style.icon.hover
}
PropertyChanges {
target: buttonLabel
color: control.style.icon.hover
}
},
State {
name: "hoverCheck"
when: control.enabled && control.hovered && !control.pressed && control.checked
PropertyChanges {
target: controlBackground
color: control.style.interactionHover
border.color: control.style.interactionHover
}
PropertyChanges {
target: buttonIcon
color: control.style.text.selectedText
}
PropertyChanges {
target: buttonLabel
color: control.style.text.selectedText
}
},
State {
name: "pressed"
when: control.enabled && control.hovered && control.pressed
PropertyChanges {
target: controlBackground
color: control.style.interaction
border.color: control.style.interaction
}
PropertyChanges {
target: buttonIcon
color: control.style.icon.interaction
}
PropertyChanges {
target: buttonLabel
color: control.style.icon.interaction
}
},
State {
name: "check"
when: control.enabled && !control.pressed && control.checked
extend: "hoverCheck"
PropertyChanges {
target: controlBackground
color: control.style.interaction
border.color: control.style.interaction
}
},
State {
name: "pressedButNotHovered"
when: control.enabled && !control.hovered && control.pressed
extend: "hover"
},
State {
name: "disable"
when: !control.enabled
PropertyChanges {
target: controlBackground
color: control.style.background.disabled
border.color: control.style.border.disabled
}
PropertyChanges {
target: buttonIcon
color: control.style.icon.disabled
}
PropertyChanges {
target: buttonLabel
color: control.style.icon.disabled
}
}
]
}