Warning, /plasma/plasma-workspace/applets/lock_logout/contents/ui/main.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2011 Viranch Mehta <viranch.mehta@gmail.com>
0003
0004 SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006
0007 import QtQuick
0008 import QtQuick.Layouts
0009 import org.kde.plasma.plasmoid
0010 import org.kde.plasma.core as PlasmaCore
0011 import "data.js" as Data
0012 import org.kde.plasma.private.sessions
0013 import org.kde.kirigami as Kirigami
0014
0015 PlasmoidItem {
0016 id: root
0017
0018 readonly property int minButtonSize: Kirigami.Units.iconSizes.small
0019
0020 preferredRepresentation: fullRepresentation
0021 fullRepresentation: Flow {
0022 id: lockout
0023
0024 Layout.minimumWidth: {
0025 if (Plasmoid.formFactor === PlasmaCore.Types.Vertical) {
0026 return 0
0027 } else if (Plasmoid.formFactor === PlasmaCore.Types.Horizontal) {
0028 return height < minButtonSize * visibleButtons ? height * visibleButtons : height / visibleButtons;
0029 } else {
0030 return width > height ? minButtonSize * visibleButtons : minButtonSize
0031 }
0032 }
0033 Layout.minimumHeight: {
0034 if (Plasmoid.formFactor === PlasmaCore.Types.Vertical) {
0035 return width >= minButtonSize * visibleButtons ? width / visibleButtons : width * visibleButtons
0036 } else if (Plasmoid.formFactor === PlasmaCore.Types.Horizontal) {
0037 return 0
0038 } else {
0039 return width > height ? minButtonSize : minButtonSize * visibleButtons
0040 }
0041 }
0042
0043 Layout.preferredWidth: Layout.minimumWidth
0044 Layout.preferredHeight: Layout.minimumHeight
0045
0046 readonly property int visibleButtons: {
0047 var count = 0
0048 for (var i = 0, j = items.count; i < j; ++i) {
0049 if (items.itemAt(i).visible) {
0050 ++count
0051 }
0052 }
0053 return count
0054 }
0055
0056 flow: {
0057 if ((Plasmoid.formFactor === PlasmaCore.Types.Vertical && width >= minButtonSize * visibleButtons) ||
0058 (Plasmoid.formFactor === PlasmaCore.Types.Horizontal && height < minButtonSize * visibleButtons) ||
0059 (width > height)) {
0060 return Flow.LeftToRight // horizontal
0061 } else {
0062 return Flow.TopToBottom // vertical
0063 }
0064 }
0065
0066 SessionManagement {
0067 id: session
0068 }
0069
0070 Repeater {
0071 id: items
0072 property int itemWidth: parent.flow==Flow.LeftToRight ? Math.floor(parent.width/visibleButtons) : parent.width
0073 property int itemHeight: parent.flow==Flow.TopToBottom ? Math.floor(parent.height/visibleButtons) : parent.height
0074 property int iconSize: Math.min(itemWidth, itemHeight)
0075
0076 model: Data.data
0077
0078 delegate: PlasmaCore.ToolTipArea {
0079 id: iconDelegate
0080 visible: Plasmoid.configuration["show_" + modelData.configKey] && (!modelData.hasOwnProperty("requires") || session["can" + modelData.requires])
0081 width: items.itemWidth
0082 height: items.itemHeight
0083
0084 activeFocusOnTab: true
0085 mainText: modelData.tooltip_mainText
0086 subText: modelData.tooltip_subText
0087 textFormat: Text.PlainText
0088
0089 Accessible.name: iconDelegate.mainText
0090 Accessible.description: iconDelegate.subText
0091 Accessible.role: Accessible.Button
0092 Keys.onPressed: event => {
0093 switch (event.key) {
0094 case Qt.Key_Space:
0095 case Qt.Key_Enter:
0096 case Qt.Key_Return:
0097 case Qt.Key_Select:
0098 performOperation(modelData.operation)
0099 break;
0100 }
0101 }
0102
0103 TapHandler {
0104 id: tapHandler
0105 onTapped: performOperation(modelData.operation)
0106 }
0107
0108 Kirigami.Icon {
0109 id: iconButton
0110 width: items.iconSize
0111 height: items.iconSize
0112 anchors.centerIn: parent
0113 source: modelData.icon
0114 scale: tapHandler.pressed ? 0.9 : 1
0115 active: iconDelegate.containsMouse
0116 }
0117 }
0118 }
0119
0120 function performOperation(operation) {
0121 session[operation]()
0122 }
0123 }
0124 }