Warning, /plasma/qqc2-breeze-style/style/impl/SpinBoxIndicator.qml is written in an unsupported language. File is not indexed.
0001 /* SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com> 0002 * SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0003 */ 0004 0005 import QtQuick 0006 import org.kde.kirigami as Kirigami 0007 0008 import "." as Impl 0009 0010 Item { 0011 id: root 0012 0013 property QtObject button // QQuickSpinButton is a QObject 0014 property bool mirrored: false 0015 property int alignment: Qt.AlignLeft 0016 property bool leftAligned: root.alignment == Qt.AlignLeft 0017 property bool rightAligned: root.alignment == Qt.AlignRight 0018 property real leftRadius: { 0019 if ((leftAligned && !mirrored) 0020 || (rightAligned && mirrored)) { 0021 return Impl.Units.smallRadius 0022 } else { 0023 return 0 0024 } 0025 } 0026 property real rightRadius: { 0027 if ((rightAligned && !mirrored) 0028 || (leftAligned && mirrored)) { 0029 return Impl.Units.smallRadius 0030 } else { 0031 return 0 0032 } 0033 } 0034 0035 x: { 0036 if ((leftAligned && !mirrored) 0037 || (rightAligned && mirrored)) { 0038 return 0 0039 } else { 0040 return parent.width - width 0041 } 0042 } 0043 height: parent.height 0044 0045 implicitWidth: implicitHeight 0046 implicitHeight: Impl.Units.mediumControlHeight 0047 0048 Rectangle { 0049 id: separator 0050 width: Impl.Units.smallBorder 0051 x: { 0052 if ((leftAligned && !mirrored) 0053 || (rightAligned && mirrored)) { 0054 return parent.width - width 0055 } else { 0056 return 0 0057 } 0058 } 0059 anchors { 0060 top: parent.top 0061 bottom: parent.bottom 0062 topMargin: Kirigami.Units.smallSpacing 0063 bottomMargin: Kirigami.Units.smallSpacing 0064 } 0065 0066 color: button.pressed || button.hovered ? Kirigami.Theme.focusColor : Impl.Theme.separatorColor() 0067 0068 Behavior on color { 0069 enabled: button.pressed || button.hovered 0070 ColorAnimation { 0071 duration: Kirigami.Units.shortDuration 0072 easing.type: Easing.OutCubic 0073 } 0074 } 0075 } 0076 0077 Kirigami.ShadowedRectangle { 0078 id: pressedBg 0079 Kirigami.Theme.colorSet: Kirigami.Theme.Button 0080 Kirigami.Theme.inherit: false 0081 opacity: 0 0082 anchors.fill: parent 0083 color: Kirigami.Theme.alternateBackgroundColor 0084 corners { 0085 topLeftRadius: root.leftRadius 0086 topRightRadius: root.rightRadius 0087 bottomLeftRadius: root.leftRadius 0088 bottomRightRadius: root.rightRadius 0089 } 0090 border.color: Kirigami.Theme.focusColor 0091 border.width: Impl.Units.smallBorder 0092 0093 states: State { 0094 name: "pressed" 0095 when: button.pressed 0096 PropertyChanges { 0097 target: pressedBg 0098 opacity: 1 0099 visible: true 0100 } 0101 } 0102 transitions: Transition { 0103 from: "pressed" 0104 to: "" 0105 SequentialAnimation { 0106 OpacityAnimator { 0107 duration: Kirigami.Units.shortDuration 0108 easing.type: Easing.OutCubic 0109 } 0110 PropertyAction { 0111 target: pressedBg 0112 property: "visible" 0113 value: false 0114 } 0115 } 0116 } 0117 } 0118 0119 Kirigami.Icon { 0120 implicitHeight: Kirigami.Units.iconSizes.sizeForLabels 0121 implicitWidth: implicitHeight 0122 anchors { 0123 centerIn: parent 0124 } 0125 source: { 0126 // For some reason I don't need to use the fancier logic with this 0127 if (leftAligned) { 0128 return "arrow-down" 0129 } else { 0130 return "arrow-up" 0131 } 0132 } 0133 } 0134 }