/*************************************************************************** * Copyright (c) 2013 Abdurrahman AVCI * Modified for mga6 by eatdirt@mageia.org * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without restriction, * including without limitation the rights to use, copy, modify, merge, * publish, distribute, sublicense, and/or sell copies of the Software, * and to permit persons to whom the Software is furnished to do so, * subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE * OR OTHER DEALINGS IN THE SOFTWARE. * ***************************************************************************/ import QtQuick 2.0 import SddmComponents 2.0 Rectangle { id: container width: 760 height: 480 TextConstants { id: textConstants } Connections { target: sddm onLoginSucceeded: { errorMessage.color = "steelblue" errorMessage.text = textConstants.loginSucceeded } onLoginFailed: { errorMessage.color = "red" errorMessage.text = textConstants.loginFailed password.text = "" } } Repeater { model: screenModel Background { x: geometry.x; y: geometry.y; width: geometry.width; height:geometry.height source: config.background fillMode: Image.PreserveAspectCrop onStatusChanged: { if (status == Image.Error && source != config.defaultBackground) { source = config.defaultBackground } } } } Rectangle { property variant geometry: screenModel.geometry(screenModel.primary) x: geometry.x; y: geometry.y; width: geometry.width; height: geometry.height color: "transparent" Clock { id: clock anchors.margins: 5 anchors.top: parent.top; anchors.right: parent.right color: "white" timeFont.family: "Oxygen" } Image { id: rectangle anchors.centerIn: parent width: Math.max(608, mainColumn.implicitWidth + 50) height: Math.max(384, mainColumn.implicitHeight + 50) source: "mgangle.png" Column { id: mainColumn anchors.centerIn: parent spacing: 12 Text { anchors.horizontalCenter: parent.horizontalCenter color: "white" verticalAlignment: Text.AlignVCenter height: text.implicitHeight width: parent.width text: textConstants.welcomeText.arg(sddm.hostName) wrapMode: Text.WordWrap font.pixelSize: 24 elide: Text.ElideRight horizontalAlignment: Text.AlignHCenter } Column { width: parent.width spacing: 4 Text { id: lblName color: "white" width: parent.width text: textConstants.userName font.bold: true font.pixelSize: 12 } TextBox { id: name width: parent.width; height: 30 text: userModel.lastUser font.pixelSize: 14 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, session.index) event.accepted = true } } } } Column { width: parent.width spacing : 4 Text { id: lblPassword color: "white" width: parent.width text: textConstants.password font.bold: true font.pixelSize: 12 } PasswordBox { id: password width: parent.width; height: 30 font.pixelSize: 14 KeyNavigation.backtab: name; KeyNavigation.tab: session Keys.onPressed: { if (event.key === Qt.Key_Return || event.key === Qt.Key_Enter) { sddm.login(name.text, password.text, session.index) event.accepted = true } } } } Row { spacing: 4 width: parent.width z: 100 Column { z: 100 width: parent.width spacing : 4 anchors.bottom: parent.bottom Text { id: lblSession color: "white" width: parent.width text: textConstants.session wrapMode: TextEdit.WordWrap font.bold: true font.pixelSize: 12 } ComboBox { id: session width: parent.width; height: 30 font.pixelSize: 14 arrowIcon: "angle-down.png" model: sessionModel index: sessionModel.lastIndex KeyNavigation.backtab: password; KeyNavigation.tab: loginButton } } } Column { Text { id: errorMessage color: "white" anchors.horizontalCenter: parent.horizontalCenter text: textConstants.prompt font.pixelSize: 12 } } Row { spacing: 4 anchors.horizontalCenter: parent.horizontalCenter property int btnWidth: Math.max(loginButton.implicitWidth, shutdownButton.implicitWidth, rebootButton.implicitWidth, 80) + 8 Button { id: loginButton text: textConstants.login width: parent.btnWidth onClicked: sddm.login(name.text, password.text, session.index) KeyNavigation.backtab: session; KeyNavigation.tab: shutdownButton } Button { id: shutdownButton text: textConstants.shutdown width: parent.btnWidth onClicked: sddm.powerOff() KeyNavigation.backtab: loginButton; KeyNavigation.tab: rebootButton } Button { id: rebootButton text: textConstants.reboot width: parent.btnWidth onClicked: sddm.reboot() KeyNavigation.backtab: shutdownButton; KeyNavigation.tab: name } } } } } Component.onCompleted: { if (name.text == "") name.focus = true else password.focus = true } }