Warning, /plasma-bigscreen/youtube-voice-application/ui/views/BackupListTileView.qml is written in an unsupported language. File is not indexed.
0001 /* 0002 * Copyright 2019 Aditya Mehra <aix.m@outlook.com> 0003 * Copyright 2019 Marco Martin <mart@kde.org> 0004 * 0005 * This program is free software; you can redistribute it and/or modify 0006 * it under the terms of the GNU General Public License as published by 0007 * the Free Software Foundation; either version 2 of the License, or 0008 * (at your option) any later version. 0009 * 0010 * This program is distributed in the hope that it will be useful, 0011 * but WITHOUT ANY WARRANTY; without even the implied warranty of 0012 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 0013 * GNU General Public License for more details. 0014 * 0015 * You should have received a copy of the GNU General Public License 0016 * along with this program; if not, write to the Free Software 0017 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. 0018 */ 0019 0020 import QtQuick 2.12 0021 import QtQuick.Layouts 1.4 0022 import QtQuick.Controls 2.4 as Controls 0023 import org.kde.plasma.components 3.0 as PlasmaComponents 0024 import org.kde.kirigami 2.5 as Kirigami 0025 0026 0027 ListView { 0028 id: view 0029 property int columns: parent.width >= 1500 ? Math.max(3, Math.floor(width / (Kirigami.Units.gridUnit * 14))) : 5 0030 0031 readonly property int cellWidth: width / columns 0032 0033 Layout.fillWidth: true 0034 Layout.preferredHeight: Kirigami.Units.gridUnit * 15 0035 z: activeFocus ? 10: 1 0036 keyNavigationEnabled: true 0037 highlightFollowsCurrentItem: true 0038 snapMode: ListView.SnapToItem 0039 cacheBuffer: width 0040 0041 displayMarginBeginning: rotation.angle != 0 ? width*2 : 0 0042 displayMarginEnd: rotation.angle != 0 ? width*2 : 0 0043 highlightMoveDuration: Kirigami.Units.longDuration 0044 transform: Rotation { 0045 id: rotation 0046 axis { x: 0; y: 1; z: 0 } 0047 angle: 0 0048 property real targetAngle: 30 0049 Behavior on angle { 0050 SmoothedAnimation { 0051 duration: Kirigami.Units.longDuration * 10 0052 } 0053 } 0054 origin.x: width/2 0055 } 0056 0057 Timer { 0058 id: rotateTimeOut 0059 interval: 25 0060 } 0061 Timer { 0062 id: rotateTimer 0063 interval: 500 0064 onTriggered: { 0065 if (rotateTimeOut.running) { 0066 rotation.angle = rotation.targetAngle; 0067 restart(); 0068 } else { 0069 rotation.angle = 0; 0070 } 0071 } 0072 } 0073 spacing: 0 0074 orientation: ListView.Horizontal 0075 0076 property real oldContentX 0077 onContentXChanged: { 0078 if (oldContentX < contentX) { 0079 rotation.targetAngle = 30; 0080 } else { 0081 rotation.targetAngle = -30; 0082 } 0083 PlasmaComponents.ScrollBar.horizontal.opacity = 1; 0084 if (!rotateTimeOut.running) { 0085 rotateTimer.restart(); 0086 } 0087 rotateTimeOut.restart(); 0088 oldContentX = contentX; 0089 } 0090 0091 PlasmaComponents.ScrollBar.horizontal: PlasmaComponents.ScrollBar { 0092 id: scrollBar 0093 opacity: 0 0094 interactive: false 0095 onOpacityChanged: disappearTimer.restart() 0096 Timer { 0097 id: disappearTimer 0098 interval: 1000 0099 onTriggered: scrollBar.opacity = 0; 0100 } 0101 Behavior on opacity { 0102 OpacityAnimator { 0103 duration: Kirigami.Units.longDuration 0104 easing.type: Easing.InOutQuad 0105 } 0106 } 0107 } 0108 0109 move: Transition { 0110 SmoothedAnimation { 0111 property: "x" 0112 duration: Kirigami.Units.longDuration 0113 } 0114 } 0115 }