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 }