Warning, /plasma/kscreenlocker/greeter/fallbacktheme/SessionSwitching.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2011 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2023 Nate Graham <nate@kde.org> 0004 0005 SPDX-License-Identifier: GPL-2.0-or-later 0006 */ 0007 0008 import QtQuick 2.15 0009 import QtQuick.Layouts 1.15 0010 0011 import org.kde.kirigami 2.20 as Kirigami 0012 import org.kde.plasma.components 3.0 as PlasmaComponents3 0013 import org.kde.plasma.extras 2.0 as PlasmaExtras 0014 0015 Item { 0016 readonly property bool switchUserSupported: sessionsModel.canSwitchUser 0017 0018 signal sessionActivated() 0019 signal newSessionStarted() 0020 signal switchingCanceled() 0021 0022 implicitWidth: layoutItem.width + Kirigami.Units.largeSpacing * 2 0023 implicitHeight: layoutItem.height + Kirigami.Units.largeSpacing * 2 0024 0025 ColumnLayout { 0026 id: layoutItem 0027 anchors.centerIn: parent 0028 spacing: Kirigami.Units.largeSpacing 0029 0030 PlasmaComponents3.Label { 0031 id: explainText 0032 Layout.fillWidth: true 0033 Layout.maximumWidth: Kirigami.Units.gridUnit * 25 0034 Layout.bottomMargin: Kirigami.Units.largeSpacing * 2 0035 text: i18nd("kscreenlocker_greet", "The current session will be hidden " + 0036 "and a new login screen or an existing session will be displayed.\n" + 0037 "An F-key is assigned to each session; " + 0038 "F%1 is usually assigned to the first session, " + 0039 "F%2 to the second session and so on. " + 0040 "You can switch between sessions by pressing " + 0041 "Ctrl, Alt and the appropriate F-key at the same time. " + 0042 "Additionally, the KDE Panel and Desktop menus have " + 0043 "actions for switching between sessions.", 0044 7, 8) 0045 wrapMode: Text.Wrap 0046 font: Kirigami.Theme.smallFont 0047 } 0048 0049 PlasmaComponents3.Label { 0050 Layout.fillWidth: true 0051 text: i18nd("kscreenlocker_greet", "Active sessions:") 0052 } 0053 PlasmaComponents3.ScrollView { 0054 Layout.fillWidth: true 0055 Layout.preferredHeight: userSessionsView.count * userSessionsView.delegateHeight 0056 0057 contentItem: ListView { 0058 id: userSessionsView 0059 property int delegateHeight: Kirigami.Units.gridUnit * 2 0060 0061 model: sessionsModel 0062 0063 delegate: PlasmaComponents3.Label { 0064 readonly property int userVt: model.vtNumber 0065 width: userSessionsView.width 0066 height: userSessionsView.delegateHeight 0067 leftPadding: Kirigami.Units.largeSpacing 0068 0069 text: { 0070 var display = model.isTty ? i18ndc("kscreenlocker_greet", "User logged in on console", "TTY") : model.displayNumber || "" 0071 0072 return i18ndc("kscreenlocker_greet", "username (terminal, display)", "%1 (%2)", 0073 (model.realName || model.name || i18ndc("kscreenlocker_greet", "Nobody logged in", "Unused")), 0074 display ? i18ndc("kscreenlocker_greet", "vt, display", "%1, %2", model.vtNumber, display) 0075 : model.vtNumber 0076 ) 0077 } 0078 horizontalAlignment: Text.AlignLeft 0079 verticalAlignment: Text.AlignVCenter 0080 } 0081 0082 highlight: PlasmaExtras.Highlight { } 0083 highlightMoveDuration: 0 0084 highlightResizeDuration: 0 0085 0086 focus: true 0087 0088 MouseArea { 0089 anchors.fill: parent 0090 onClicked: userSessionsView.currentIndex = userSessionsView.indexAt(mouse.x, mouse.y) 0091 onDoubleClicked: { 0092 sessionsModel.switchUser(userSessionsView.indexAt(mouse.x, mouse.y).userVt) 0093 sessionActivated(); 0094 } 0095 } 0096 } 0097 } 0098 0099 RowLayout { 0100 id: buttonRow 0101 Layout.alignment: Qt.AlignHCenter 0102 spacing: Kirigami.Units.largeSpacing 0103 0104 PlasmaComponents3.Button { 0105 id: activateSession 0106 text: i18nd("kscreenlocker_greet", "Activate Session") 0107 icon.name: "system-switch-user" 0108 onClicked: { 0109 sessionsModel.switchUser(userSessionsView.currentItem.userVt) 0110 sessionActivated(); 0111 } 0112 } 0113 PlasmaComponents3.Button { 0114 id: newSession 0115 text: i18nd("kscreenlocker_greet", "Start New Session") 0116 icon.name: "list-add" 0117 visible: sessionsModel.canStartNewSession 0118 onClicked: { 0119 sessionsModel.startNewSession() 0120 newSessionStarted(); 0121 } 0122 } 0123 PlasmaComponents3.Button { 0124 id: cancelSession 0125 text: i18nd("kscreenlocker_greet", "Cancel") 0126 icon.name: "dialog-cancel" 0127 onClicked: switchingCanceled() 0128 } 0129 } 0130 } 0131 }