Warning, /frameworks/kirigami/tests/wheelhandler/WheelHandlerFlickableTest.qml is written in an unsupported language. File is not indexed.
0001 /* SPDX-FileCopyrightText: 2021 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 QtQuick.Controls as QQC2
0007
0008 import org.kde.kirigami as Kirigami
0009
0010 QQC2.ApplicationWindow {
0011 id: root
0012 width: flickable.implicitWidth
0013 height: flickable.implicitHeight
0014 visible: true
0015
0016 Flickable {
0017 id: flickable
0018 anchors.fill: parent
0019 implicitWidth: wheelHandler.horizontalStepSize * 10 + leftMargin + rightMargin
0020 implicitHeight: wheelHandler.verticalStepSize * 10 + topMargin + bottomMargin
0021
0022 leftMargin: QQC2.ScrollBar.vertical.visible && QQC2.ScrollBar.vertical.mirrored ? QQC2.ScrollBar.vertical.width : 0
0023 rightMargin: QQC2.ScrollBar.vertical.visible && !QQC2.ScrollBar.vertical.mirrored ? QQC2.ScrollBar.vertical.width : 0
0024 bottomMargin: QQC2.ScrollBar.horizontal.visible ? QQC2.ScrollBar.horizontal.height : 0
0025
0026 contentWidth: contentItem.childrenRect.width
0027 contentHeight: contentItem.childrenRect.height
0028
0029 Kirigami.WheelHandler {
0030 id: wheelHandler
0031 target: flickable
0032 filterMouseEvents: true
0033 keyNavigationEnabled: true
0034 }
0035
0036 QQC2.ScrollBar.vertical: QQC2.ScrollBar {
0037 parent: flickable.parent
0038 height: flickable.height - flickable.topMargin - flickable.bottomMargin
0039 x: mirrored ? 0 : flickable.width - width
0040 y: flickable.topMargin
0041 active: flickable.QQC2.ScrollBar.horizontal.active
0042 stepSize: wheelHandler.verticalStepSize / flickable.contentHeight
0043 }
0044
0045 QQC2.ScrollBar.horizontal: QQC2.ScrollBar {
0046 parent: flickable.parent
0047 width: flickable.width - flickable.leftMargin - flickable.rightMargin
0048 x: flickable.leftMargin
0049 y: flickable.height - height
0050 active: flickable.QQC2.ScrollBar.vertical.active
0051 stepSize: wheelHandler.horizontalStepSize / flickable.contentWidth
0052 }
0053
0054 Grid {
0055 columns: Math.sqrt(visibleChildren.length)
0056 Repeater {
0057 model: 500
0058 delegate: Rectangle {
0059 implicitWidth: wheelHandler.horizontalStepSize
0060 implicitHeight: wheelHandler.verticalStepSize
0061 gradient: Gradient {
0062 orientation: index % 2 ? Gradient.Vertical : Gradient.Horizontal
0063 GradientStop { position: 0; color: Qt.rgba(Math.random(),Math.random(),Math.random(),1) }
0064 GradientStop { position: 1; color: Qt.rgba(Math.random(),Math.random(),Math.random(),1) }
0065 }
0066 }
0067 }
0068 QQC2.Button {
0069 id: enableSliderButton
0070 width: wheelHandler.horizontalStepSize
0071 height: wheelHandler.verticalStepSize
0072 contentItem: QQC2.Label {
0073 horizontalAlignment: Text.AlignHCenter
0074 verticalAlignment: Text.AlignVCenter
0075 text: "Enable Slider"
0076 wrapMode: Text.Wrap
0077 }
0078 checked: true
0079 }
0080 QQC2.Slider {
0081 id: slider
0082 enabled: enableSliderButton.checked
0083 width: wheelHandler.horizontalStepSize
0084 height: wheelHandler.verticalStepSize
0085 }
0086 Repeater {
0087 model: 500
0088 delegate: Rectangle {
0089 implicitWidth: wheelHandler.horizontalStepSize
0090 implicitHeight: wheelHandler.verticalStepSize
0091 gradient: Gradient {
0092 orientation: index % 2 ? Gradient.Vertical : Gradient.Horizontal
0093 GradientStop { position: 0; color: Qt.rgba(Math.random(),Math.random(),Math.random(),1) }
0094 GradientStop { position: 1; color: Qt.rgba(Math.random(),Math.random(),Math.random(),1) }
0095 }
0096 }
0097 }
0098 }
0099 }
0100 }