Kirigami2

AbstractPageHeader.qml
1/*
2 * SPDX-FileCopyrightText: 2018 Marco Martin <mart@kde.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
7import QtQuick
8import QtQuick.Controls as QQC
9import org.kde.kirigami as Kirigami
10
11Kirigami.AbstractApplicationHeader {
12 id: root
13 // anchors.fill: parent
14 property Item container
15 property bool current
16
17 minimumHeight: pageRow ? pageRow.globalToolBar.minimumHeight : Kirigami.Units.iconSizes.medium + Kirigami.Units.smallSpacing * 2
18 maximumHeight: pageRow ? pageRow.globalToolBar.maximumHeight : minimumHeight
19 preferredHeight: pageRow ? pageRow.globalToolBar.preferredHeight : minimumHeight
20
21 separatorVisible: pageRow ? pageRow.globalToolBar.separatorVisible : true
22
23 Kirigami.Theme.colorSet: pageRow ? pageRow.globalToolBar.colorSet : Kirigami.Theme.Header
24
25 readonly property Item __stackPage: pageRow?.items.indexOf(page) > -1 ? pageRow.columnView.parent : page
26 Binding {
27 target: root
28 property: "leftPadding"
29
30 when: __stackPage.QQC.StackView.status !== QQC.StackView.Deactivating
31
32 restoreMode: Binding.RestoreNone
33 value: {
34 if (!pageRow) {
35 return Kirigami.Units.smallSpacing
36 }
37
38 if (!pageRow.wideMode) {
39 return Math.max(pageRow.globalToolBar.leftReservedSpace, pageRow.globalToolBar.titleLeftPadding)
40 }
41
42 let displacement = 0
43
44 if (Qt.application.layoutDirection === Qt.RightToLeft) {
45 displacement = (page.Kirigami.ScenePosition.x + page.width)
46 - (pageRow.Kirigami.ScenePosition.x + pageRow.width - pageRow.globalToolBar.leftReservedSpace)
47 } else {
48 displacement = pageRow.Kirigami.ScenePosition.x
49 - page.Kirigami.ScenePosition.x
50 + pageRow.globalToolBar.leftReservedSpace
51 }
52
53 return Math.max(pageRow.globalToolBar.titleLeftPadding,
54 Math.min(displacement,
55 pageRow.globalToolBar.leftReservedSpace))
56 }
57 }
58
59 rightPadding: {
60 if (!pageRow) {
61 return 0
62 }
63
64 if (!pageRow.wideMode) {
65 return pageRow.globalToolBar.rightReservedSpace
66 }
67
68 let displacement = 0
69 if (Qt.application.layoutDirection === Qt.RightToLeft) {
70 displacement = pageRow.Kirigami.ScenePosition.x
71 - page.Kirigami.ScenePosition.x
72 + pageRow.globalToolBar.rightReservedSpace
73 } else {
74 displacement = -pageRow.width
75 - pageRow.Kirigami.ScenePosition.x
76 + page.width
77 + page.Kirigami.ScenePosition.x
78 + pageRow.globalToolBar.rightReservedSpace
79 }
80
81 return Math.max(0, displacement)
82 }
83}
This file is part of the KDE documentation.
Documentation copyright © 1996-2025 The KDE developers.
Generated on Fri May 2 2025 12:02:15 by doxygen 1.13.2 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.