Warning, /plasma/plasma-simplemenu/package/contents/ui/CompactRepresentation.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 SPDX-FileCopyrightText: 2013-2014 Eike Hein <hein@kde.org> 0003 0004 SPDX-License-Identifier: GPL-2.0-or-later 0005 */ 0006 0007 import QtQuick 2.0 0008 import QtQuick.Layouts 1.1 0009 0010 import org.kde.plasma.plasmoid 2.0 0011 import org.kde.plasma.core 2.0 as PlasmaCore 0012 0013 Item { 0014 id: root 0015 0016 readonly property var screenGeometry: plasmoid.screenGeometry 0017 readonly property bool inPanel: (plasmoid.location == PlasmaCore.Types.TopEdge 0018 || plasmoid.location == PlasmaCore.Types.RightEdge 0019 || plasmoid.location == PlasmaCore.Types.BottomEdge 0020 || plasmoid.location == PlasmaCore.Types.LeftEdge) 0021 readonly property bool vertical: (plasmoid.formFactor == PlasmaCore.Types.Vertical) 0022 readonly property bool useCustomButtonImage: (plasmoid.configuration.useCustomButtonImage 0023 && plasmoid.configuration.customButtonImage.length != 0) 0024 property QtObject dashWindow: null 0025 0026 Plasmoid.status: dashWindow && dashWindow.visible ? PlasmaCore.Types.RequiresAttentionStatus : PlasmaCore.Types.PassiveStatus 0027 0028 onWidthChanged: updateSizeHints() 0029 onHeightChanged: updateSizeHints() 0030 0031 function updateSizeHints() { 0032 if (useCustomButtonImage) { 0033 if (vertical) { 0034 var scaledHeight = Math.floor(parent.width * (buttonIcon.implicitHeight / buttonIcon.implicitWidth)); 0035 root.Layout.minimumHeight = scaledHeight; 0036 root.Layout.maximumHeight = scaledHeight; 0037 root.Layout.minimumWidth = units.iconSizes.small; 0038 root.Layout.maximumWidth = inPanel ? units.iconSizeHints.panel : -1; 0039 } else { 0040 var scaledWidth = Math.floor(parent.height * (buttonIcon.implicitWidth / buttonIcon.implicitHeight)); 0041 root.Layout.minimumWidth = scaledWidth; 0042 root.Layout.maximumWidth = scaledWidth; 0043 root.Layout.minimumHeight = units.iconSizes.small; 0044 root.Layout.maximumHeight = inPanel ? units.iconSizeHints.panel : -1; 0045 } 0046 } else { 0047 root.Layout.minimumWidth = units.iconSizes.small; 0048 root.Layout.maximumWidth = inPanel ? units.iconSizeHints.panel : -1; 0049 root.Layout.minimumHeight = units.iconSizes.small 0050 root.Layout.maximumHeight = inPanel ? units.iconSizeHints.panel : -1; 0051 } 0052 } 0053 0054 Connections { 0055 target: units.iconSizeHints 0056 0057 onPanelChanged: updateSizeHints() 0058 } 0059 0060 PlasmaCore.IconItem { 0061 id: buttonIcon 0062 0063 anchors.fill: parent 0064 0065 readonly property double aspectRatio: (vertical ? implicitHeight / implicitWidth 0066 : implicitWidth / implicitHeight) 0067 0068 source: useCustomButtonImage ? plasmoid.configuration.customButtonImage : plasmoid.configuration.icon 0069 0070 active: mouseArea.containsMouse 0071 0072 smooth: true 0073 0074 // A custom icon could also be rectangular. However, if a square, custom, icon is given, assume it 0075 // to be an icon and round it to the nearest icon size again to avoid scaling artefacts. 0076 roundToIconSize: !useCustomButtonImage || aspectRatio === 1 0077 0078 onSourceChanged: updateSizeHints() 0079 } 0080 0081 MouseArea 0082 { 0083 id: mouseArea 0084 0085 anchors.fill: parent 0086 0087 hoverEnabled: true 0088 0089 onClicked: { 0090 dashWindow.visible = !dashWindow.visible; 0091 } 0092 } 0093 0094 Component.onCompleted: { 0095 dashWindow = Qt.createQmlObject("MenuRepresentation {}", root); 0096 plasmoid.activated.connect(function() { 0097 dashWindow.visible = !dashWindow.visible; 0098 }); 0099 } 0100 }