Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/Switch.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2017 Marco Martin <mart@kde.org>
0003     SPDX-FileCopyrightText: 2017 The Qt Company Ltd.
0004 
0005     SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later
0006 */
0007 
0008 
0009 import QtQuick 2.6
0010 import QtQuick.Templates 2.15 as T
0011 import org.kde.kirigami 2.4 as Kirigami
0012 
0013 T.Switch {
0014     id: control
0015 
0016     implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
0017                             implicitContentWidth + leftPadding + rightPadding,
0018                             implicitIndicatorWidth + leftPadding + rightPadding)
0019     implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0020                              implicitContentHeight + topPadding + bottomPadding,
0021                              implicitIndicatorHeight + topPadding + bottomPadding)
0022     baselineOffset: contentItem.y + contentItem.baselineOffset
0023 
0024     padding: 1
0025     spacing: Kirigami.Units.smallSpacing
0026 
0027     hoverEnabled: true
0028 
0029     indicator: SwitchIndicator {
0030         x: if (control.contentItem !== null && control.contentItem.width > 0) {
0031             return control.mirrored ?
0032                 control.width - width - control.rightPadding : control.leftPadding
0033         } else {
0034             return control.leftPadding + (control.availableWidth - width) / 2
0035         }
0036         y: if (control.contentItem !== null
0037             && (control.contentItem instanceof Text || control.contentItem instanceof TextEdit)
0038             && control.contentItem.lineCount > 1) {
0039             return control.topPadding
0040         } else {
0041             return control.topPadding + Math.round((control.availableHeight - height) / 2)
0042         }
0043         control: control
0044     }
0045 
0046     Kirigami.MnemonicData.enabled: control.enabled && control.visible
0047     Kirigami.MnemonicData.controlType: Kirigami.MnemonicData.ActionElement
0048     Kirigami.MnemonicData.label: control.text
0049     Shortcut {
0050         //in case of explicit & the button manages it by itself
0051         enabled: !(RegExp(/\&[^\&]/).test(control.text))
0052         sequence: control.Kirigami.MnemonicData.sequence
0053         onActivated: control.toggle();
0054     }
0055 
0056     contentItem: Label {
0057         property FontMetrics fontMetrics: FontMetrics {}
0058         // Ensure consistent vertical position relative to indicator with multiple lines.
0059         // No need to round because .5 from the top will add with .5 from the bottom becoming 1.
0060         topPadding: Math.max(0, (control.implicitIndicatorHeight - fontMetrics.height) / 2)
0061         bottomPadding: topPadding
0062         leftPadding: control.indicator && !control.mirrored ? control.indicator.width + control.spacing : 0
0063         rightPadding: control.indicator && control.mirrored ? control.indicator.width + control.spacing : 0
0064         opacity: control.enabled ? 1 : 0.6
0065         text: control.Kirigami.MnemonicData.richTextLabel
0066         font: control.font
0067         color: Kirigami.Theme.textColor
0068         elide: Text.ElideRight
0069         visible: control.text
0070         horizontalAlignment: Text.AlignLeft
0071         verticalAlignment: Text.AlignVCenter
0072     }
0073 }