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