187 lines
5.3 KiB
QML
187 lines
5.3 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.15
|
|
import QtQuick.Controls 2.15
|
|
import SddmComponents 2.0
|
|
|
|
Item {
|
|
id: root
|
|
width: 1920
|
|
height: 1080
|
|
|
|
property string backgroundPath: config.String("Theme", "Background", "")
|
|
property string logoPath: config.String("Theme", "Logo", "")
|
|
|
|
Image {
|
|
id: bg
|
|
anchors.fill: parent
|
|
source: root.backgroundPath
|
|
fillMode: Image.PreserveAspectCrop
|
|
smooth: true
|
|
cache: true
|
|
}
|
|
|
|
Rectangle {
|
|
anchors.fill: parent
|
|
color: "#050a14"
|
|
opacity: 0.55
|
|
}
|
|
|
|
ColumnLayout {
|
|
id: panel
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
spacing: 18
|
|
width: Math.min(parent.width * 0.42, 560)
|
|
|
|
Item {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
Layout.preferredHeight: 180
|
|
Layout.preferredWidth: 180
|
|
|
|
Image {
|
|
anchors.fill: parent
|
|
source: root.logoPath
|
|
fillMode: Image.PreserveAspectFit
|
|
smooth: true
|
|
cache: true
|
|
}
|
|
}
|
|
|
|
Label {
|
|
Layout.alignment: Qt.AlignHCenter
|
|
text: "SAIKYO OS"
|
|
font.pixelSize: 38
|
|
font.weight: Font.DemiBold
|
|
color: "#e8f1ff"
|
|
}
|
|
|
|
ComboBox {
|
|
id: userBox
|
|
Layout.fillWidth: true
|
|
model: userModel
|
|
textRole: "name"
|
|
currentIndex: userModel.lastIndex
|
|
focus: true
|
|
background: Rectangle {
|
|
radius: 10
|
|
color: "#0b1d44"
|
|
border.color: "#153a85"
|
|
border.width: 1
|
|
}
|
|
contentItem: Text {
|
|
leftPadding: 14
|
|
rightPadding: 14
|
|
text: userBox.displayText
|
|
color: "#e8f1ff"
|
|
verticalAlignment: Text.AlignVCenter
|
|
elide: Text.ElideRight
|
|
}
|
|
}
|
|
|
|
TextField {
|
|
id: password
|
|
Layout.fillWidth: true
|
|
echoMode: TextInput.Password
|
|
placeholderText: "Пароль"
|
|
inputMethodHints: Qt.ImhNoPredictiveText
|
|
background: Rectangle {
|
|
radius: 10
|
|
color: "#0b1d44"
|
|
border.color: "#153a85"
|
|
border.width: 1
|
|
}
|
|
color: "#e8f1ff"
|
|
padding: 14
|
|
onAccepted: loginButton.clicked()
|
|
}
|
|
|
|
Button {
|
|
id: loginButton
|
|
Layout.fillWidth: true
|
|
text: "Войти"
|
|
enabled: password.text.length > 0
|
|
background: Rectangle {
|
|
radius: 10
|
|
color: loginButton.enabled ? "#1e55b8" : "#163b7a"
|
|
}
|
|
contentItem: Text {
|
|
text: loginButton.text
|
|
color: "#ffffff"
|
|
font.pixelSize: 18
|
|
font.weight: Font.DemiBold
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
onClicked: {
|
|
sddm.login(userModel.get(userBox.currentIndex).name, password.text, sessionModel.lastIndex)
|
|
}
|
|
}
|
|
|
|
Label {
|
|
id: msg
|
|
Layout.fillWidth: true
|
|
text: (sddm.loginFailed ? "Неверный логин или пароль" : "")
|
|
color: "#ff8a8a"
|
|
wrapMode: Text.WordWrap
|
|
horizontalAlignment: Text.AlignHCenter
|
|
}
|
|
|
|
RowLayout {
|
|
Layout.fillWidth: true
|
|
spacing: 12
|
|
|
|
ComboBox {
|
|
id: sessionBox
|
|
Layout.fillWidth: true
|
|
model: sessionModel
|
|
textRole: "name"
|
|
currentIndex: sessionModel.lastIndex
|
|
background: Rectangle {
|
|
radius: 10
|
|
color: "#0b1d44"
|
|
border.color: "#153a85"
|
|
border.width: 1
|
|
}
|
|
contentItem: Text {
|
|
leftPadding: 14
|
|
rightPadding: 14
|
|
text: sessionBox.displayText
|
|
color: "#e8f1ff"
|
|
verticalAlignment: Text.AlignVCenter
|
|
elide: Text.ElideRight
|
|
}
|
|
}
|
|
|
|
Button {
|
|
text: "Выключить"
|
|
Layout.preferredWidth: 160
|
|
background: Rectangle {
|
|
radius: 10
|
|
color: "#0b1d44"
|
|
border.color: "#153a85"
|
|
border.width: 1
|
|
}
|
|
contentItem: Text {
|
|
text: parent.text
|
|
color: "#e8f1ff"
|
|
font.pixelSize: 16
|
|
horizontalAlignment: Text.AlignHCenter
|
|
verticalAlignment: Text.AlignVCenter
|
|
}
|
|
onClicked: sddm.powerOff()
|
|
}
|
|
}
|
|
}
|
|
|
|
Label {
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
anchors.bottom: parent.bottom
|
|
anchors.bottomMargin: 20
|
|
text: "SAIKYO"
|
|
color: "#b7d0ff"
|
|
opacity: 0.55
|
|
font.pixelSize: 14
|
|
letterSpacing: 4
|
|
}
|
|
}
|