Warning, /frameworks/qqc2-desktop-style/org.kde.desktop/PageIndicator.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 SPDX-FileCopyrightText: 2017 The Qt Company Ltd.
0003 SPDX-FileCopyrightText: 2020 Noah Davis <noahadvs@gmail.com>
0004 SPDX-FileCopyrightText: 2023 ivan tkachenko <me@ratijas.tk>
0005
0006 SPDX-License-Identifier: LGPL-3.0-only OR GPL-2.0-or-later
0007 */
0008
0009 import QtQuick
0010 import QtQuick.Templates as T
0011 import org.kde.kirigami as Kirigami
0012
0013 T.PageIndicator {
0014 id: control
0015
0016 implicitWidth: Math.max(implicitBackgroundWidth + leftInset + rightInset,
0017 implicitContentWidth + leftPadding + rightPadding)
0018 implicitHeight: Math.max(implicitBackgroundHeight + topInset + bottomInset,
0019 implicitContentHeight + topPadding + bottomPadding)
0020
0021 padding: Kirigami.Units.largeSpacing
0022 spacing: Kirigami.Units.largeSpacing
0023
0024 // QTBUG-115133: Kirigami/ShadowedRectangle renders smoother circles at HiDPI than plain QtQuick/Rectangle.
0025 delegate: Kirigami.ShadowedRectangle {
0026 required property int index
0027 // `pressed` is a context property, it can't be required in delegate.
0028
0029 implicitWidth: Kirigami.Units.largeSpacing
0030 implicitHeight: Kirigami.Units.largeSpacing
0031
0032 radius: width / 2
0033 color: Kirigami.Theme.textColor
0034
0035 opacity: index === currentIndex ? 1 : pressed ? 0.67 : 0.33
0036
0037 Behavior on opacity {
0038 OpacityAnimator {
0039 duration: Kirigami.Units.shortDuration
0040 }
0041 }
0042 }
0043
0044 // Can't be center-aligned, because (1) an approach of setting x/width
0045 // manually gets overridden by automatic sizing of Control; and
0046 // (2) wrapping in an Item breaks delegates for which T.PageIndicator
0047 // injects `pressed` context property; (3) RowLayout with center
0048 // alignment tends to distribute its items across width, which looks odd,
0049 // and again due to custom C++ magic relying on children index of
0050 // contentItem, we can't insert fillers on the left and right.
0051 contentItem: Row {
0052 LayoutMirroring.enabled: control.mirrored
0053 spacing: control.spacing
0054
0055 Repeater {
0056 model: control.count
0057 delegate: control.delegate
0058 }
0059 }
0060 }