punktdateien/kde/plasma/look-and-feel/Dracula-purple/contents/logout/Logout.qml
2024-02-14 21:14:16 +01:00

262 lines
9.8 KiB
QML

/***************************************************************************
* Copyright (C) 2014 by Aleix Pol Gonzalez <aleixpol@blue-systems.com> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
* This program is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the GNU General Public License *
* along with this program; if not, write to the *
* Free Software Foundation, Inc., *
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA . *
***************************************************************************/
import QtQuick 2.2
import QtQuick.Layouts 1.2
import QtQuick.Controls 1.1 as Controls
import org.kde.plasma.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.kcoreaddons 1.0 as KCoreAddons
import "../components"
import "timer.js" as AutoTriggerTimer
import org.kde.plasma.private.sessions 2.0
PlasmaCore.ColorScope {
id: root
colorGroup: PlasmaCore.Theme.ComplementaryColorGroup
height: screenGeometry.height
width: screenGeometry.width
signal logoutRequested()
signal haltRequested()
signal suspendRequested(int spdMethod)
signal rebootRequested()
signal rebootRequested2(int opt)
signal cancelRequested()
signal lockScreenRequested()
property alias backgroundColor: backgroundRect.color
function sleepRequested() {
root.suspendRequested(2);
}
function hibernateRequested() {
root.suspendRequested(4);
}
property real timeout: 30
property real remainingTime: root.timeout
property var currentAction: {
switch (sdtype) {
case ShutdownType.ShutdownTypeReboot:
return root.rebootRequested;
case ShutdownType.ShutdownTypeHalt:
return root.haltRequested;
default:
return root.logoutRequested;
}
}
KCoreAddons.KUser {
id: kuser
}
// For showing a "other users are logged in" hint
SessionsModel {
id: sessionsModel
includeUnusedSessions: false
}
Controls.Action {
onTriggered: root.cancelRequested()
shortcut: "Escape"
}
onRemainingTimeChanged: {
if (remainingTime <= 0) {
root.currentAction();
}
}
Timer {
id: countDownTimer
running: true
repeat: true
interval: 1000
onTriggered: remainingTime--
Component.onCompleted: {
AutoTriggerTimer.addCancelAutoTriggerCallback(function() {
countDownTimer.running = false;
});
}
}
function isLightColor(color) {
return Math.max(color.r, color.g, color.b) > 0.5
}
Rectangle {
id: backgroundRect
anchors.fill: parent
//use "black" because this is intended to look like a general darkening of the scene. a dark gray as normal background would just look too "washed out"
color: "#1e1f29"
opacity: 0.6
}
MouseArea {
anchors.fill: parent
onClicked: root.cancelRequested()
}
UserDelegate {
width: units.gridUnit * 7
height: width
nameFontSize: theme.defaultFont.pointSize + 2
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.verticalCenter
}
constrainText: false
avatarPath: kuser.faceIconUrl
iconSource: "user-identity"
isCurrent: true
name: kuser.fullName
}
ColumnLayout {
anchors {
top: parent.verticalCenter
topMargin: units.gridUnit * 2
horizontalCenter: parent.horizontalCenter
}
spacing: units.largeSpacing
height: Math.max(implicitHeight, units.gridUnit * 10)
width: Math.max(implicitWidth, units.gridUnit * 16)
PlasmaComponents.Label {
font.pointSize: theme.defaultFont.pointSize + 1
Layout.maximumWidth: units.gridUnit * 16
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.italic: true
text: i18ndp("plasma_lookandfeel_org.kde.lookandfeel",
"One other user is currently logged in. If the computer is shut down or restarted, that user may lose work.",
"%1 other users are currently logged in. If the computer is shut down or restarted, those users may lose work.",
sessionsModel.count)
visible: sessionsModel.count > 1
}
PlasmaComponents.Label {
font.pointSize: theme.defaultFont.pointSize + 1
Layout.maximumWidth: units.gridUnit * 16
Layout.alignment: Qt.AlignHCenter
Layout.fillWidth: true
horizontalAlignment: Text.AlignHCenter
wrapMode: Text.WordWrap
font.italic: true
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "When restarted, the computer will enter the firmware setup screen.")
visible: rebootToFirmwareSetup
}
RowLayout {
spacing: units.largeSpacing * 2
Layout.alignment: Qt.AlignHCenter
LogoutButton {
id: suspendButton
iconSource: "system-suspend"
text: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "Suspend to RAM", "Sleep")
action: root.sleepRequested
KeyNavigation.left: logoutButton
KeyNavigation.right: hibernateButton
visible: spdMethods.SuspendState
}
LogoutButton {
id: hibernateButton
iconSource: "system-suspend-hibernate"
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Hibernate")
action: root.hibernateRequested
KeyNavigation.left: suspendButton
KeyNavigation.right: rebootButton
visible: spdMethods.HibernateState
}
LogoutButton {
id: rebootButton
iconSource: "system-reboot"
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart")
action: root.rebootRequested
KeyNavigation.left: hibernateButton
KeyNavigation.right: shutdownButton
focus: sdtype === ShutdownType.ShutdownTypeReboot
visible: maysd
}
LogoutButton {
id: shutdownButton
iconSource: "system-shutdown"
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Shut Down")
action: root.haltRequested
KeyNavigation.left: rebootButton
KeyNavigation.right: logoutButton
focus: sdtype === ShutdownType.ShutdownTypeHalt
visible: maysd
}
LogoutButton {
id: logoutButton
iconSource: "system-log-out"
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Log Out")
action: root.logoutRequested
KeyNavigation.left: shutdownButton
KeyNavigation.right: suspendButton
focus: sdtype === ShutdownType.ShutdownTypeNone
visible: canLogout
}
}
PlasmaComponents.Label {
font.pointSize: theme.defaultFont.pointSize + 1
Layout.alignment: Qt.AlignHCenter
//opacity, as visible would re-layout
opacity: countDownTimer.running ? 1 : 0
Behavior on opacity {
OpacityAnimator {
duration: units.longDuration
easing.type: Easing.InOutQuad
}
}
text: {
switch (sdtype) {
case ShutdownType.ShutdownTypeReboot:
return i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Restarting in 1 second", "Restarting in %1 seconds", root.remainingTime);
case ShutdownType.ShutdownTypeHalt:
return i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Shutting down in 1 second", "Shutting down in %1 seconds", root.remainingTime);
default:
return i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Logging out in 1 second", "Logging out in %1 seconds", root.remainingTime);
}
}
}
RowLayout {
Layout.alignment: Qt.AlignHCenter
PlasmaComponents.Button {
font.pointSize: theme.defaultFont.pointSize + 1
enabled: root.currentAction !== null
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "OK")
onClicked: root.currentAction()
}
PlasmaComponents.Button {
font.pointSize: theme.defaultFont.pointSize + 1
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Cancel")
onClicked: root.cancelRequested()
}
}
}
}