Warning, /plasma/plasma-workspace/lookandfeel/components/SessionManagementScreen.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.15 0008 0009 import QtQuick.Layouts 1.15 0010 0011 import org.kde.plasma.components 3.0 as PlasmaComponents3 0012 import org.kde.kirigami 2.20 as Kirigami 0013 0014 FocusScope { 0015 id: root 0016 0017 /* 0018 * Any message to be displayed to the user, visible above the text fields 0019 */ 0020 property alias notificationMessage: notificationsLabel.text 0021 0022 /* 0023 * A list of Items (typically ActionButtons) to be shown in a Row beneath the prompts 0024 */ 0025 property alias actionItems: actionItemsLayout.children 0026 0027 /* 0028 * Whether to show or hide the list of action items as a whole. 0029 */ 0030 property alias actionItemsVisible: actionItemsLayout.visible 0031 0032 /* 0033 * A model with a list of users to show in the view. 0034 * There are different implementations in sddm greeter (UserModel) and 0035 * KScreenLocker (SessionsModel), so some roles will be missing. 0036 * 0037 * type: { 0038 * name: string, 0039 * realName: string, 0040 * homeDir: string, 0041 * icon: string, 0042 * iconName?: string, 0043 * needsPassword?: bool, 0044 * displayNumber?: string, 0045 * vtNumber?: int, 0046 * session?: string 0047 * isTty?: bool, 0048 * } 0049 */ 0050 property alias userListModel: userListView.model 0051 0052 /* 0053 * Self explanatory 0054 */ 0055 property alias userListCurrentIndex: userListView.currentIndex 0056 property alias userListCurrentItem: userListView.currentItem 0057 property bool showUserList: true 0058 0059 property alias userList: userListView 0060 0061 property int fontSize: Kirigami.Theme.defaultFont.pointSize + 2 0062 0063 default property alias _children: innerLayout.children 0064 0065 signal userSelected() 0066 0067 function playHighlightAnimation() { 0068 bounceAnimation.start(); 0069 } 0070 0071 // FIXME: move this component into a layout, rather than abusing 0072 // anchors and implicitly relying on other components' built-in 0073 // whitespace to avoid items being overlapped. 0074 UserList { 0075 id: userListView 0076 visible: showUserList && y > 0 0077 anchors { 0078 bottom: parent.verticalCenter 0079 // We only need an extra bottom margin when text is constrained, 0080 // since only in this case can the username label be a multi-line 0081 // string that would otherwise overflow. 0082 bottomMargin: constrainText ? Kirigami.Units.gridUnit * 3 : 0 0083 left: parent.left 0084 right: parent.right 0085 } 0086 fontSize: root.fontSize 0087 // bubble up the signal 0088 onUserSelected: root.userSelected() 0089 } 0090 0091 //goal is to show the prompts, in ~16 grid units high, then the action buttons 0092 //but collapse the space between the prompts and actions if there's no room 0093 //ui is constrained to 16 grid units wide, or the screen 0094 ColumnLayout { 0095 id: prompts 0096 anchors.top: parent.verticalCenter 0097 anchors.topMargin: Kirigami.Units.largeSpacing 0098 anchors.left: parent.left 0099 anchors.right: parent.right 0100 anchors.bottom: parent.bottom 0101 PlasmaComponents3.Label { 0102 id: notificationsLabel 0103 font.pointSize: root.fontSize 0104 Layout.maximumWidth: Kirigami.Units.gridUnit * 16 0105 Layout.alignment: Qt.AlignHCenter 0106 Layout.fillWidth: true 0107 horizontalAlignment: Text.AlignHCenter 0108 textFormat: Text.PlainText 0109 wrapMode: Text.WordWrap 0110 font.italic: true 0111 0112 SequentialAnimation { 0113 id: bounceAnimation 0114 loops: 1 0115 PropertyAnimation { 0116 target: notificationsLabel 0117 properties: "scale" 0118 from: 1.0 0119 to: 1.1 0120 duration: Kirigami.Units.longDuration 0121 easing.type: Easing.OutQuad 0122 } 0123 PropertyAnimation { 0124 target: notificationsLabel 0125 properties: "scale" 0126 from: 1.1 0127 to: 1.0 0128 duration: Kirigami.Units.longDuration 0129 easing.type: Easing.InQuad 0130 } 0131 } 0132 } 0133 ColumnLayout { 0134 Layout.minimumHeight: implicitHeight 0135 Layout.maximumHeight: Kirigami.Units.gridUnit * 10 0136 Layout.maximumWidth: Kirigami.Units.gridUnit * 16 0137 Layout.alignment: Qt.AlignHCenter 0138 ColumnLayout { 0139 id: innerLayout 0140 Layout.alignment: Qt.AlignHCenter 0141 Layout.fillWidth: true 0142 } 0143 Item { 0144 Layout.fillHeight: true 0145 } 0146 } 0147 Item { 0148 Layout.alignment: Qt.AlignHCenter 0149 implicitHeight: actionItemsLayout.implicitHeight 0150 implicitWidth: actionItemsLayout.implicitWidth 0151 Row { //deliberately not rowlayout as I'm not trying to resize child items 0152 id: actionItemsLayout 0153 anchors.verticalCenter: parent.top 0154 spacing: Kirigami.Units.largeSpacing 0155 } 0156 } 0157 Item { 0158 Layout.fillHeight: true 0159 } 0160 } 0161 }