1/* 2 SPDX-FileCopyrightText: 2016 Marco Martin <mart@kde.org> 3 4 SPDX-License-Identifier: LGPL-2.0-or-later 5*/ 6 7import QtQuick 2.6 8import QtQuick.Layouts 1.3 9import QtQuick.Templates @QQC2_VERSION@ as T 10import QtQuick.Controls @QQC2_VERSION@ 11import org.kde.plasma.core 2.0 as PlasmaCore 12import "private" 13 14T.CheckBox { 15 id: control 16 property real __indicatorMargin: control.indicator && control.indicator.visible && control.indicator.width > 0 ? 17 indicator.width + control.spacing : 0 18 19 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset, 20 implicitContentWidth + leftPadding + rightPadding, 21 implicitIndicatorWidth + leftPadding + rightPadding) 22 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset, 23 implicitContentHeight + topPadding + bottomPadding, 24 implicitIndicatorHeight + topPadding + bottomPadding) 25 baselineOffset: contentItem.y + contentItem.baselineOffset 26 27 spacing: PlasmaCore.Units.smallSpacing 28 29 hoverEnabled: true 30 31 // Keeping old default smallMedium size for compatibility 32 // with UIs that currently expect that as the default size 33 icon.width: PlasmaCore.Units.iconSizes.smallMedium 34 icon.height: PlasmaCore.Units.iconSizes.smallMedium 35 36 indicator: CheckIndicator { 37 x: !control.mirrored ? control.leftPadding : control.width - width - control.rightPadding 38 y: control.topPadding + (control.availableHeight - height) / 2 39 control: control 40 } 41 42 contentItem: IconLabel { 43 leftPadding: control.mirrored ? 0 : control.__indicatorMargin 44 rightPadding: !control.mirrored ? 0 : control.__indicatorMargin 45 palette: control.palette 46 font: control.font 47 alignment: Qt.AlignLeft 48 display: control.display 49 spacing: control.spacing 50 iconItem.implicitWidth: control.icon.width 51 iconItem.implicitHeight: control.icon.height 52 iconItem.source: control.icon.name || control.icon.source 53 label.text: control.text 54 Rectangle { // As long as we don't enable antialiasing, not rounding should be fine 55 parent: control.contentItem.label 56 width: Math.min(parent.width, parent.contentWidth) 57 height: PlasmaCore.Units.devicePixelRatio 58 anchors.left: parent.left 59 anchors.top: parent.bottom 60 color: PlasmaCore.ColorScope.highlightColor 61 visible: control.visualFocus 62 } 63 } 64} 65