177 lines
4.1 KiB
QML
177 lines
4.1 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Window 2.15
|
|
import QtQuick.Controls 2.15
|
|
import "../assets"
|
|
|
|
Item {
|
|
property var user: userField.text
|
|
property var password: passwordField.text
|
|
property var session: sessionPanel.session
|
|
property var inputHeight: Screen.height * 0.032
|
|
property var inputWidth: Screen.width * 0.16
|
|
Rectangle {
|
|
id: loginBackground
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
height: inputHeight * ( config.UserIcon == "true" ? 11.2 : 5.3 )
|
|
width: inputWidth * 1.2
|
|
radius: 5
|
|
visible: config.LoginBackground == "true" ? true : false
|
|
color: "#1E2030"
|
|
}
|
|
Column {
|
|
spacing: 8
|
|
anchors {
|
|
bottom: parent.bottom
|
|
left: parent.left
|
|
}
|
|
PowerButton {
|
|
id: powerButton
|
|
}
|
|
RebootButton {
|
|
id: rebootButton
|
|
}
|
|
SleepButton {
|
|
id: sleepButton
|
|
}
|
|
z: 5
|
|
}
|
|
Column {
|
|
spacing: 8
|
|
anchors {
|
|
bottom: parent.bottom
|
|
right: parent.right
|
|
}
|
|
SessionPanel {
|
|
id: sessionPanel
|
|
}
|
|
z: 5
|
|
}
|
|
Column {
|
|
spacing: 8
|
|
z: 5
|
|
width: inputWidth
|
|
anchors {
|
|
verticalCenter: parent.verticalCenter
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
Rectangle {
|
|
visible: config.UserIcon == "true" ? true : false
|
|
width: inputHeight * 5.7 ; height: inputHeight * 5.7
|
|
color: "transparent"
|
|
Image {
|
|
source: Qt.resolvedUrl("../assets/defaultIcon.png")
|
|
height: parent.width
|
|
width: parent.width
|
|
}
|
|
Image {
|
|
// common icon path for KDE and GNOME
|
|
source: Qt.resolvedUrl("/var/lib/AccountsService/icons/" + user)
|
|
height: parent.width
|
|
width: parent.width
|
|
}
|
|
Image {
|
|
source: Qt.resolvedUrl(config.LoginBackground == "true" ? "../assets/maskDark.svg" : "../assets/mask.svg")
|
|
height: parent.width
|
|
width: parent.width
|
|
}
|
|
Image {
|
|
source: Qt.resolvedUrl("../assets/ring.svg")
|
|
height: parent.width
|
|
width: parent.width
|
|
}
|
|
anchors {
|
|
horizontalCenter: parent.horizontalCenter
|
|
}
|
|
}
|
|
UserField {
|
|
id: userField
|
|
height: inputHeight
|
|
width: parent.width
|
|
}
|
|
PasswordField {
|
|
id: passwordField
|
|
height: inputHeight
|
|
width: parent.width
|
|
onAccepted: loginButton.clicked()
|
|
}
|
|
Button {
|
|
id: loginButton
|
|
height: inputHeight
|
|
width: parent.width
|
|
enabled: user != "" && password != "" ? true : false
|
|
hoverEnabled: true
|
|
contentItem: Text {
|
|
id: buttonText
|
|
renderType: Text.NativeRendering
|
|
font {
|
|
family: config.Font
|
|
pointSize: config.FontSize
|
|
bold: true
|
|
}
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
color: "#181926"
|
|
text: "Login"
|
|
}
|
|
background: Rectangle {
|
|
id: buttonBackground
|
|
color: "#A6DA95"
|
|
radius: 3
|
|
}
|
|
states: [
|
|
State {
|
|
name: "pressed"
|
|
when: loginButton.down
|
|
PropertyChanges {
|
|
target: buttonBackground
|
|
color: "#A5ADCB"
|
|
}
|
|
PropertyChanges {
|
|
target: buttonText
|
|
}
|
|
},
|
|
State {
|
|
name: "hovered"
|
|
when: loginButton.hovered
|
|
PropertyChanges {
|
|
target: buttonBackground
|
|
color: "#A5ADCB"
|
|
}
|
|
PropertyChanges {
|
|
target: buttonText
|
|
}
|
|
},
|
|
State {
|
|
name: "enabled"
|
|
when: loginButton.enabled
|
|
PropertyChanges {
|
|
target: buttonBackground
|
|
}
|
|
PropertyChanges {
|
|
target: buttonText
|
|
}
|
|
}
|
|
]
|
|
transitions: Transition {
|
|
PropertyAnimation {
|
|
properties: "color"
|
|
duration: 300
|
|
}
|
|
}
|
|
onClicked: {
|
|
sddm.login(user, password, session)
|
|
}
|
|
}
|
|
}
|
|
Connections {
|
|
target: sddm
|
|
|
|
function onLoginFailed() {
|
|
passwordField.text = ""
|
|
passwordField.focus = true
|
|
}
|
|
}
|
|
}
|