Warning, /plasma/plasma-desktop/kcms/keyboard/tastenbrett/qml/Key.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2019 Harald Sitter <sitter@kde.org>
0003
0004 SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL
0005 */
0006
0007 import QtQuick 2.12
0008 import QtQuick.Controls 2.5
0009
0010 ShapeCanvas {
0011 id: root
0012
0013 property QtObject key
0014 property variant keyColor: key.pressed ? activePalette.highlight : activePalette.button
0015 property variant labelColor: key.pressed ? activePalette.highlightedText : activePalette.buttonText
0016
0017 shape: key ? key.shape : null
0018 strokeSyle: activePalette.shadow
0019 fillStyle: keyColor
0020
0021 onKeyColorChanged: requestPaint()
0022
0023 KeyCap {
0024 key: parent.key
0025
0026 anchors.fill: parent
0027 anchors.margins: 22 // arbitrary spacing to key outlines
0028 }
0029
0030 Component.onCompleted: {
0031 if (!parent || !parent.row) {
0032 // There's implicit layout logic below when used inside a row.
0033 // Key may also be used standalone, so skip the layout bits.
0034 return;
0035 }
0036
0037 if (parent.row.orientation === Qt.Horizontal) {
0038 x = 0
0039
0040 for (var i in parent.children) {
0041 // find the furthest sibling -> it is our nearst one
0042 var sibling = parent.children[i]
0043 if (sibling === this) {
0044 continue
0045 }
0046 x = Math.max(x, sibling.x + sibling.width)
0047 }
0048 if (x > 0) {
0049 x += key.gap // found a sibling, gap us from it
0050 }
0051
0052 y = shape.bounds.y
0053 } else {
0054 y = 0
0055
0056 for (var i in parent.children) {
0057 // find the furthest sibling -> it is our nearst one
0058 var sibling = parent.children[i]
0059 if (sibling === this) {
0060 continue
0061 }
0062 y = Math.max(y, sibling.y + sibling.height)
0063 }
0064 if (y > 0) {
0065 y += key.gap // found a sibling, gap us from it
0066 }
0067
0068 x = shape.bounds.x
0069 }
0070 }
0071 }