Files
euri-packages/packages/euri-sddm-theme/Main.qml
T

241 lines
7.9 KiB
QML

import QtQuick 2.14
import SddmComponents 2.0
import 'components'
Rectangle {
id: container
width: 640
height: 480
LayoutMirroring.enabled: Qt.locale().textDirection == Qt.RightToLeft
LayoutMirroring.childrenInherit: true
TextConstants { id: textConstants }
Connections {
target: sddm
function onLoginSucceeded() {
errorMessage.color = "#2EA3F2"
errorMessage.text = textConstants.loginSucceeded
}
function onLoginFailed() {
password.text = ""
errorMessage.color = "#ed1515"
errorMessage.text = textConstants.loginFailed
}
}
Background {
anchors.fill: parent
source: config.background
fillMode: Image.PreserveAspectCrop
onStatusChanged: {
if (status == Image.Error && source != config.defaultBackground) {
source = config.defaultBackground
}
}
}
Rectangle {
anchors.fill: parent
gradient: Gradient {
GradientStop { position: 0.0; color: "#661a1c21" }
GradientStop { position: 0.5; color: "#aa1a1c21" }
GradientStop { position: 1.0; color: "#ee0d0e12" }
}
Rectangle {
id: loginCard
anchors.centerIn: parent
anchors.verticalCenterOffset: -24
width: 360
height: cardColumn.implicitHeight + 40
radius: 16
color: "#232629"
border.color: "#3f4347"
border.width: 1
Column {
id: cardColumn
anchors.horizontalCenter: parent.horizontalCenter
anchors.top: parent.top
anchors.topMargin: 28
spacing: 16
width: parent.width - 40
Text {
text: "Euri"
color: "#2EA3F2"
font.family: "Roboto"
font.weight: Font.Light
font.pointSize: 34
horizontalAlignment: Text.AlignHCenter
anchors.horizontalCenter: parent.horizontalCenter
}
Column {
width: parent.width
spacing: 10
TextBox {
id: name
width: parent.width
height: 40
text: userModel.lastUser
font.pixelSize: 14
color: "#1d1f21"
textColor: "#eff0f1"
focusColor: "#2EA3F2"
KeyNavigation.backtab: rebootButton
KeyNavigation.tab: password
Keys.onPressed: {
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
sddm.login(name.text, password.text, sessionCombo.index)
event.accepted = true
}
}
}
PasswordBox {
id: password
width: parent.width
height: 40
font.pixelSize: 14
color: "#1d1f21"
textColor: "#eff0f1"
focusColor: "#2EA3F2"
KeyNavigation.backtab: name
KeyNavigation.tab: loginButton
Keys.onPressed: {
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
sddm.login(name.text, password.text, sessionCombo.index)
event.accepted = true
}
}
}
}
Text {
id: errorMessage
width: parent.width
height: errorMessage.text ? 16 : 0
font.pixelSize: 12
horizontalAlignment: Text.AlignHCenter
visible: errorMessage.text !== ""
}
Button {
id: loginButton
anchors.horizontalCenter: parent.horizontalCenter
text: textConstants.login
color: "#2EA3F2"
textColor: "#ffffff"
activeColor: "#268acc"
pressedColor: "#1a6da0"
KeyNavigation.backtab: password
KeyNavigation.tab: shutdownButton
Keys.onPressed: {
if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) {
sddm.login(name.text, password.text, sessionCombo.index)
event.accepted = true
}
}
onClicked: sddm.login(name.text, password.text, sessionCombo.index)
}
Row {
spacing: 8
anchors.horizontalCenter: parent.horizontalCenter
Button {
id: shutdownButton
text: textConstants.shutdown
color: "#3f4347"
textColor: "#eff0f1"
activeColor: "#ed1515"
KeyNavigation.backtab: loginButton
KeyNavigation.tab: rebootButton
onClicked: sddm.powerOff()
}
Button {
id: rebootButton
text: textConstants.reboot
color: "#3f4347"
textColor: "#eff0f1"
activeColor: "#2EA3F2"
KeyNavigation.backtab: shutdownButton
KeyNavigation.tab: sessionCombo
onClicked: sddm.reboot()
}
}
}
}
Rectangle {
anchors {
bottom: parent.bottom
bottomMargin: 32
horizontalCenter: parent.horizontalCenter
}
width: 360
height: 44
radius: 12
color: "#1a1c21"
border.color: "#3f4347"
border.width: 1
Row {
anchors.centerIn: parent
spacing: 16
ComboBox {
id: sessionCombo
width: 140
height: 32
model: sessionModel
index: sessionModel.lastIndex
color: "#31363b"
textColor: "#eff0f1"
menuColor: "#232629"
focusColor: "#2EA3F2"
hoverColor: "#3f4347"
borderColor: "#3f4347"
arrowIcon: "angle-up.png"
arrowColor: "#8a8f9c"
font.pixelSize: 12
KeyNavigation.backtab: rebootButton
KeyNavigation.tab: layoutCombo
}
LayoutBox {
id: layoutCombo
width: 110
height: 32
color: "#31363b"
textColor: "#eff0f1"
hoverColor: "#3f4347"
menuColor: "#232629"
borderColor: "#3f4347"
focusColor: "#2EA3F2"
arrowIcon: "angle-up.png"
arrowColor: "#8a8f9c"
font.pixelSize: 12
KeyNavigation.backtab: sessionCombo
KeyNavigation.tab: name
}
}
}
}
Component.onCompleted: {
if (name.text == "")
name.focus = true
else
password.focus = true
}
}