dotfiles/sddm/everforest/Components/LoginPanel.qml
nicolas 3718df1096
🎉 Create dotfiles repo
Initial dotfiles commit
2025-10-16 20:30:52 -05:00

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
}
}
}