Very early KDE 6 release.

This commit is contained in:
wackyideas 2024-08-09 03:20:25 +02:00
parent 7cc4ccabbc
commit 686046d4f7
6272 changed files with 140920 additions and 529657 deletions

View file

@ -0,0 +1,280 @@
/*
SPDX-FileCopyrightText: 2014 Aleix Pol Gonzalez <aleixpol@blue-systems.com>
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.2
import QtQuick.Layouts 1.2
import QtQuick.Controls 2.12 as QQC2
import org.kde.plasma.components 3.0 as PlasmaComponents
import org.kde.coreaddons 1.0 as KCoreAddons
import org.kde.kirigami 2.20 as Kirigami
import org.kde.breeze.components
import "timer.js" as AutoTriggerTimer
import org.kde.plasma.private.sessions 2.0
Item {
id: root
Kirigami.Theme.inherit: false
Kirigami.Theme.colorSet: Kirigami.Theme.Complementary
height: screenGeometry.height
width: screenGeometry.width
signal logoutRequested()
signal haltRequested()
signal suspendRequested(int spdMethod)
signal rebootRequested()
signal rebootRequested2(int opt)
signal cancelRequested()
signal lockScreenRequested()
signal cancelSoftwareUpdateRequested()
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();
}
}
readonly property bool showAllOptions: sdtype === ShutdownType.ShutdownTypeDefault
KCoreAddons.KUser {
id: kuser
}
// For showing a "other users are logged in" hint
SessionsModel {
id: sessionsModel
includeUnusedSessions: false
}
QQC2.Action {
onTriggered: root.cancelRequested()
shortcut: "Escape"
}
onRemainingTimeChanged: {
if (remainingTime <= 0) {
(root.currentAction)();
}
}
Timer {
id: countDownTimer
running: !root.showAllOptions
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: root.isLightColor(Kirigami.Theme.backgroundColor) ? Kirigami.Theme.backgroundColor : "black"
opacity: 0.5
}
MouseArea {
anchors.fill: parent
onClicked: root.cancelRequested()
}
UserDelegate {
width: Kirigami.Units.gridUnit * 8
height: Kirigami.Units.gridUnit * 9
anchors {
horizontalCenter: parent.horizontalCenter
bottom: parent.verticalCenter
}
constrainText: false
avatarPath: kuser.faceIconUrl
iconSource: "user-identity"
isCurrent: true
name: kuser.fullName
}
ColumnLayout {
id: column
anchors {
top: parent.verticalCenter
topMargin: Kirigami.Units.gridUnit * 2
horizontalCenter: parent.horizontalCenter
}
spacing: Kirigami.Units.largeSpacing
height: Math.max(implicitHeight, Kirigami.Units.gridUnit * 10)
width: Math.max(implicitWidth, Kirigami.Units.gridUnit * 16)
PlasmaComponents.Label {
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
Layout.alignment: Qt.AlignHCenter
//opacity, as visible would re-layout
opacity: countDownTimer.running ? 1 : 0
Behavior on opacity {
OpacityAnimator {
duration: Kirigami.Units.longDuration
easing.type: Easing.InOutQuad
}
}
text: {
switch (sdtype) {
case ShutdownType.ShutdownTypeReboot:
return softwareUpdatePending ? i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Installing software updates and restarting in 1 second", "Installing software updates and restarting in %1 seconds", root.remainingTime)
: i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Restarting in 1 second", "Restarting in %1 seconds", root.remainingTime);
case ShutdownType.ShutdownTypeNone:
return i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Logging out in 1 second", "Logging out in %1 seconds", root.remainingTime);
case ShutdownType.ShutdownTypeHalt:
default:
return i18ndp("plasma_lookandfeel_org.kde.lookandfeel", "Shutting down in 1 second", "Shutting down in %1 seconds", root.remainingTime);
}
}
textFormat: Text.PlainText
}
PlasmaComponents.Label {
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
Layout.maximumWidth: Math.max(Kirigami.Units.gridUnit * 16, logoutButtonsRow.implicitWidth)
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 - 1)
textFormat: Text.PlainText
visible: sessionsModel.count > 1
}
PlasmaComponents.Label {
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
Layout.maximumWidth: Math.max(Kirigami.Units.gridUnit * 16, logoutButtonsRow.implicitWidth)
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.")
textFormat: Text.PlainText
visible: rebootToFirmwareSetup
}
RowLayout {
id: logoutButtonsRow
spacing: Kirigami.Units.gridUnit * 2
Layout.topMargin: Kirigami.Units.gridUnit * 2 - column.spacing
Layout.alignment: Qt.AlignHCenter
LogoutButton {
id: suspendButton
iconSource: "system-suspend"
text: root.showAllOptions ? i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "Suspend to RAM", "Sleep")
: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "Suspend to RAM", "Sleep Now")
onClicked: root.sleepRequested()
KeyNavigation.left: cancelButton
KeyNavigation.right: hibernateButton.visible ? hibernateButton : (rebootButton.visible ? rebootButton : (shutdownButton.visible ? shutdownButton : (logoutButton.visible ? logoutButton : cancelButton)))
visible: spdMethods.SuspendState && root.showAllOptions
}
LogoutButton {
id: hibernateButton
iconSource: "system-suspend-hibernate"
text: root.showAllOptions ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Hibernate")
: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Hibernate Now")
onClicked: root.hibernateRequested()
KeyNavigation.left: suspendButton.visible ? suspendButton : cancelButton
KeyNavigation.right: rebootButton.visible ? rebootButton : (shutdownButton.visible ? shutdownButton : (logoutButton.visible ? logoutButton : cancelButton))
visible: spdMethods.HibernateState && root.showAllOptions
}
LogoutButton {
id: rebootButton
iconSource: softwareUpdatePending ? "update-none" : "system-reboot"
text: {
if (softwareUpdatePending) {
return root.showAllOptions ? i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "@action:button Keep short", "Install Updates & Restart")
: i18ndc("plasma_lookandfeel_org.kde.lookandfeel", "@action:button Keep short", "Install Updates & Restart Now")
} else {
return root.showAllOptions ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart")
: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart Now")
}
}
onClicked: root.rebootRequested()
KeyNavigation.left: hibernateButton.visible ? hibernateButton : (suspendButton.visible ? suspendButton : cancelButton)
KeyNavigation.right: rebootWithoutUpdatesButton.visible ? rebootWithoutUpdatesButton : (shutdownButton.visible ? shutdownButton : (logoutButton.visible ? logoutButton : cancelButton))
focus: sdtype === ShutdownType.ShutdownTypeReboot
visible: maysd && (sdtype === ShutdownType.ShutdownTypeReboot || root.showAllOptions)
}
LogoutButton {
id: rebootWithoutUpdatesButton
iconSource: "system-reboot"
text: root.showAllOptions ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart")
: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Restart Now")
onClicked: {
root.cancelSoftwareUpdateRequested()
root.rebootRequested()
}
KeyNavigation.left: rebootButton
KeyNavigation.right: shutdownButton.visible ? shutdownButton : (logoutButton.visible ? logoutButton : cancelButton)
visible: maysd && softwareUpdatePending && (sdtype === ShutdownType.ShutdownTypeReboot || root.showAllOptions)
}
LogoutButton {
id: shutdownButton
iconSource: "system-shutdown"
text: root.showAllOptions ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Shut Down")
: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Shut Down Now")
onClicked: root.haltRequested()
KeyNavigation.left: rebootWithoutUpdatesButton.visible ? rebootWithoutUpdatesButton : (rebootButton.visible ? rebootButton : (hibernateButton.visible ? hibernateButton : (suspendButton.visible ? suspendButton : cancelButton)))
KeyNavigation.right: logoutButton.visible ? logoutButton : cancelButton
focus: sdtype === ShutdownType.ShutdownTypeHalt || root.showAllOptions
visible: maysd && (sdtype === ShutdownType.ShutdownTypeHalt || root.showAllOptions)
}
LogoutButton {
id: logoutButton
iconSource: "system-log-out"
text: root.showAllOptions ? i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Log Out")
: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Log Out Now")
onClicked: root.logoutRequested()
KeyNavigation.left: shutdownButton.visible ? shutdownButton : (rebootWithoutUpdatesButton.visible ? rebootWithoutUpdatesButton : (rebootButton.visible ? rebootButton : (hibernateButton.visible ? hibernateButton : (suspendButton.visible ? suspendButton : cancelButton))))
KeyNavigation.right: cancelButton
focus: sdtype === ShutdownType.ShutdownTypeNone
visible: canLogout && (sdtype === ShutdownType.ShutdownTypeNone || root.showAllOptions)
}
LogoutButton {
id: cancelButton
iconSource: "dialog-cancel"
text: i18nd("plasma_lookandfeel_org.kde.lookandfeel", "Cancel")
onClicked: root.cancelRequested()
KeyNavigation.left: logoutButton.visible ? logoutButton : (shutdownButton.visible ? shutdownButton : (rebootWithoutUpdatesButton.visible ? rebootWithoutUpdatesButton : (rebootButton.visible ? rebootButton : (hibernateButton.visible ? hibernateButton : suspendButton))))
KeyNavigation.right: suspendButton.visible ? suspendButton : (hibernateButton.visible ? hibernateButton : rebootButton)
}
}
}
}

View file

@ -0,0 +1,37 @@
/*
SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
import QtQuick 2.2
import QtQuick.Layouts 1.2
import org.kde.kirigami 2.20 as Kirigami
import org.kde.breeze.components
import "timer.js" as AutoTriggerTimer
ActionButton {
Layout.alignment: Qt.AlignTop
iconSize: Kirigami.Units.iconSizes.huge
labelRendering: Text.QtRendering // Remove once we've solved Qt bug: https://bugreports.qt.io/browse/QTBUG-70138 (KDE bug: https://bugs.kde.org/show_bug.cgi?id=401644)
font.underline: false
font.pointSize: Kirigami.Theme.defaultFont.pointSize + 1
circleVisiblity: activeFocus || containsMouse
circleOpacity: 0.15 // Selected option's circle is instantly visible
opacity: activeFocus || containsMouse ? 1 : 0.5
Behavior on opacity {
PropertyAnimation { // OpacityAnimator makes it turn black at random intervals
duration: Kirigami.Units.longDuration
easing.type: Easing.InOutQuad
}
}
Keys.onPressed: {
AutoTriggerTimer.cancelAutoTrigger();
}
}

View file

@ -0,0 +1,26 @@
/*
SPDX-FileCopyrightText: 2018 David Edmundson <davidedmundson@kde.org>
SPDX-License-Identifier: GPL-2.0-or-later
*/
.pragma library
//written as a library to share knowledge of when a key was pressed
//between the multiple views, so pressing a key on one cancels all timers
var callbacks = [];
function addCancelAutoTriggerCallback(callback) {
callbacks.push(callback);
}
function cancelAutoTrigger() {
callbacks.forEach(function(c) {
if (!c) {
return;
}
c();
});
}