1
0
Fork 0
mirror of https://github.com/vinceliuice/MacSequoia-kde.git synced 2024-11-22 05:40:09 +00:00
MacSequoia-kde/sddm/MacSequoia-5.0/components/SessionManagementScreen.qml
vinceliuice 0f831a3dab Upload
2024-06-30 12:16:38 +08:00

135 lines
4.3 KiB
QML

/*
SPDX-FileCopyrightText: 2016 David Edmundson <davidedmundson@kde.org>
SPDX-License-Identifier: LGPL-2.0-or-later
*/
import QtQuick 2.15
import QtQuick.Layouts 1.15
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 3.0 as PlasmaComponents3
FocusScope {
id: root
/*
* Any message to be displayed to the user, visible above the text fields
*/
property alias notificationMessage: notificationsLabel.text
/*
* A list of Items (typically ActionButtons) to be shown in a Row beneath the prompts
*/
property alias actionItems: actionItemsLayout.children
/*
* Whether to show or hide the list of action items as a whole.
*/
property alias actionItemsVisible: actionItemsLayout.visible
/*
* A model with a list of users to show in the view.
* There are different implementations in sddm greeter (UserModel) and
* KScreenLocker (SessionsModel), so some roles will be missing.
*
* type: {
* name: string,
* realName: string,
* homeDir: string,
* icon: string,
* iconName?: string,
* needsPassword?: bool,
* displayNumber?: string,
* vtNumber?: int,
* session?: string
* isTty?: bool,
* }
*/
property alias userListModel: userListView.model
/*
* Self explanatory
*/
property alias userListCurrentIndex: userListView.currentIndex
property alias userListCurrentItem: userListView.currentItem
property bool showUserList: true
property alias userList: userListView
property int fontSize: PlasmaCore.Theme.defaultFont.pointSize + 2
default property alias _children: innerLayout.children
signal userSelected()
// FIXME: move this component into a layout, rather than abusing
// anchors and implicitly relying on other components' built-in
// whitespace to avoid items being overlapped.
UserList {
id: userListView
visible: showUserList && y > 0
anchors {
bottom: parent.verticalCenter
// We only need an extra bottom margin when text is constrained,
// since only in this case can the username label be a multi-line
// string that would otherwise overflow.
bottomMargin: constrainText ? PlasmaCore.Units.gridUnit * 3 : 0
left: parent.left
right: parent.right
}
fontSize: root.fontSize
// bubble up the signal
onUserSelected: root.userSelected()
}
//goal is to show the prompts, in ~16 grid units high, then the action buttons
//but collapse the space between the prompts and actions if there's no room
//ui is constrained to 16 grid units wide, or the screen
ColumnLayout {
id: prompts
anchors.top: parent.verticalCenter
anchors.topMargin: PlasmaCore.Units.gridUnit * 0.5
anchors.left: parent.left
anchors.right: parent.right
anchors.bottom: parent.bottom
PlasmaComponents3.Label {
id: notificationsLabel
font.pointSize: root.fontSize
Layout.maximumWidth: PlasmaCore.Units.gridUnit * 16
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.italic: true
}
ColumnLayout {
Layout.minimumHeight: implicitHeight
Layout.maximumHeight: PlasmaCore.Units.gridUnit * 10
Layout.maximumWidth: PlasmaCore.Units.gridUnit * 16
Layout.alignment: Qt.AlignHCenter
ColumnLayout {
id: innerLayout
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
}
Item {
Layout.fillHeight: true
}
}
Item {
Layout.alignment: Qt.AlignHCenter
implicitHeight: actionItemsLayout.implicitHeight
implicitWidth: actionItemsLayout.implicitWidth
Row { //deliberately not rowlayout as I'm not trying to resize child items
id: actionItemsLayout
anchors.verticalCenter: parent.top
spacing: PlasmaCore.Units.largeSpacing / 2
}
}
Item {
Layout.fillHeight: true
}
}
}