Warning, /plasma/kscreen/plasmoid/package/contents/ui/PresentationModeItem.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 Work sponsored by the LiMux project of the city of Munich:
0003 SPDX-FileCopyrightText: 2018 Kai Uwe Broulik <kde@broulik.de>
0004
0005 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0006 */
0007
0008 import QtQuick 2.15
0009 import QtQuick.Layouts 1.15
0010
0011 import org.kde.kirigami 2.20 as Kirigami
0012 import org.kde.plasma.components 3.0 as PlasmaComponents3
0013 import org.kde.plasma.extras 2.0 as PlasmaExtras
0014
0015 ColumnLayout {
0016 spacing: Kirigami.Units.smallSpacing
0017
0018 PlasmaComponents3.Switch {
0019 id: presentationModeSwitch
0020 Layout.fillWidth: true
0021 // Remove spacing between checkbox and the explanatory label below
0022 Layout.bottomMargin: -parent.spacing
0023 text: i18n("Enable Presentation Mode")
0024
0025 onCheckedChanged: {
0026 if (checked === root.presentationModeEnabled) {
0027 return;
0028 }
0029
0030 // disable Switch while job is running
0031 presentationModeSwitch.enabled = false;
0032
0033 const service = pmSource.serviceForSource("PowerDevil");
0034
0035 if (checked) {
0036 const op = service.operationDescription("beginSuppressingScreenPowerManagement");
0037 op.reason = i18n("User enabled presentation mode");
0038
0039 const job = service.startOperationCall(op);
0040 job.finished.connect(job => {
0041 presentationModeSwitch.enabled = true;
0042 });
0043 } else {
0044 const op = service.operationDescription("stopSuppressingScreenPowerManagement");
0045
0046 const job = service.startOperationCall(op);
0047 job.finished.connect(job => {
0048 presentationModeSwitch.enabled = true;
0049 });
0050 }
0051 }
0052 }
0053
0054 PlasmaExtras.DescriptiveLabel {
0055 Layout.fillWidth: true
0056 Layout.leftMargin: presentationModeSwitch.indicator.width + presentationModeSwitch.spacing
0057 font: Kirigami.Theme.smallFont
0058 text: i18n("This will prevent your screen and computer from turning off automatically.")
0059 wrapMode: Text.WordWrap
0060 }
0061
0062 InhibitionHint {
0063 Layout.fillWidth: true
0064 Layout.leftMargin: presentationModeSwitch.indicator.width + presentationModeSwitch.spacing
0065
0066 iconSource: pmSource.inhibitions.length > 0 ? pmSource.inhibitions[0].Icon || "" : ""
0067 text: {
0068 const inhibitions = pmSource.inhibitions;
0069 const inhibition = inhibitions[0];
0070 if (inhibitions.length > 1) {
0071 return i18ncp("Some Application and n others enforce presentation mode",
0072 "%2 and %1 other application are enforcing presentation mode.",
0073 "%2 and %1 other applications are enforcing presentation mode.",
0074 inhibitions.length - 1, inhibition.Name) // plural only works on %1
0075 } else if (inhibitions.length === 1) {
0076 if (!inhibition.Reason) {
0077 return i18nc("Some Application enforce presentation mode",
0078 "%1 is enforcing presentation mode.", inhibition.Name)
0079 } else {
0080 return i18nc("Some Application enforce presentation mode: Reason provided by the app",
0081 "%1 is enforcing presentation mode: %2", inhibition.Name, inhibition.Reason)
0082 }
0083 } else {
0084 return "";
0085 }
0086 }
0087 }
0088 }