shift-shell/lookandfeel/contents/logout/ActionButton.qml
Marco Allegretti 753909a6ce Move shell and KWin surfaces to shared motion
Apply Motion tokens to startup, applet configuration, lockscreen controls, logout and splash transitions, KWin effects, and the mobile task switcher. Preserve timing-specific behavior where it drives runtime state.
2026-05-21 11:14:42 +02:00

87 lines
2.6 KiB
QML

/*
* SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
* SPDX-FileCopyrightText: 2022 Seshan Ravikumar <seshan10@me.com>
*
* SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick 2.8
import org.kde.plasma.core as PlasmaCore
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.kirigami as Kirigami
Item {
id: root
property alias text: label.text
property alias iconSource: icon.source
property alias containsMouse: mouseArea.containsMouse
property alias font: label.font
property alias labelRendering: label.renderType
property alias circleOpacity: buttonRect.opacity
property alias circleVisiblity: buttonRect.visible
readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software
readonly property color buttonBorderColor: Qt.rgba(Kirigami.Theme.textColor.r, Kirigami.Theme.textColor.g, Kirigami.Theme.textColor.b, 0.65)
signal clicked
activeFocusOnTab: true
property int iconSize: Kirigami.Units.gridUnit
implicitWidth: Kirigami.Units.gridUnit * 14
implicitHeight: iconSize + Kirigami.Units.smallSpacing + label.implicitHeight
Rectangle {
id: buttonRect
width: root.width
height: iconSize * 2.2
radius: Kirigami.Units.cornerRadius
color: Kirigami.Theme.backgroundColor
opacity: mouseArea.containsPress ? 1 : 0.6
border {
color: root.buttonBorderColor
width: 1
}
}
Kirigami.Icon {
id: icon
anchors {
verticalCenter: buttonRect.verticalCenter
left: buttonRect.left
leftMargin: Kirigami.Units.mediumSpacing
}
width: iconSize
height: iconSize
}
PlasmaComponents3.Label {
id: label
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
anchors {
centerIn: buttonRect
}
style: softwareRendering ? Text.Outline : Text.Normal
styleColor: softwareRendering ? Kirigami.Theme.backgroundColor : "transparent" //no outline, doesn't matter
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignTop
wrapMode: Text.WordWrap
font.underline: root.activeFocus
}
MouseArea {
id: mouseArea
hoverEnabled: true
onClicked: root.clicked()
anchors.fill: parent
}
Keys.onEnterPressed: clicked()
Keys.onReturnPressed: clicked()
Keys.onSpacePressed: clicked()
Accessible.onPressAction: clicked()
Accessible.role: Accessible.Button
Accessible.name: label.text
}