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