Warning, /plasma/kscreen/plasmoid/package/contents/ui/main.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.plasma.plasmoid 2.0
0012 import org.kde.plasma.core as PlasmaCore
0013 import org.kde.kirigami 2.20 as Kirigami
0014 import org.kde.plasma.plasma5support 2.0 as P5Support
0015 import org.kde.kquickcontrolsaddons 2.0
0016 import org.kde.config as KConfig // KAuthorized.authorizeControlModule
0017 import org.kde.kcmutils // KCMLauncher
0018 import org.kde.private.kscreen 1.0
0019
0020 PlasmoidItem {
0021 id: root
0022
0023 // Only show if the user enabled presentation mode
0024 Plasmoid.status: presentationModeEnabled ? PlasmaCore.Types.ActiveStatus : PlasmaCore.Types.PassiveStatus
0025 toolTipSubText: presentationModeEnabled ? i18n("Presentation mode is enabled") : ""
0026
0027 readonly property string kcmName: "kcm_kscreen"
0028 readonly property bool kcmAllowed: KConfig.KAuthorized.authorizeControlModule("kcm_kscreen")
0029
0030 readonly property bool presentationModeEnabled: presentationModeCookie > 0
0031 property int presentationModeCookie: -1
0032
0033 readonly property bool isLaptop: (pmSource.data["PowerDevil"] && pmSource.data["PowerDevil"]["Is Lid Present"]) ? true : false
0034
0035 P5Support.DataSource {
0036 id: pmSource
0037 engine: "powermanagement"
0038 connectedSources: ["PowerDevil", "Inhibitions"]
0039
0040 onSourceAdded: source => {
0041 disconnectSource(source);
0042 connectSource(source);
0043 }
0044 onSourceRemoved: source => {
0045 disconnectSource(source);
0046 }
0047
0048 readonly property var inhibitions: {
0049 var inhibitions = [];
0050
0051 var data = pmSource.data.Inhibitions;
0052 if (data) {
0053 for (var key in data) {
0054 if (key === "plasmashell" || key === "plasmoidviewer") { // ignore our own inhibition
0055 continue;
0056 }
0057
0058 inhibitions.push(data[key]);
0059 }
0060 }
0061
0062 return inhibitions;
0063 }
0064 }
0065
0066 PlasmaCore.Action {
0067 id: configureAction
0068 text: i18n("Configure Display Settingsā¦")
0069 icon.name: "preferences-desktop-display"
0070 visible: kcmAllowed
0071 onTriggered: KCMLauncher.openSystemSettings(kcmName)
0072 }
0073 Component.onCompleted: {
0074 Plasmoid.setInternalAction("configure", configureAction);
0075 }
0076
0077 fullRepresentation: ColumnLayout {
0078 spacing: 0
0079 Layout.preferredWidth: Kirigami.Units.gridUnit * 15
0080
0081 ScreenLayoutSelection {
0082 Layout.leftMargin: Kirigami.Units.smallSpacing
0083 Layout.fillWidth: true
0084 screenLayouts: Plasmoid.availableActions().filter(action => action.action !== OsdAction.NoAction)
0085 }
0086
0087 PresentationModeItem {
0088 Layout.fillWidth: true
0089 Layout.topMargin: Kirigami.Units.smallSpacing * 2
0090 Layout.leftMargin: Kirigami.Units.smallSpacing
0091 }
0092
0093 // compact the layout
0094 Item {
0095 Layout.fillHeight: true
0096 }
0097 }
0098 }