Warning, /libraries/kirigami-addons/src/formcard/FormDelegateSeparator.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * Copyright 2022 Devin Lin <devin@kde.org>
0003 * SPDX-License-Identifier: LGPL-2.0-or-later
0004 */
0005
0006 import QtQml 2.15
0007 import QtQuick 2.15
0008 import QtQuick.Layouts 1.15
0009 import org.kde.kirigami 2.4 as Kirigami
0010
0011 /**
0012 * @brief A context-aware separator.
0013 *
0014 * This is a standard Kirigami.Separator that can be hidden upon hovering
0015 * the mouse over the ::above or ::below delegate, allowing for a subtle
0016 * but smooth animation feedback.
0017 *
0018 * Its two properties are particularly useful when it is not immediately known
0019 * which delegate will fill the ::above or ::below position, such as delegates
0020 * provided from a model or managed by a Loader.
0021 *
0022 * @see Kirigami.Separator
0023 *
0024 * @inherit Kirigami.Separator
0025 */
0026 Kirigami.Separator {
0027 id: root
0028
0029 /**
0030 * @brief The delegate immediately above the separator.
0031 */
0032 property Item above
0033 /**
0034 * @brief The delegate immediately below the separator.
0035 */
0036 property Item below
0037
0038 Layout.leftMargin: Kirigami.Units.largeSpacing
0039 Layout.rightMargin: Kirigami.Units.largeSpacing
0040 Layout.fillWidth: true
0041
0042 // We need to initialize above and below later otherwise nextItemInFocusChain
0043 // will return the element itself
0044 Timer {
0045 interval: 500
0046 running: !root.above || !root.below
0047 onTriggered: {
0048 if (!root.above) {
0049 root.above = root.nextItemInFocusChain(true);
0050 }
0051 if (!root.below) {
0052 root.below = root.nextItemInFocusChain(false);
0053 }
0054 }
0055 }
0056
0057 opacity: (!above || above.background === null || !(above.enabled && ((above.visualFocus || above.hovered && !Kirigami.Settings.tabletMode) || above.pressed))) &&
0058 (!below || below.background === null || !(below.enabled && ((below.visualFocus || below.hovered && !Kirigami.Settings.tabletMode) || below.pressed))) ? 0.5 : 0
0059 }