Warning, /plasma/plasma-bigscreen/components/qml/AbstractDelegate.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2019 Aditya Mehra <aix.m@outlook.com>
0003 SPDX-FileCopyrightText: 2019 Marco Martin <mart@kde.org>
0004
0005 SPDX-License-Identifier: GPL-2.0-or-later
0006 */
0007
0008 import QtQuick 2.14
0009 import QtQuick.Layouts 1.14
0010 import Qt5Compat.GraphicalEffects
0011
0012 import org.kde.plasma.core 2.0 as PlasmaCore
0013 import org.kde.plasma.components 3.0 as PlasmaComponents
0014 import org.kde.kirigami 2.12 as Kirigami
0015 import org.kde.mycroft.bigscreen 1.0 as BigScreen
0016
0017 PlasmaComponents.ItemDelegate {
0018 id: delegate
0019
0020 readonly property Flickable listView: {
0021 var candidate = parent;
0022 while (candidate) {
0023 if (candidate instanceof Flickable) {
0024 return candidate;
0025 }
0026 candidate = candidate.parent;
0027 }
0028 return null;
0029 }
0030 readonly property bool isCurrent: {//print(text+index+" "+listView.currentIndex+activeFocus+" "+listView.moving)
0031 listView.currentIndex == index && activeFocus && !listView.moving
0032 }
0033
0034 highlighted: isCurrent
0035 property int borderSize: Kirigami.Units.smallSpacing
0036 property int baseRadius: 3
0037
0038 z: isCurrent ? 2 : 0
0039
0040 onClicked: {
0041 listView.forceActiveFocus()
0042 listView.currentIndex = index
0043 }
0044
0045 leftPadding: Kirigami.Units.largeSpacing * 2
0046 topPadding: Kirigami.Units.largeSpacing * 2
0047 rightPadding: Kirigami.Units.largeSpacing * 2
0048 bottomPadding: Kirigami.Units.largeSpacing * 2
0049
0050 leftInset: Kirigami.Units.largeSpacing
0051 topInset: Kirigami.Units.largeSpacing
0052 rightInset: Kirigami.Units.largeSpacing
0053 bottomInset: Kirigami.Units.largeSpacing
0054
0055
0056 Keys.onReturnPressed: {
0057 clicked();
0058 }
0059
0060 contentItem: Item {}
0061
0062 background: Item {
0063 id: background
0064
0065 readonly property Item highlight: Rectangle {
0066 parent: delegate
0067 z: 1
0068 anchors {
0069 fill: parent
0070 }
0071 color: "transparent"
0072 border {
0073 width: delegate.borderSize
0074 color: delegate.Kirigami.Theme.highlightColor
0075 }
0076 opacity: delegate.isCurrent || delegate.highlighted
0077 Behavior on opacity {
0078 OpacityAnimator {
0079 duration: Kirigami.Units.longDuration/2
0080 easing.type: Easing.InOutQuad
0081 }
0082 }
0083 }
0084
0085 Kirigami.ShadowedRectangle {
0086 id: frame
0087 anchors {
0088 fill: parent
0089 }
0090 radius: delegate.baseRadius
0091 color: delegate.Kirigami.Theme.backgroundColor
0092 shadow {
0093 size: Kirigami.Units.largeSpacing * 2
0094 }
0095
0096 states: [
0097 State {
0098 when: delegate.isCurrent
0099 PropertyChanges {
0100 target: delegate
0101 leftInset: 0
0102 rightInset: 0
0103 topInset: 0
0104 bottomInset: 0
0105 }
0106 PropertyChanges {
0107 target: background.highlight.anchors
0108 margins: 0
0109 }
0110 PropertyChanges {
0111 target: frame
0112 // baseRadius + borderSize preserves the original radius for the visible part of frame
0113 radius: delegate.baseRadius + delegate.borderSize
0114 }
0115 PropertyChanges {
0116 target: background.highlight
0117 // baseRadius + borderSize preserves the original radius for the visible part of frame
0118 radius: delegate.baseRadius + delegate.borderSize
0119 }
0120 },
0121 State {
0122 when: !delegate.isCurrent
0123 PropertyChanges {
0124 target: delegate
0125 leftInset: Kirigami.Units.largeSpacing
0126 rightInset: Kirigami.Units.largeSpacing
0127 topInset: Kirigami.Units.largeSpacing
0128 bottomInset: Kirigami.Units.largeSpacing
0129 }
0130 PropertyChanges {
0131 target: background.highlight.anchors
0132 margins: Kirigami.Units.largeSpacing
0133 }
0134 PropertyChanges {
0135 target: frame
0136 radius: delegate.baseRadius
0137 }
0138 PropertyChanges {
0139 target: background.highlight
0140 radius: delegate.baseRadius
0141 }
0142 }
0143 ]
0144
0145 transitions: Transition {
0146 ParallelAnimation {
0147 NumberAnimation {
0148 property: "leftInset"
0149 duration: Kirigami.Units.longDuration
0150 easing.type: Easing.InOutQuad
0151 }
0152 NumberAnimation {
0153 property: "rightInset"
0154 duration: Kirigami.Units.longDuration
0155 easing.type: Easing.InOutQuad
0156 }
0157 NumberAnimation {
0158 property: "topInset"
0159 duration: Kirigami.Units.longDuration
0160 easing.type: Easing.InOutQuad
0161 }
0162 NumberAnimation {
0163 property: "bottomInset"
0164 duration: Kirigami.Units.longDuration
0165 easing.type: Easing.InOutQuad
0166 }
0167 NumberAnimation {
0168 property: "radius"
0169 duration: Kirigami.Units.longDuration
0170 easing.type: Easing.InOutQuad
0171 }
0172 NumberAnimation {
0173 property: "margins"
0174 duration: Kirigami.Units.longDuration
0175 easing.type: Easing.InOutQuad
0176 }
0177 }
0178 }
0179 }
0180 }
0181 }