shift-shell/lookandfeel/contents/logout/ActionButton.qml

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

87 lines
2.5 KiB
QML
Raw Normal View History

2020-08-20 11:04:02 +00:00
/*
2021-03-01 20:03:25 +00:00
* SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
* SPDX-FileCopyrightText: 2022 Seshan Ravikumar <seshan10@me.com>
2020-08-20 11:04:02 +00:00
*
2021-03-01 20:03:25 +00:00
* SPDX-License-Identifier: LGPL-2.0-or-later
2020-08-20 11:04:02 +00:00
*/
import QtQuick 2.8
import org.kde.plasma.core as PlasmaCore
2020-08-20 11:04:02 +00:00
import org.kde.plasma.components 3.0 as PlasmaComponents3
import org.kde.kirigami 2.20 as Kirigami
2020-08-20 11:04:02 +00:00
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
2020-08-20 11:04:02 +00:00
readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software
2020-08-20 11:04:02 +00:00
signal clicked
activeFocusOnTab: true
property int iconSize: Kirigami.Units.gridUnit
2020-08-20 11:04:02 +00:00
implicitWidth: Kirigami.Units.gridUnit * 14
implicitHeight: iconSize + Kirigami.Units.smallSpacing + label.implicitHeight
2020-08-20 11:04:02 +00:00
Rectangle {
id: buttonRect
width: root.width
height: iconSize * 2.2
radius: Kirigami.Units.smallSpacing
color: Kirigami.Theme.backgroundColor
opacity: mouseArea.containsPress ? 1 : 0.6
border {
color: Qt.rgba(255, 255, 255, 0.8)
width: 1
2020-08-20 11:04:02 +00:00
}
}
Kirigami.Icon {
2020-08-20 11:04:02 +00:00
id: icon
anchors {
verticalCenter: buttonRect.verticalCenter
left: buttonRect.left
leftMargin: Kirigami.Units.mediumSpacing
2020-08-20 11:04:02 +00:00
}
width: iconSize
height: iconSize
}
PlasmaComponents3.Label {
id: label
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
2020-08-20 11:04:02 +00:00
anchors {
centerIn: buttonRect
2020-08-20 11:04:02 +00:00
}
style: softwareRendering ? Text.Outline : Text.Normal
styleColor: softwareRendering ? Kirigami.Theme.backgroundColor : "transparent" //no outline, doesn't matter
2020-08-20 11:04:02 +00:00
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
}