forked from qt-creator/qt-creator
Task-number: QDS-10587 Change-Id: Ifc13a8364fccb74cb60d683f0e6c322d80baab50 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
165 lines
5.4 KiB
QML
165 lines
5.4 KiB
QML
// 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
|
|
}
|
|
}
|
|
]
|
|
}
|